如何检查是否启用了次要模式(.e.g flymake-mode)?

时间:2012-04-10 11:47:00

标签: emacs flymake

使用flymake-mode时总是会出错。并且flymake模式关闭。

enter image description here

所以我想检查是否启用了flymake-mode。如果没有打开,我会在调用flymake-next-error之前将其打开。

感谢。

2 个答案:

答案 0 :(得分:31)

大多数次要模式都是使用define-minor-mode宏定义的。对于缓冲区本地模式,该宏创建一个与模式本身 1 同名的缓冲区局部变量。当为当前缓冲区启用模式时,该变量为非nil

因此,要检查是否启用了flymake-mode,您可以测试变量flymake-mode(注意如果尚未启用该模式,则根本不会定义此变量):

(and (boundp 'flymake-mode) flymake-mode)

正如Thom在评论中指出的那样,可以使用方便的宏来表达:

(bound-and-true-p flymake-mode)

我们可以将其用作ifwhenunless表达式的条件:

(if (bound-and-true-p flymake-mode)
    (message "flymake-mode is on")
  (message "flymake-mode is off"))

1 对于全局次要模式,相应的变量是全局的;但是flymake-mode是缓冲本地的。

答案 1 :(得分:1)

另一种解决方案是使用 M-x describe-mode 来显示所有活动的次要模式(和主要模式)以及每个模式的简要说明。

如果在当前缓冲区中启用了次要模式,则可以在弹出缓冲区中找到它的名称。