Определите пользовательский хук Emacs универсальным способом - PullRequest
4 голосов
/ 27 декабря 2011

Я хочу запустить некоторый код после загрузки моего пользовательского файла, но я хочу сделать это в общем виде.Самый простой способ состоит в том, чтобы просто иметь список функций, к которым я добавляю, и затем впоследствии выполнять каждую функцию в списке, но я хотел посмотреть, смогу ли я сделать это как хук.Что-то вроде:

(run-hooks 'bw-after-custom-load-hook)

и делайте это каждый раз, когда я хочу добавить к нему:

(add-hook 'bw-after-custom-load-hook (lambda () 'something))

Это в основном как работают хуки?Вся документация, которую я могу найти, только добавляет вещи к существующим хукам, предоставляемым режимами.

Ответы [ 2 ]

4 голосов
/ 27 декабря 2011

Я разобрался (должен был попробовать перед публикацией):

;; add my custom hook
(defvar bw-after-custom-load-hook nil
  "Hook called after the custom file is loaded")

затем в другом файле:

;; but load it after custom has loaded, so it's marked safe
(add-hook 'bw-after-custom-load-hook
      (lambda ()
        (load-theme 'solarized-dark)))

тогда мы загружаем custom и вызываем хук:

;; Load custom file last
(setq custom-file (concat dotfiles-dir "custom.el"))
(load custom-file 'noerror)

;; load my custom hooks
(run-hooks 'bw-after-custom-load-hook)
0 голосов
/ 28 декабря 2011

вы ищете after-init-hook.?

(defun my-functions-for-after-init ()
  (....))

, а затем

(add-hook 'after-init-hook 'my-functions-for-after-init)
...