保护 emacs23 和 emacs24 的初始化修改?

保护 emacs23 和 emacs24 的初始化修改?

我抄了一些 emacs 命令并~/.emacs在需要时复制/粘贴它们。

我想添加一个代码折叠宏,但该宏对于 emacs23 和 emacs24 似乎有所不同。接下来的两个要求来自 Stack Overflow 的如何在 emacs 中永久启用 hs-minor-mode

对于 emacs23,我似乎需要:

(add-hook 'c-mode-common-hook #'hs-minor-mode)

对于 emacs24,我似乎需要:

(add-hook 'prog-mode-hook #'hs-minor-mode)

我现在正在寻找一种方法来保护命令。(emacs-nox如果重要的话,我也会使用变体)。

我如何将这两个命令添加到我的命令中~/emacs,以便我可以复制/粘贴而不必担心版本?

答案1

由于我只是一名业余爱好者,因此我不太清楚编程环境中的guarding或是什么意思,但以下代码片段是一种以编程方式区分 的方法:guardemacs-major-version

(cond
  ((= emacs-major-version 23)
    (add-hook 'c-mode-common-hook #'hs-minor-mode))
  ((= emacs-major-version 24)
    (add-hook 'prog-mode-hook #'hs-minor-mode))
  (t
    (message "The catch-all condition has not been set for hs-minor-mode.")))

答案2

测试函数或变量是否存在通常比测试更好(更精确)emacs-major-version

(add-hook (if (boundp 'prog-mode-hook) 'prog-mode-hook 'c-mode-common-hook)
          #'hs-minor-mode)

相关内容