2011-12-27 44 views
3

我想在加载自定义文件后运行一些代码,但我想以通用方式执行此操作。简单的方法是只需要添加一个函数列表,然后在列表中执行每个函数,但是我想看看是否可以将它作为一个钩子。以通用方式定义自定义Emacs钩子

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

这做我想要添加到它的每个时间:喜欢的东西

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

这是基本的钩子是如何工作的?我能找到的所有文档似乎只是将模式添加到现有的挂钩中。然后

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

在另一个文件:

回答

3

我的工作了(应该在发布之前都试过)

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

然后我们加载自定义,并调用挂钩:

;; 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) 
+1

你可能想接受你自己的答案,除非你还在寻找输入这个? – phils 2011-12-28 00:54:52

+0

确实。起初我并不清楚,但Emacs中的钩子仅仅是函数列表*! (尽管处理缓冲区本地钩子也有一些特殊的(聪明的)规则。) – 2017-01-20 21:55:09

0

你在寻找after-init-hook。?

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

然后,

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