Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-cloud-platform/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Emacs中添加几个函数作为挂钩_Emacs_Elisp_Dot Emacs - Fatal编程技术网

在Emacs中添加几个函数作为挂钩

在Emacs中添加几个函数作为挂钩,emacs,elisp,dot-emacs,Emacs,Elisp,Dot Emacs,如何简化init.el文件中的以下代码 (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) 我还有其他几行类似的代码,包括一些lambda函数添加到org mode hook…我个人强烈

如何简化
init.el
文件中的以下代码

(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)

我还有其他几行类似的代码,包括一些lambda函数添加到
org mode hook

我个人强烈建议不要将
lambda
函数添加到hook。主要原因是,如果更改内容并重新计算
addhook
表达式,则钩子同时包含旧的和新的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)

旁注:您可以使用
全局自动恢复模式
在所有缓冲区上启用自动恢复,这样您就不必在所有主要模式下都启用它。

我使用一个简单的
dolist

(dolist (fn '(turn-on-auto-revert-mode
              turn-on-org-cdlatex
              smartparens-mode
              abbrev-mode))
  (add-hook 'org-mode-hook fn))
这样,您仍然可以在以后使用
remove hook
或从自定义界面删除各个钩子