Переменная kill-ring содержит содержимое кольца обрезки в виде списка строк. Самая недавняя обрезка всегда находится в начале списка.
Переменная kill-ring-yank-pointer указывает на ссылку в списке кольца обрезки, CAR которой является текст, который нужно вставить следующим. Мы говорим, что она определяет начало кольца. Перемещение kill-ring-yank-pointer на другую ссылку называется вращением кольца обрезки. Мы называем кольцо обрезки «кольцом», потому что функции, перемещающие указатель вставки, циклически переходят от конца списка к началу или наоборот. Вращение кольца обрезки является виртуальным; оно не изменяет значение kill-ring.
И kill-ring, и kill-ring-yank-pointer являются переменными Lisp, значения которых обычно являются списками. Слово «указатель» в названии kill-ring-yank-pointer указывает на то, что назначение этой переменной — идентифицировать один элемент списка для использования следующей командой вставки.
Значение kill-ring-yank-pointer всегда равно eq одной из ссылок в списке кольца обрезки. Элемент, который она идентифицирует, является CAR этой ссылки. Команды обрезки, которые изменяют кольцо обрезки, также устанавливают эту переменную в значение kill-ring. Эффект заключается в вращении кольца таким образом, чтобы только что обрезанный текст оказался в начале.
Вот диаграмма, показывающая, как переменная kill-ring-yank-pointer указывает на вторую запись в кольце обрезки ("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"
Такое состояние может возникнуть после C-y (yank), немедленно за которым следует M-y (yank-pop).
Эта переменная содержит список обрезанных последовательностей текста, самая недавняя в начале.
Значение этой переменной указывает, какой элемент кольца обрезки находится в начале кольца для вставки. Точнее, значение является хвостом значения kill-ring, и его CAR — это строка обрезки, которую следует вставить с помощью C-y.
Значение этой переменной — максимальная длина, до которой может вырасти кольцо обрезки, прежде чем элементы будут удалены в конце. Значение по умолчанию для kill-ring-max равно 120.