2012-04-10 86 views
14

我使用flymake模式时总是出错。 Flymake模式关闭。如何检查次要模式(.e.g flymake-mode)是否打开?

enter image description here

所以我要检查flymake模式是否开启。如果没有打开,我会在打电话给flymake-next-error之前打开它。

谢谢。

+0

如果打开时出现错误,您打算从检查中获得什么? – 2012-04-10 11:53:02

+1

根据其主页(http://flymake.sourceforge.net/),flymake是次要模式,而不是主要模式。 – 2012-04-10 12:25:27

+0

谢谢。错误不会一直发生。它发生时,我的js文件有很多失败。 flymake是一个小模式。 – coordinate 2012-04-11 01:03:35

回答

22

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

因此,以检查是否flymake-mode已启用,您可以测试变量flymake-mode(注意,这个变量可能不会在所有如果尚未启用的模式来定义):

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

其中,作为托姆点

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

,我们可以作为一个ifwhenunless表达的条件使用方法:出的意见,可以通过方便的宏来表示:

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

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

+0

谢谢。这是我的错误。 Flymake不是主要模式,而是一种小模式。 – coordinate 2012-04-11 00:50:58

+3

这里的测试可以缩短为'(bound-and-true-p flymake-mode)'。 – Thom 2014-10-05 20:26:07