Обработки
Обработка — это переменная, в которой можно хранить функцию или функции (см. Что такое функция), которые будут вызваны в определённый момент существующей программой. Emacs предоставляет обработки для целей настройки. Чаще всего обработки настраиваются в файле инициализации (см. Файл инициализации), но программы Lisp также могут их устанавливать. См. Стандартные обработки для списка некоторых стандартных переменных обработки.
Большинство обработок в Emacs являются обычными обработками. Эти переменные содержат списки функций, которые нужно вызвать без аргументов. По соглашению, когда имя обработки заканчивается на «-hook», это указывает, что она является обычной. Мы стараемся, насколько это возможно, сделать все обработки обычными, чтобы вы могли использовать их единообразно.
Команда каждого основного режима должна запускать обычную обработку, называемую обработкой режима, как один из последних шагов инициализации. Это упрощает пользователю настройку поведения режима путём переопределения уже заданных локальных переменных буфера режимом. Большинство функций вспомогательных режимов также запускают обработку режима в конце. Но обработки используются и в других контекстах. Например, обработка suspend-hook запускается непосредственно перед тем, как Emacs приостанавливает себя (см. Приостановка Emacs).
Если имя переменной обработки не заканчивается на «-hook», это указывает, что она, вероятно, является необычной обработкой. Они отличаются от обычных обработок двумя способами: их можно вызывать с одним или несколькими аргументами, и их значения возврата могут быть использованы каким-либо образом. Документация обработки описывает, как вызываются функции и как используются их значения возврата. Все функции, добавленные в необычную обработку, должны следовать соглашению о вызове обработки. По соглашению, имена необычных обработок оканчиваются на «-functions».
Если имя переменной заканчивается на «-predicate» или «-function» (единственное число), то её значение должно быть функцией, а не списком функций. Как и в случае с необычными обработками, ожидаемые аргументы и значение возврата варьируются в зависимости от таких обработок с одной функцией. Подробности описаны в строке документации каждой переменной.
Поскольку обработки (как многофункциональные, так и однофункциональные) являются переменными, их значения можно изменить с помощью setq или временно с помощью let. Однако часто бывает полезно добавлять или удалять определённую функцию из обработки, сохранив при этом другие функции, которые она может содержать. Для многофункциональных обработок рекомендуемый способ сделать это — с помощью add-hook и remove-hook (см. Установка обработок). Большинство обычных переменных обработки изначально пустые; add-hook знает, как с этим справиться. Вы можете добавить обработки глобально или локально для буфера с помощью add-hook. Для обработок, содержащих только одну функцию, add-hook не подходит, но вы можете использовать add-function (см. Рекомендованные функции), чтобы объединить новые функции с обработкой. Обратите внимание, что некоторые обработки с одной функцией могут быть nil, с которыми add-function не может справиться, поэтому вы должны проверить это перед вызовом add-function.
| • Запуск обработок | Как запустить обработку. | |
| • Установка обработок | Как добавить или удалить функции из обработки. |
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/Hooks.html