6

通常,在 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 在这个特定的项目文件夹中使用 flycheck 和 eslint,同时在其余项目中继续使用 flycheck 和 jshint?我听说以下几行应该可以解决从 jshint 切换到 eslint 的技巧,但我不完全确定在哪里添加它们:

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

(你可以猜到,我不擅长设置 emacs,所以我将非常感谢具体的指导。)

4

1 回答 1

1

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

dir-locals 只包含一个嵌套的 alist 映射模式到需要在该模式下设置的变量/值对。因此,您setq可以轻松地将其翻译为这样的 alist:

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

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

于 2015-07-29T08:56:31.123 回答