通常,在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在这个特定的项目文件夹中使用flycheck和eslint,而在其他项目中继续使用flycheck和jshint?我听说下面这几行代码可以很好地从jshint切换到eslint,但不完全确定在哪里添加它们:
(setq flycheck-disabled-checkers '(javascript-jshint))
(setq flycheck-checkers '(javascript-eslint))(正如您所猜到的,我根本不擅长设置emacs,因此如果有具体的说明,我将非常感激。)
发布于 2015-07-29 16:56:31
我也处于同样的情况,只是我希望eslint成为默认设置,并在一些较旧的“遗留”项目中使用jshint。
dir-locals只是包含一个嵌套的列表,它将模式映射到需要在该模式中设置的变量/值对。因此,您的setq可以简单地转换为这样一个列表:
((js-mode . ((flycheck-disabled-checkers . (javascript-jshint))
(flycheck-checkers . (javascript-eslint)))))实际上,只设置flycheck-disabled-checkers会更好,因为检查器已经包含了javascript-jshint和javascript-eslint (只是在您的配置中禁用了它),并且flycheck-checkers被标记为一个“危险”变量(因为这将导致在输入上运行任意程序),所以每当您打开目录中的JS文件时,它都会引起一个问题。
https://stackoverflow.com/questions/29066675
复制相似问题