32.8.6 Internals of the Kill Ring
The variable kill-ring
holds the kill ring contents, in the form of a list of strings. The most recent kill is always at the front of the list.
The kill-ring-yank-pointer
variable points to a link in the kill ring list, whose CAR is the text to yank next. We say it identifies the front of the ring. Moving kill-ring-yank-pointer
to a different link is called rotating the kill ring. We call the kill ring a “ring" because the functions that move the yank pointer wrap around from the end of the list to the beginning, or vice-versa. Rotation of the kill ring is virtual; it does not change the value of kill-ring
.
Both kill-ring
and kill-ring-yank-pointer
are Lisp variables whose values are normally lists. The word “pointer" in the name of the kill-ring-yank-pointer
indicates that the variable’s purpose is to identify one element of the list for use by the next yank command.
The value of kill-ring-yank-pointer
is always eq
to one of the links in the kill ring list. The element it identifies is the CAR of that link. Kill commands, which change the kill ring, also set this variable to the value of kill-ring
. The effect is to rotate the ring so that the newly killed text is at the front.
Here is a diagram that shows the variable kill-ring-yank-pointer
pointing to the second entry in the kill ring ("some text" "a different piece of text" "yet older text")
.
kill-ring ---- kill-ring-yank-pointer
| |
| v
| --- --- --- --- --- ---
--> | | |------> | | |--> | | |--> nil
--- --- --- --- --- ---
| | |
| | |
| | -->"yet older text"
| |
| --> "a different piece of text"
|
--> "some text"
This state of affairs might occur after C-y
(yank
) immediately followed by M-y
(yank-pop
).
variable
kill-ring​
This variable holds the list of killed text sequences, most recently killed first.
variable
kill-ring-yank-pointer​
This variable’s value indicates which element of the kill ring is at the front of the ring for yanking. More precisely, the value is a tail of the value of kill-ring
, and its CAR is the kill string that C-y
should yank.
user option
kill-ring-max​
The value of this variable is the maximum length to which the kill ring can grow, before elements are thrown away at the end. The default value for kill-ring-max
is 60.