2011-12-27 39 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)