emacs-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Question about intended behavior of 'insert-for-yank-1'.


From: Karl Fogel
Subject: Question about intended behavior of 'insert-for-yank-1'.
Date: Mon, 12 Sep 2016 00:17:14 -0500

The doc string for 'insert-for-yank-1' says:

  [...]
  If STRING has a non-nil ‘yank-handler’ property on its first
  character, the normal insert behavior is altered.  The value of
  the ‘yank-handler’ property must be a list of one to four
  elements, of the form (FUNCTION PARAM NOEXCLUDE UNDO).
  FUNCTION, if non-nil, should be a function of one argument, an
   object to insert; it is called instead of ‘insert’.
  PARAM, if present and non-nil, replaces STRING as the argument to
   FUNCTION or ‘insert’; e.g. if FUNCTION is ‘yank-rectangle’, PARAM
   may be a list of strings to insert as a rectangle.
  [...]

This implies that when the `yank-handler' property is present, then when PARAM 
is nil, the string passed to FUNCTION should be STRING.  That is, the entire 
length of STRING, even if the `yank-handler' property is set only on STRING's 
first character.

However, the way it actually behaves is that if you set the property on (say) 
exactly the first character of STRING, then, assuming you rely on the implicit 
parameter passing, what gets passed to FUNCTION is a string consisting of just 
the first character of STRING :-).  Later, when you yank with C-y, that's all 
you'll get.

Now, this might be a reasonable behavior -- after all, if one wanted the 
entirety of STRING passed, then maybe one should set the property on all of 
STRING -- but it's not what's actually documented.

Should I update the documentation to clarify?  Or should the behavior change 
instead?

(By the way, I have not tested what happens if you set that property on 
multiple disjoint extents of STRING.  Does FUNCTION get passed a newly-created 
concatenation of all the stretches of string that had the property?  I have no 
idea.  If the recommendation here is just to fix the documentation, though, 
then I'll do that testing.)

Best regards,
-Karl



reply via email to

[Prev in Thread] Current Thread [Next in Thread]