Вы можете запросить выполнение кода каждый раз, когда Emacs загружает библиотеку,
используя переменную after-load-functions:
Этот аномальный хук выполняется после загрузки файла. Каждая функция в хуке вызывается с одним аргументом — абсолютным именем файла, который только что был загружен.
Если вы хотите, чтобы код выполнялся при загрузке определенной
библиотеки, используйте макрос with-eval-after-load:
Этот макрос организует выполнение body в конце загрузки файла library каждый раз, когда library загружается. Если library уже загружен, он выполняет body немедленно.
Вам не нужно указывать каталог или расширение в имени файла library. Обычно вы просто указываете базовое имя файла, как здесь:
(with-eval-after-load "js" (keymap-set js-mode-map "C-c C-c" 'js-eval))
Чтобы ограничить, какие файлы могут вызвать выполнение, включите
каталог или расширение или оба в library. Совпадет только файл,
абсолютное истинное имя которого (то есть имя со всеми символическими ссылками,
разрешенными) соответствует всем заданным компонентам имени. В следующем
примере my_inst.elc или my_inst.elc.gz в каком-либо
каталоге ..../foo/bar вызовут выполнение, но не
my_inst.el:
(with-eval-after-load "foo/bar/my_inst.elc" ...)
library также может быть функцией (то есть символом), в этом случае
body выполняется в конце любого файла, где
(provide library) вызывается.
Ошибка в body не отменяет загрузку, но предотвращает выполнение остальной части body.
Обычно хорошо спроектированные программы на Lisp не должны использовать
with-eval-after-load. Если вам необходимо просмотреть и установить
переменные, определенные в другой библиотеке (те, которые предназначены для внешнего
использования), вы можете сделать это немедленно — нет необходимости ждать, пока
библиотека будет загружена. Если вам необходимо вызывать функции, определенные
этой библиотекой, вы должны загрузить библиотеку, предпочтительно с помощью
require (см. Функции).