Выделение
Выделение означает вставку текста из буфера обмена, но не вставляет текст без обработки. Команда yank и связанные с ней команды используют insert-for-yank, чтобы выполнить специальную обработку текста перед его вставкой.
- Функция: insert-for-yank строка
Эта функция работает как
insert, за исключением того, что она обрабатывает текст в строке в соответствии с текстовым свойствомyank-handler, а также переменнымиyank-handled-propertiesиyank-excluded-properties(см. ниже), прежде чем вставить результат в текущий буфер.
- Функция: insert-buffer-substring-as-yank buf &optional start end
Эта функция похожа на
insert-buffer-substring, за исключением того, что она обрабатывает текст в соответствии сyank-handled-propertiesиyank-excluded-properties. (Она не обрабатывает свойствоyank-handler, которое обычно не встречается в тексте буфера.)
Если вы зададите текстовое свойство yank-handler для всей или части строки, это изменит способ, которым insert-for-yank вставляет строку. Если разные части строки имеют разные значения yank-handler (сравнение выполняется с помощью eq ), каждая подстрока обрабатывается отдельно. Значение свойства должно быть списком от одного до четырех элементов с последующим форматом (элементы после первого могут быть опущены):
(function param noexclude undo)
Вот что делают элементы:
- функция
-
Если функция не
nil, она вызывается вместоinsertдля вставки строки с одним аргументом — строкой для вставки. - параметр
-
Если параметр присутствует и не
nil, он заменяет строку (или подстроку строки, которая обрабатывается) как объект, передаваемый в функцию (илиinsert). Например, если функция равнаyank-rectangle, параметр должен быть списком строк для вставки в виде прямоугольника. - исключение
-
Если исключение присутствует и не
nil, это отключает стандартное действиеyank-handled-propertiesиyank-excluded-propertiesна вставленной строке. - отмена
Если отмена присутствует и не
nil, это функция, которая будет вызванаyank-popдля отмены вставки текущего объекта. Она вызывается с двумя аргументами: началом и концом текущей области. функция может установитьyank-undo-functionдля переопределения значения отмена.
- Пользовательская опция: yank-handled-properties
-
Эта переменная определяет специальные условия обработки текстовых свойств для выделенного текста. Она вступает в силу после вставки текста (обычным способом или через свойство
yank-handler) и до того, как начнет действоватьyank-excluded-properties.Значение должно быть списком элементов
(prop . fun). Каждый элемент списка обрабатывается в порядке. Вставленный текст сканируется на участки текста с текстовыми свойствамиeqдо свойство; для каждого такого участка функция вызывается с тремя аргументами: значением свойства и начальными и конечными позициями текста.
- Пользовательская опция: yank-excluded-properties
Значение этой переменной — список свойств, которые нужно удалить из вставленного текста. Её значение по умолчанию содержит свойства, которые могут привести к нежелательным результатам, например, заставить текст реагировать на щелчок мыши или указать сочетания клавиш. Она вступает в силу после
yank-handled-properties.
Copyright © 1990-1996, 1998-2022 Free Software Foundation, Inc.
Licensed under the GNU GPL license.
https://www.gnu.org/software/emacs/manual/html_node/elisp/Yanking.html