【问题标题】:Add several functions as hooks in Emacs在 Emacs 中添加几个函数作为钩子
【发布时间】:2014-09-11 03:37:02
【问题描述】:

如何在我的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)

我还有几个类似的行,包括添加到org-mode-hook...的一些 lambda 函数...

【问题讨论】:

    标签: emacs elisp dot-emacs


    【解决方案1】:

    就个人而言,我强烈建议不要将lambda 函数添加到钩子中。主要原因是,如果您更改内容并重新评估 add-hook 表达式,则该挂钩包含 both 旧的和新的 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 在所有缓冲区上启用自动恢复,这样您就不必为所有主要模式启用它。

    【讨论】:

      【解决方案2】:

      我用一个简单的dolist

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

      这让您之后仍然可以使用remove-hook 或从自定义界面删除单个挂钩。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-09-18
        • 1970-01-01
        相关资源
        最近更新 更多