GNU Info

Info Node: (emacs-lisp-intro.info)yank

(emacs-lisp-intro.info)yank


Next: yank-pop Prev: rotate-yank-pointer Up: Kill Ring
Enter node , (file) or (file)node

`yank'
======

   After learning about `rotate-yank-pointer', the code for the `yank'
function is almost easy.  It has only one tricky part, which is the
computation of the argument to be passed to `rotate-yank-pointer'.

   The code looks like this:

     (defun yank (&optional arg)
       "Reinsert the last stretch of killed text.
     More precisely, reinsert the stretch of killed text most
     recently killed OR yanked.
     With just C-U as argument, same but put point in front
     (and mark at end).  With argument n, reinsert the nth
     most recently killed stretch of killed text.
     See also the command \\[yank-pop]."
     
       (interactive "*P")
       (rotate-yank-pointer (if (listp arg) 0
                              (if (eq arg '-) -1
                                (1- arg))))
       (push-mark (point))
       (insert (car kill-ring-yank-pointer))
       (if (consp arg)
           (exchange-point-and-mark)))

   Glancing over this code, we can understand the last few lines readily
enough.  The mark is pushed, that is, remembered; then the first element
(the CAR) of what the `kill-ring-yank-pointer' points to is inserted;
and then, if the argument passed the function is a `cons', point and
mark are exchanged so the point is put in the front of the inserted
text rather than at the end.  This option is explained in the
documentation.  The function itself is interactive with `"*P"'.  This
means it will not work on a read-only buffer, and that the unprocessed
prefix argument is passed to the function.

rotate-yk-ptr arg
Pass the argument to `rotate-yank-pointer'.
rotate-yk-ptr negative arg
Pass a negative argument.

automatically generated by info2www version 1.2.2.9