Czy mogę wyłączyć lub przełączyć moduł sprawdzania składni dla trybu js2?


13

Mam domyślną konfigurację js2-mode. Zapewnia to ładne podświetlanie i sprawdzanie składni, ale teraz pracuję nad projektem z innym zestawem stylów (szczególnie ten nowy projekt nie używa średników).

Powoduje to podkreślenie każdego wiersza kodu js2-modez ostrzeżeniem:missing ; after statement

Czy istnieje sposób, aby wyłączyć sprawdzanie składni js2-mode?

A może jeszcze lepiej, czy można użyć innego narzędzia do sprawdzania składni?

Mam zainstalowany i uruchomiony tryb Flycheck dla moich .jsplików, ale po prostu nie mam włączonych żadnych kontrolerów składni (tzn. Wszystkie kontrolery są ustawione na nili not found). Byłoby wspaniale wiedzieć, jak włączyć jeden z nich i wyłączyć wbudowany w js2jeden.

Wiem, że poglądy na wstawianie średników są różne, ale ten projekt jest zgodny z tym, "standard style"dla którego w Flycheck istnieje moduł sprawdzania składni i jestem zainteresowany, czy mogę go zmienić.

Odpowiedzi:


17

Ostrzeżenie pochodzi z trybu JS2, który implementuje własny parser dla Javascript i ostrzega o kilku problemach. Jak zauważono w drugiej odpowiedzi, konkretne ostrzeżenie, które zaobserwowałeś, jest kontrolowane przez opcję użytkownika, js2-strict-missing-semi-warningktórą możesz ustawić nilw pliku init lub za pomocą M-x customize, aby wyłączyć ostrzeżenie.

Podczas korzystania z trybu JS2 wraz z Flycheck na ogół zaleca się wyłączyć wszystkie ostrzeżenia trybie JS2 przez ustawienie zmiennych js2-mode-show-parse-errorsi js2-mode-show-strict-warningsdo niljak w prawie wszystkich przypadkach sprawdzanie składni Flycheck zapewnia lepsze raportowanie błędów.


Aby wybrać javascript-standardmoduł sprawdzania składni dla bieżącego bufora, użyj C-c ! s javascript-standard. Możesz na stałe włączyć ten moduł sprawdzania składni dla konkretnego projektu, tworząc .dir-locals.elplik w katalogu najwyższego poziomu projektu z następującą zawartością:

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

Emacs automatycznie ładuje te zmienne katalogu podczas odwiedzania pliku poniżej katalogu, a tym samym automatycznie wybiera standardowy moduł sprawdzania składni dla twojego projektu.


Z jakiegoś powodu, nawet gdy js2-mode-show-parse-errorsjest ustawiona na nil, nadal widzę błędy: C-h v js2-mode-show-parse-errorszwraca, js2-mode-show-parse-errors is a variable defined in js2-mode.el'. Its value is nil. Original value was t ale wciąż widzę podkreślenia. Czy wiesz, dlaczego tak może być?
Startec

Ach, w twojej odpowiedzi jest mały typ, myślę, że miałeś na myśli js2-mode-show-strict-warnings nil. Dodałem to jako edycję.
Startec

@Startec O przepraszam, dziękuję za naprawienie mojego błędu.
lunaryorn

2

Możesz dostosować js2-strict-missing-semi-warningzmienną niltak, aby nie ostrzegała cię przed tym konkretnym problemem, lub możesz użyć js-modezamiast niej js2-mode.

Spośród dwóch opcji polecam zmienić przewodnik po stylu; automatyczne wstawianie średnika w JS jest pułapką. Wiem jednak, że nie zawsze jest to możliwe.


4
-1: Proszę usunąć ostatni akapit, to nie na temat. Dyskusja o stylach Javascript nie jest przeznaczona dla tej witryny.
lunaryorn

3
Nie, dziękuję. Oferuję tę radę jako inżynier z 20-letnim doświadczeniem w Javascript. Z pewnością dostosowanie emacsa do lokalnych konwencji jest wykonalne (i właśnie w tym emacs jest najlepszy), ale niektóre rzeczy są bardziej kłopotliwe niż są warte, a automatyczne wstawianie średników znajduje się na szczycie tej listy. Odkładając to na bok, poprawianie zachowania trybu js2 jest najlepszą opcją, ponieważ jest najprostsze. Ale tak naprawdę nic nie wiem o Flymake, więc nie mogę ci pomóc.
db48x
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.