26

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

在此处输入图像描述

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

谢谢。

4

2 回答 2

44

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

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

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

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

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

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

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

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

于 2012-04-10T12:40:42.553 回答
1

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

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

于 2019-04-07T02:04:48.360 回答