我可以关闭或切换js2-mode的语法检查器吗?


13

我的默认设置为js2-mode。这样可以很好地突出显示和检查语法,但是我现在正在一个具有不同样式集的项目(特别是这个新项目不使用分号)。

这会在每行代码的下面js2-mode加上警告:missing ; after statement

有没有一种方法可以禁用语法检查js2-mode

或者,甚至更好的是,有没有办法使用不同的语法检查器?

我已经为我的.js文件安装并运行了Flycheck模式,但是我没有启用任何语法检查器(即,所有检查器都设置为nilnot found)。知道如何启用其中之一并禁用内置的功能将是很棒的js2

我知道分号插入的观点各不相同,但是该项目遵循"standard style"Flycheck中有一个语法检查器的项目,我只是想知道是否可以切换检查器。

Answers:


17

该警告来自JS2模式,该模式实现了自己的Java解析器,并警告了一些问题。如另一个答案中所述,您观察到的特定警告是由用户选项控制的js2-strict-missing-semi-warning,您可以将其设置nil在init文件中或通过M-x customize来关闭警告。

当使用起来JS2模式Flycheck我们一般建议通过设置变量来关闭JS2模式的所有警告js2-mode-show-parse-errors,并js2-mode-show-strict-warningsnil在几乎所有情况下Flycheck的语法检查提供了卓越的错误报告。


要选择javascript-standard当前缓冲区的语法检查器,请使用C-c ! s javascript-standard。您可以通过.dir-locals.el在项目的顶级目录中创建一个包含以下内容的文件来为特定项目永久启用此语法检查器:

((js2-mode
  (flycheck-checker . javascript-standard)))

当访问目录下的文件时,Emacs会自动加载这些目录变量,从而自动为项目选择标准语法检查器。


由于某些原因,即使js2-mode-show-parse-errors将设置为nil,我仍然会看到错误:C-h v js2-mode-show-parse-errors返回,js2-mode-show-parse-errors is a variable defined in js2-mode.el'. Its value is nil. Original value was t 但仍然看到下划线。你知道为什么会这样吗?
Startec

嗯,我相信您的意思是您的回答中有一个小问题js2-mode-show-strict-warnings nil。我将此添加为修改。
Startec

@Startec抱歉,感谢您修复我的错误。
lunaryorn

2

您可以将js2-strict-missing-semi-warning变量自定义为,nil以便它不会针对此特定问题警告您,或者您可以使用js-mode代替js2-mode

在这两个选项中,我建议更改样式指南。JS中的自动分号插入是一个陷阱。不过,我认识到这并非总是可能的。


4
-1:请删除最后一段,这是题外话。本网站不讨论Javascript样式。
lunaryorn

3
不,谢谢。我以拥有20年Java经验的工程师身份提供此建议。当然,使emacs适应本地约定是可行的(这是emacs最擅长的事情),但是有些事情比它们值得的麻烦得多,并且自动分号插入在该列表的顶部。抛开这些,调整js2-mode的行为是您最好的选择,因为它是最简单的。我实际上对flymake一无所知,所以我在这里不能帮助您。
db48x
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.