Posso disattivare o cambiare il controllo sintassi per la modalità js2?


13

Ho una configurazione predefinita di js2-mode. Questo fornisce una buona evidenziazione e controllo della sintassi, ma ora sto lavorando a un progetto con un diverso set di stili (in particolare questo nuovo progetto non usa punti e virgola).

Questo fa sì che ogni singola riga di codice venga sottolineata js2-modecon l'avvertimento:missing ; after statement

Esiste un modo per disabilitare il check-in della sintassi js2-mode?

O, ancora meglio, c'è un modo per usare un diverso controllo della sintassi?

Ho la modalità Flycheck installata e funzionante per i miei .jsfile, ma non ho abilitato alcun controllo di sintassi (cioè tutti i controlli sono impostati su nile not found). Sarebbe bello sapere come abilitare uno di questi e disabilitare quello incorporato js2.

So che le visualizzazioni sull'inserimento del punto e virgola variano, ma questo progetto segue quello "standard style"per il quale esiste un controllo sintassi in Flycheck e mi interessa solo se posso cambiare il controllo.

Risposte:


17

L'avviso viene dalla modalità JS2 che implementa il proprio parser per Javascript e avvisa di un paio di problemi. Come notato nell'altra risposta, il particolare avviso che hai osservato è controllato dall'opzione utente js2-strict-missing-semi-warningche puoi impostare nilnel tuo file init o tramite in M-x customizemodo da disattivare l'avviso.

Quando si utilizza la modalità JS2 insieme Flycheck è comunque consigliato di spegnere tutti gli avvisi di modalità JS2 impostando le variabili js2-mode-show-parse-errorse js2-mode-show-strict-warningsper nilcome in quasi tutti i casi il controllo della sintassi del Flycheck fornisce la segnalazione degli errori superiore.


Per selezionare il javascript-standardcontrollo sintassi per il buffer corrente utilizzare C-c ! s javascript-standard. È possibile abilitare permanentemente questo correttore di sintassi per il proprio progetto specifico creando un .dir-locals.elfile nella directory di livello superiore del progetto con i seguenti contenuti:

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

Emacs carica automaticamente queste variabili di directory quando si visita un file sotto la directory e quindi seleziona automaticamente il controllo di sintassi standard per il progetto.


Per qualche ragione, anche quando js2-mode-show-parse-errorsè impostato su nil, vedo ancora gli errori: C-h v js2-mode-show-parse-errorsritorna js2-mode-show-parse-errors is a variable defined in js2-mode.el'. Its value is nil. Original value was t ma vedo ancora le righe sottostanti. Sai perché questo potrebbe essere?
Startec,

Ah, c'è un piccolo tipo nella tua risposta, credo che tu intendessi js2-mode-show-strict-warnings nil. Ho aggiunto questo come modifica.
Startec,

@Startec Oh scusa grazie per aver corretto l'errore.
lunaryorn,

2

È possibile personalizzare la js2-strict-missing-semi-warningvariabile in nilmodo che non ti avverta per questo particolare problema, oppure è possibile utilizzare al js-modeposto di js2-mode.

Delle due opzioni, ti consiglio di cambiare la tua guida di stile; l'inserimento automatico di punti e virgola in JS è una trappola. Tuttavia, riconosco che ciò potrebbe non essere sempre possibile.


4
-1: rimuovere l'ultimo paragrafo, è fuori tema. La discussione sugli stili Javascript non è per questo sito.
lunaryorn,

3
No grazie. Offro questo consiglio come ingegnere con 20 anni di esperienza con Javascript. Certamente è possibile adattare emacs alle convenzioni locali (ed è ciò che emacs è meglio), ma alcune cose sono più problematiche di quanto valgono e l'inserimento automatico di punti e virgola è in cima a quella lista. Mettendo da parte questo, modificare il comportamento di js2-mode è la tua migliore opzione, in quanto è la più semplice. In realtà non so nulla del flymake, quindi non posso aiutarti lì.
db48x,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.