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

编辑特定项目中的文件时,在emacs上使用带有eslint的flycheck,emacs,flycheck,eslint,Emacs,Flycheck,Eslint,通常,在emacs上编辑JavaScript时,我使用flycheck和jshint来检查语法错误。因此,我在全局安装了jshint,并在.emacs文件中使用以下命令在js模式下使用flycheck: (require 'flycheck) (add-hook 'js-mode-hook (lambda () (flycheck-mode t))) 但我也参与了一个项目,他们使用eslint定义语法规则。我在该项目文件夹中有一个.dir locals.el文件,该文件目前

通常,在emacs上编辑JavaScript时,我使用flycheck和jshint来检查语法错误。因此,我在全局安装了jshint,并在
.emacs
文件中使用以下命令在js模式下使用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一点也不在行,因此我将非常感谢您的具体指导。)

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

dir locals只包含一个嵌套的列表,将模式映射到需要在该模式下设置的变量/值对。因此,您的
setq
可以简单地转换为这样一个列表:

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

实际上最好只设置
flycheck disabled checker
,因为checker已经包括
javascript jshint
javascript eslint
,(它只是在您的配置中被禁用,
flycheck checker
被标记为“风险”变量(因为这将导致在输入端运行任意程序)因此,每当你在目录中打开一个JS文件时,就会有人问你一个问题。

很抱歉回复太晚。我尝试了你的建议,但我的emacs似乎仍然在使用jshint,尽管上面有代码。在JS文件中,我可以通过按Meta-X,然后键入
flycheck select checker
并选择
javascript es来覆盖这个问题lint
,但当我将您的代码编辑为
((js模式)((flycheck select checker.(javascript eslint‘‘‘‘))
,并将其放置在
.dir locals.el
中时,这不起作用。缺乏elisp知识,我完全没有想法:-(flycheck select checker是一个函数,而另外两个是变量。.dir-locals.el只接受变量到值的映射列表,这解释了为什么这不起作用。我有
(flycheck添加模式'javascript eslint'javascript模式)
在my.emacs中;也许您没有?这就解释了为什么禁用jshint不会导致拾取eslint。