【发布时间】:2017-12-01 06:31:57
【问题描述】:
我想编写一个调用 2 个函数之一的函数,具体取决于当前的主要模式是否为 prog 模式。如何检测当前主模式是否为 prog-mode?p>
【问题讨论】:
我想编写一个调用 2 个函数之一的函数,具体取决于当前的主要模式是否为 prog 模式。如何检测当前主模式是否为 prog-mode?p>
【问题讨论】:
(if (derived-mode-p 'prog-mode) ...)
【讨论】:
prog-mode 是 defalias'd,例如,这不起作用groovy-mode 有;; For compatibility with Emacs < 24 (defalias 'groovy-parent-mode (if (fboundp 'prog-mode) 'prog-mode 'fundamental-mode)),而(derived-mode-p 'prog-mode) 计算结果为nil(我的Emacs 是26.x,别名是prog-mode)。您是否知道如何解决这个问题?
(derived-mode-p 'prog-mode) 将是真的,但(derived-mode-p 'groovy-parent-mode) 不再是。这是一种更好的方法,但最好让它们都工作。
groovy-parent-mode 实际上是一个内部包变量(应该使用-- 内部变量约定定义,如错误中提到的cmake--parent-mode)。一个可能的意外副作用是粗心的别名引入的依赖循环。