【问题标题】:Use flycheck with eslint on emacs when editing files from a particular project编辑来自特定项目的文件时,在 emacs 上使用 flycheck 和 eslint
【发布时间】:2015-05-17 23:14:10
【问题描述】:

通常,在 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 一点也不擅长,所以我将非常感谢具体的指导。)

【问题讨论】:

    标签: emacs flycheck eslint


    【解决方案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 文件时都会导致一个问题。

    【讨论】:

    • 抱歉回复晚了。我尝试了您的建议,但尽管上面的代码,我的 emacs 似乎仍然继续使用 jshint。我可以在 js 文件中通过按 Meta-X 然后输入 flycheck-select-checker 并选择 javascript-eslint 来覆盖它,但是当我将您的代码编辑为 ((js-mode . ((flycheck-select-checker . (javascript-eslint))))) 并将其放在 .dir-locals.el 中时,这不起作用。缺乏elisp知识,我完全没有想法:-(
    • flycheck-select-checker 是一个函数,而另外两个是变量。 .dir-locals.el 将只接受变量到值映射的列表,这解释了为什么它不起作用。我的 .emacs 中有(flycheck-add-mode 'javascript-eslint 'javascript-mode);也许你不知道?这可以解释为什么禁用 jshint 不会导致选择 eslint。
    猜你喜欢
    • 1970-01-01
    • 2023-04-09
    • 2021-05-13
    • 2019-04-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-25
    • 1970-01-01
    相关资源
    最近更新 更多