使用flymake-mode时总是会出错。并且flymake模式关闭。
所以我想检查是否启用了flymake-mode。如果没有打开,我会在调用flymake-next-error之前将其打开。
感谢。
答案 0 :(得分:31)
大多数次要模式都是使用define-minor-mode
宏定义的。对于缓冲区本地模式,该宏创建一个与模式本身 1 同名的缓冲区局部变量。当为当前缓冲区启用模式时,该变量为非nil
。
因此,要检查是否启用了flymake-mode
,您可以测试变量flymake-mode
(注意如果尚未启用该模式,则根本不会定义此变量):
(and (boundp 'flymake-mode) flymake-mode)
正如Thom在评论中指出的那样,可以使用方便的宏来表达:
(bound-and-true-p flymake-mode)
我们可以将其用作if
或when
或unless
表达式的条件:
(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 来显示所有活动的次要模式(和主要模式)以及每个模式的简要说明。
如果在当前缓冲区中启用了次要模式,则可以在弹出缓冲区中找到它的名称。