【问题标题】:Define a custom Emacs hook in a generic way以通用方式定义自定义 Emacs 钩子
【发布时间】:2011-12-28 06:54:29
【问题描述】:

我想在加载我的自定义文件后运行一些代码,但我想以一种通用的方式进行。简单的方法是只拥有一个我附加到的函数列表,然后在列表中执行每个函数,但我想看看我是否可以将它作为一个钩子来完成。比如:

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

每次我想添加时都这样做:

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

这基本上是钩子的工作原理吗?我能找到的所有文档似乎都只是向模式提供的现有钩子添加东西。

【问题讨论】:

    标签: emacs elisp


    【解决方案1】:

    我解决了(应该在发布之前尝试过):

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

    然后在另一个文件中:

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

    【讨论】:

    • 您可能想接受自己的答案,除非您仍在寻找有关此方面的意见?
    • 确实如此。一开始我并不清楚,但 Emacs 中的钩子只是函数列表! (虽然也有一些特殊的(聪明的)规则来处理本地缓冲区的钩子。)
    【解决方案2】:

    您在寻找after-init-hook.?

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

    然后,

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-05-01
      • 1970-01-01
      • 2011-05-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多