【问题标题】:Does Emacs 23 support prog-mode-hook?Emacs 23 是否支持 prog-mode-hook?
【发布时间】:2012-04-28 00:03:52
【问题描述】:

我想为编程模式添加一些常用设置。例如:打开口号,突出显示括号等。 所以我添加如下代码:

(add-hook 'prog-mode-hook 'turn-on-watchwords)

这在 Emacs 24 中有效,但 Emacs 23 不起作用,我不知道是否缺少其他东西或 Emacs 23 本身使这不起作用。

如果 Emacs 23 不支持 prog-mode-hook,如何添加编程模式的常用设置?

【问题讨论】:

    标签: emacs


    【解决方案1】:

    prog-mode(以及与之相关的所有钩子)已添加到 Emacs 24 中。

    您可以(稍微)通过将您的钩子添加到您通常使用的所有编程钩子来模拟它(诚然,这有点 hacky):

    (mapc (lambda (mode-hook) (add-hook mode-hook 'turn-on-watchwords))
            '(c-mode-common-hook tcl-mode-hook emacs-lisp-mode-hook
              ruby-mode-hook java-mode-hook haskell-mode-hook
              ess-mode-hook python-mode-hook sh-mode-hook))
    

    【讨论】:

    • 谢谢,这对我有用。但它似乎是一个很长的钩子列表,以确保涵盖大多数编程模式。
    • @hbin,你只需要列出你通常使用的那些,上面那个列表就是我.emacs中的那个,所以如果你不使用Ruby或Haskell(例如),你可以将其从列表中删除。 (另外,如果这解决了您的问题,请单击答案旁边的复选标记的轮廓,将其标记为“已接受”:))
    【解决方案2】:

    到目前为止,没有 Emacs,23 或 24 始终使用 prog-mode。 Emacs 24 在 lisp/progmodes/*.el 中有 51/85 个包含“prog-mode”的文件,让您了解覆盖范围。也许在未来的版本中,您将能够随意使用prog-mode-hook

    没有办法为所有“编程”模式添加挂钩。 @dbaupp 保留您使用的钩子列表的解决方案是可用的最佳解决方案。

    【讨论】: