aza*_*gru 5 emacs eslint flycheck
通常,在emacs上编辑JavaScript时,我使用flycheck和jshint来检查语法错误.所以我全局安装了jshint,并在.emacs文件中使用以下命令在js-mode中使用flycheck:
(require 'flycheck)
(add-hook 'js-mode-hook
(lambda () (flycheck-mode t)))
Run Code Online (Sandbox Code Playgroud)
但我也参与了一个项目,他们使用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))))
Run Code Online (Sandbox Code Playgroud)
是否有可能在.dir-locals.el文件的帮助下告诉emacs在此特定项目文件夹中使用带有eslint的flycheck,同时在其余项目中继续使用带有jshint的flycheck?我听说以下几行应该是从jshint切换到eslint的技巧,但我不完全确定在哪里添加它们:
(setq flycheck-disabled-checkers '(javascript-jshint))
(setq flycheck-checkers '(javascript-eslint))
Run Code Online (Sandbox Code Playgroud)
(你可以猜到,我对设置emacs并不是很好,所以我会非常感谢你的具体说明.)
我处于同样的情况,除了我希望 eslint 成为默认值并在一些较旧的“遗留”项目中使用 jshint 。
dir-locals 只是包含一个嵌套的 alist 映射模式到需要在该模式下设置的变量/值对。所以你setq可以简单地翻译成这样的列表:
((js-mode . ((flycheck-disabled-checkers . (javascript-jshint))
(flycheck-checkers . (javascript-eslint)))))
Run Code Online (Sandbox Code Playgroud)
实际上最好只设置,flycheck-disabled-checkers因为检查器已经包含javascript-jshint和javascript-eslint,(它只是在您的配置中禁用),并且flycheck-checkers被标记为“有风险”的变量(因为这将导致任意程序在输入上运行),因此它每当您在目录中打开 JS 文件时,都会出现一个问题。