使用 flymake-mode 时总是出错。并且flymake-mode关闭。
所以我想检查 flymake-mode 是否打开。如果没有打开,我会在调用 flymake-next-error 之前打开它。
谢谢。
大多数次要模式是使用define-minor-mode
宏定义的。对于缓冲区局部模式,该宏会创建一个与模式本身同名的缓冲区局部变量1。nil
当为当前缓冲区启用模式时,该变量为非。
因此,要检查是否flymake-mode
启用,您可以测试该变量flymake-mode
(注意,如果未启用该模式,则可能根本没有定义此变量):
(and (boundp 'flymake-mode) flymake-mode)
正如 Thom 在评论中指出的那样,可以使用方便的宏来表示:
(bound-and-true-p flymake-mode)
我们可以将其用作if
or when
orunless
表达式的条件:
(if (bound-and-true-p flymake-mode)
(message "flymake-mode is on")
(message "flymake-mode is off"))
1对于全局次要模式,对应的变量是全局的;但 flymake-mode 是缓冲区本地的。
另一种解决方案是使用M-x describe-mode显示所有活动的次要模式(和主要模式)和每个的简要说明。
如果当前缓冲区中打开了次要模式,您可以在弹出缓冲区中找到它的名称。