Пожалуйста, прочтите documentation of eval-after-load
:
FORM БИБЛИОТЕКА
Eval-после нагрузки
Эта функция упорядочивает оценить форму в конце загрузки файла библиотеки, каждый раз, когда библиотека загружена. Если LIBRARY уже загружен, он сразу же оценивает форму. Не забудьте указать форму!
[...] БИБЛИОТЕКА также может быть функцией (то есть символом), в этом случае форма оценивается в конце любого файла, где вызывается (provide LIBRARY)
.
Вам необходимо передать имя файла или библиотеки, которая определяет основной режим, в качестве аргумента.
Хотя некоторые режимы определены в файлах с одинаковым именем (например, clojure-mode
в clojure-mode.el
), многие файлы имеют другое имя, особенно если на самом деле определяют несколько основных режимов.
emacs-lisp-mode
определяется в lisp-mode.el
, наряду с некоторыми другими режимами для редактирования Emacs Lisp (например, lisp-mode
в качестве общего режима Lisp языка, или lisp-interaction-mode
для *scratch*
буферов).
Следовательно, использовать (eval-after-load 'lisp-mode …
)
Кроме того, вы должны дать один Sexp в качестве второго аргумента, так что вы, вероятно, хотите использовать (eval-after-load 'lisp-mode '(do-something))
, чтобы вызвать функцию do-something
.
Если вы используете сборку снимков Emacs, используйте with-eval-after-load
, то есть (with-eval-after-load 'lisp-mode (do-something))
. Это позволяет использовать более одной формы и не требует цитирования.
Когда Emacs запускается, он автоматически открывает буфер * scratch *, который находится в режиме lisp-взаимодействия.Этот режим определен в lisp-mode.el. Это означает, что lisp-mode * всегда * загружается при запуске emacs, так что 'do-something' будет запускаться независимо от того, переносите ли вы его в' eval-after-load'. – Tyler
Спасибо, я понял. –