Spec-Zone.ru › Elisp

Крючки для загрузки

Вы можете запросить выполнение кода каждый раз при загрузке Emacs-библиотеки, используя переменную after-load-functions:

Переменная: after-load-functions

Этот необычный крючок выполняется после загрузки файла. Каждая функция в крючке вызывается с одним аргументом — абсолютным именем файла, который только что был загружен.

Если вы хотите, чтобы код выполнялся при загрузке конкретной библиотеки, используйте макрос with-eval-after-load:

Макрос: with-eval-after-load тело библиотеки…

Этот макрос организует выполнение тела в конце загрузки файла библиотека каждый раз, когда библиотека загружается. Если библиотека уже загружена, она выполняет тело сразу же.

В имени файла библиотека не нужно указывать директорию или расширение. Обычно вы просто указываете имя файла, например так:

(with-eval-after-load "js" (define-key js-mode-map "\C-c\C-c" 'js-eval))

Чтобы ограничить файлы, которые могут инициировать выполнение, добавьте в библиотека директорию или расширение или оба. Совпадение произойдёт только с файлом, абсолютное имя которого (то есть имя со всеми прослеженными символическими ссылками) соответствует всем указанным компонентам имени. В следующем примере my_inst.elc или my_inst.elc.gz в какой-то директории ..../foo/bar инициируют выполнение, но не my_inst.el:

(with-eval-after-load "foo/bar/my_inst.elc" …)

библиотека также может быть свойством (т.е., символом), в этом случае тело выполняется в конце любого файла, где (provide library) вызывается.

Ошибка в теле не отменяет загрузку, но предотвращает выполнение остальной части тела.

Обычно хорошо спроектированные Lisp-программы не должны использовать with-eval-after-load. Если вам нужно просмотреть и установить переменные, определённые в другой библиотеке (те, которые предназначены для внешнего использования), вы можете сделать это немедленно — нет необходимости ждать, пока библиотека загрузится. Если вам нужно вызвать функции, определённые этой библиотекой, вы должны загрузить библиотеку, предпочтительно с помощью require (см. Именованные свойства).

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-for-Loading.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API