通常,在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并不是很好,所以我会非常感谢你的具体说明。)
答案 0 :(得分:1)
我处于相同的情况,除了我希望eslint是默认值并在一些较旧的“遗留”项目中使用jshint。
dir-locals只包含一个嵌套的alist映射模式到需要在该模式下设置的变量/值对。所以你的setq
可以简单地翻译成这样的列表:
((js-mode . ((flycheck-disabled-checkers . (javascript-jshint))
(flycheck-checkers . (javascript-eslint)))))
实际上最好只设置flycheck-disabled-checkers
,因为检查器已经同时包含javascript-jshint
和javascript-eslint
,(只是在配置中禁用了),而flycheck-checkers
是标记为“有风险”的变量(因为这会导致任意程序在输入上运行),因此每当您在目录中打开JS文件时都会询问问题。