eintr: Code for current-kill

 
 The code for ‘current-kill’
 ---------------------------
 
 The ‘current-kill’ function is used by ‘yank’ and by ‘yank-pop’.  Here
 is the code for ‘current-kill’:
 
      (defun current-kill (n &optional do-not-move)
        "Rotate the yanking point by N places, and then return that kill.
      If N is zero and `interprogram-paste-function' is set to a
      function that returns a string or a list of strings, and if that
      function doesn't return nil, then that string (or list) is added
      to the front of the kill ring and the string (or first string in
      the list) is returned as the latest kill.
      If N is not zero, and if `yank-pop-change-selection' is
      non-nil, use `interprogram-cut-function' to transfer the
      kill at the new yank point into the window system selection.
      If optional arg DO-NOT-MOVE is non-nil, then don't actually
      move the yanking point; just return the Nth kill forward."
 
        (let ((interprogram-paste (and (= n 0)
                                       interprogram-paste-function
                                       (funcall interprogram-paste-function))))
          (if interprogram-paste
              (progn
                ;; Disable the interprogram cut function when we add the new
                ;; text to the kill ring, so Emacs doesn't try to own the
                ;; selection, with identical text.
                (let ((interprogram-cut-function nil))
                  (if (listp interprogram-paste)
                    (mapc 'kill-new (nreverse interprogram-paste))
                    (kill-new interprogram-paste)))
                (car kill-ring))
            (or kill-ring (error "Kill ring is empty"))
            (let ((ARGth-kill-element
                   (nthcdr (mod (- n (length kill-ring-yank-pointer))
                                (length kill-ring))
                           kill-ring)))
              (unless do-not-move
                (setq kill-ring-yank-pointer ARGth-kill-element)
                (when (and yank-pop-change-selection
                           (> n 0)
                           interprogram-cut-function)
                  (funcall interprogram-cut-function (car ARGth-kill-element))))
              (car ARGth-kill-element)))))
 
    Remember also that the ‘kill-new’ function sets
 ‘kill-ring-yank-pointer’ to the latest element of the kill ring, which
 means that all the functions that call it set the value indirectly:
 ‘kill-append’, ‘copy-region-as-kill’, ‘kill-ring-save’, ‘kill-line’, and
 ‘kill-region’.
 
    Here is the line in ‘kill-new’, which is explained in SeeThe
 ‘kill-new’ function kill-new function.
 
      (setq kill-ring-yank-pointer kill-ring)