These functions and variables provide access to the kill ring at a lower level, but are still convenient for use in Lisp programs, because they take care of interaction with window system selections (see Window System Selections).
The function
current-killrotates the yanking pointer, which designates the “front” of the kill ring, by n places (from newer kills to older ones), and returns the text at that place in the ring.If the optional second argument do-not-move is non-
nil, thencurrent-killdoesn't alter the yanking pointer; it just returns the nth kill, counting from the current yanking pointer.If n is zero, indicating a request for the latest kill,
current-killcalls the value ofinterprogram-paste-function(documented below) before consulting the kill ring. If that value is a function and calling it returns a string or a list of several string,current-killpushes the strings onto the kill ring and returns the first string. It also sets the yanking pointer to point to the kill-ring entry of the first string returned byinterprogram-paste-function, regardless of the value of do-not-move. Otherwise,current-killdoes not treat a zero value for n specially: it returns the entry pointed at by the yanking pointer and does not move the yanking pointer.
This function pushes the text string onto the kill ring and makes the yanking pointer point to it. It discards the oldest entry if appropriate. It also invokes the value of
interprogram-cut-function(see below).If replace is non-
nil, thenkill-newreplaces the first element of the kill ring with string, rather than pushing string onto the kill ring.
This function appends the text string to the first entry in the kill ring and makes the yanking pointer point to the combined entry. Normally string goes at the end of the entry, but if before-p is non-
nil, it goes at the beginning. This function also invokes the value ofinterprogram-cut-function(see below).
This variable provides a way of transferring killed text from other programs, when you are using a window system. Its value should be
nilor a function of no arguments.If the value is a function,
current-killcalls it to get the “most recent kill.” If the function returns a non-nilvalue, then that value is used as the “most recent kill.” If it returnsnil, then the front of the kill ring is used.To facilitate support for window systems that support multiple selections, this function may also return a list of strings. In that case, the first string is used as the “most recent kill”, and all the other strings are pushed onto the kill ring, for easy access by
yank-pop.The normal use of this function is to get the window system's primary selection as the most recent kill, even if the selection belongs to another application. See Window System Selections. However, if the selection was provided by the current Emacs session, this function should return
nil. (If it is hard to tell whether Emacs or some other program provided the selection, it should be good enough to usestring=to compare it with the last text Emacs provided.)
This variable provides a way of communicating killed text to other programs, when you are using a window system. Its value should be
nilor a function of one required and one optional argument.If the value is a function,
kill-newandkill-appendcall it with the new first element of the kill ring as the first argument. The second, optional, argument has the same meaning as the push argument tox-set-cut-buffer(see Definition of x-set-cut-buffer) and only affects the second and later cut buffers.The normal use of this function is to set the window system's primary selection (and first cut buffer) from the newly killed text. See Window System Selections.