33.8 Kill Ring

Функции для убийства удаляют текст, подобно функциям удаления, но сохраняют его, чтобы пользователь мог повторно вставить его с помощью yanking. Большинство этих функций содержат в своем имени «kill-». В отличие от них, функции, чьи имена начинаются с «delete-», обычно не сохраняют текст для yanking (хотя их все еще можно отменить); это функции удаления.

Большинство команд «убийства» предназначены в первую очередь для интерактивного использования и не описываются здесь. Мы описываем функции, предоставляемые для использования при написании таких команд. Вы можете использовать эти функции для написания команд по удалению текста. Когда вам необходимо удалить текст для внутренних целей в функции Lisp, вы должны обычно использовать функции удаления, чтобы не нарушать содержимое kill ring. См. Удаление текста.

Удаленный текст сохраняется для последующего yanking в kill ring. Это список, который хранит несколько недавних удалений, а не только последний удаленный текст. Мы называем это «кольцом», потому что yanking обрабатывает его как имеющее элементы в циклическом порядке. Этот список хранится в переменной kill-ring и может управляться с помощью обычных функций для списков; также есть специализированные функции, описанные в этом разделе, которые обрабатывают его как кольцо.

Некоторые люди считают, что это использование слова «убийство» неуместно, поскольку оно относится к операциям, которые специально не уничтожают удаленные сущности. Это резко контрастирует с обычной жизнью, в которой смерть является необратимой, и удаленные сущности не возвращаются к жизни. Поэтому были предложены другие метафоры. Например, термин «cut ring» (кольцо вырезок) имеет смысл для людей, которые в докомпьютерные времена использовали ножницы и буфер обмена для вырезания и перестановки рукописей. Однако сейчас было бы трудно изменить терминологию.