在编辑特定项目的文件时,在emacs上使用带有eslint的flycheck

时间:2015-03-15 21:59:05

标签: emacs flycheck eslint

通常,在emacs上编辑JavaScript时,我使用flycheck和jshint来检查语法错误。所以我全局安装了jshint,并在.emacs文件中使用以下命令在js-mode中使用flycheck:

(require 'flycheck)
(add-hook 'js-mode-hook
          (lambda () (flycheck-mode t)))

但我也参与了一个项目,他们使用eslint来定义语法规则。我在该项目文件夹中有一个.dir-locals.el文件,目前只定义了所需的列表:

((nil . ((tab-width . 4)
         (js-indent-level . 4)))

 (js-mode . ((tab-width . 4)
             (js-indent-level . 4)))

 (html-mode . ((tab-width . 4)
               (sgml-basic-offset . 4))))

是否有可能在.dir-locals.el文件的帮助下告诉emacs在此特定项目文件夹中使用带有eslint的flycheck,同时在其余项目中继续使用带有jshint的flycheck?我听说以下几行应该从jshint切换到eslint,但我不完全确定在哪里添加它们:

(setq flycheck-disabled-checkers '(javascript-jshint))
(setq flycheck-checkers '(javascript-eslint))

(正如你猜测的那样,我对设置emacs并不是很好,所以我会非常感谢你的具体说明。)

1 个答案:

答案 0 :(得分:1)

我处于相同的情况,除了我希望eslint是默认值并在一些较旧的“遗留”项目中使用jshint。

dir-locals只包含一个嵌套的alist映射模式到需要在该模式下设置的变量/值对。所以你的setq可以简单地翻译成这样的列表:

((js-mode . ((flycheck-disabled-checkers . (javascript-jshint))
             (flycheck-checkers . (javascript-eslint)))))

实际上最好只设置flycheck-disabled-checkers,因为检查器已经同时包含javascript-jshintjavascript-eslint,(只是在配置中禁用了),而flycheck-checkers是标记为“有风险”的变量(因为这会导致任意程序在输入上运行),因此每当您在目录中打开JS文件时都会询问问题。