Можно ли отключить или включить проверку синтаксиса для режима js2?


13

У меня есть настройки по умолчанию js2-mode. Это обеспечивает хорошую подсветку и проверку синтаксиса, но сейчас я работаю над проектом с другим набором стилей (в частности, этот новый проект не использует точки с запятой).

Это приводит к тому, что каждая строка кода подчеркивается js2-modeпредупреждением:missing ; after statement

Есть ли способ отключить проверку синтаксиса js2-mode?

Или, что еще лучше, есть ли способ использовать другую проверку синтаксиса?

У меня установлен и работает режим Flycheck для моих .jsфайлов, но у меня просто не включены никакие средства проверки синтаксиса (то есть все контроллеры установлены в nilи not found). Было бы здорово узнать, как включить один из них и отключить встроенный js2.

Я знаю, что взгляды на вставку точек с запятой различны, но этот проект следует той, "standard style"для которой есть проверка синтаксиса в Flycheck, и меня просто интересует, могу ли я переключить эту проверку.

Ответы:


17

Предупреждение приходит из режима JS2, который реализует свой собственный синтаксический анализатор для Javascript и предупреждает о нескольких проблемах. Как отмечено в другом ответе, конкретное предупреждение, которое вы наблюдали, контролируется пользовательской опцией, js2-strict-missing-semi-warningкоторую вы можете установить nilв своем файле инициализации или через M-x customizeнее, чтобы отключить предупреждение.

При использовании СП2 режима вместе с Flycheck мы обычно рекомендуем , чтобы отключить все предупреждения о режиме JS2 путем установки переменных js2-mode-show-parse-errorsи js2-mode-show-strict-warningsв nilкачестве почти во всех случаях проверки синтаксиса 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 не для этого сайта.
Лунный Рог

3
Нет, спасибо. Я предлагаю этот совет как инженер с 20-летним опытом работы с Javascript. Конечно, адаптация emacs для соответствия локальным соглашениям выполнима (и это то, что лучше всего для emacs), но некоторые вещи доставляют больше хлопот, чем стоят, и автоматическая вставка точек с запятой находится на вершине этого списка. Оставляя это в стороне, настройка поведения js2-mode - ваш лучший вариант, так как он самый простой. Хотя на самом деле я ничего не знаю о мухе, поэтому не могу вам помочь.
db48x
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.