2014-09-11 66 views
3

我怎麼能簡化像我的​​文件中的以下代碼?在Emacs中添加幾個函數作爲鉤子

(add-hook 'org-mode-hook 'turn-on-auto-revert-mode) 
(add-hook 'org-mode-hook 'turn-on-org-cdlatex) 
(add-hook 'org-mode-hook 'smartparens-mode) 
(add-hook 'org-mode-hook 'abbrev-mode) 

我還有其他的幾行這樣的,包括加入一些org-mode-hook lambda函數...

回答

10

就個人而言,我會反對增加lambda功能掛鉤強烈建議。主要原因是如果您更改內容並重新評估add-hook表達式,掛鉤包含這兩個舊的和新的lambda表達式。第二個原因是,當你檢查一個鉤子時它看起來很糟糕 - 最好看到一個函數名稱與一個大的lambda表達式相比。

相反,我會建議使用:

(defun my-org-mode-hook() 
    (turn-on-auto-revert-mode) 
    (turn-on-org-cdlatex) 
    (smartparens-mode 1) 
    (abbrev-mode 1))) 
(add-hook 'org-mode-hook 'my-org-mode-hook) 

一個側面說明:您可以使用global-auto-revert-mode,使所有緩衝區的自動恢復,這樣你就不必啓用所有的主要模式。

3

我用一個簡單dolist

(dolist (fn '(turn-on-auto-revert-mode 
       turn-on-org-cdlatex 
       smartparens-mode 
       abbrev-mode)) 
    (add-hook 'org-mode-hook fn)) 

這使你可以仍然刪除個別掛鉤之後,隨着remove-hook或自定義界面。