Bisakah saya mematikan atau mengaktifkan pemeriksa sintaks untuk mode js2?

13

Saya memiliki pengaturan default js2-mode. Ini memberikan penyorotan dan pemeriksaan sintaks yang bagus, tetapi saya sekarang mengerjakan proyek dengan gaya yang berbeda (khususnya proyek baru ini tidak menggunakan titik koma).

Ini menyebabkan setiap baris kode digarisbawahi js2-modedengan peringatan:missing ; after statement

Apakah ada cara agar saya dapat menonaktifkan pemeriksaan sintaksis js2-mode?

Atau, lebih baik lagi, apakah ada cara untuk menggunakan pemeriksa sintaks yang berbeda?

Saya telah menginstal mode Flycheck dan menjalankan .jsfile - file saya, tetapi saya hanya tidak mengaktifkan checker sintaks (mis. Semua checker diatur ke nildan not found). Alangkah baiknya mengetahui cara mengaktifkan salah satu dari ini dan menonaktifkan bawaan dalam js2satu.

Saya tahu pandangan tentang penyisipan titik koma bervariasi tetapi proyek ini mengikuti "standard style"yang ada pemeriksa sintaks di Flycheck dan saya hanya tertarik jika saya bisa mengganti pemeriksa.

Startec
sumber

Jawaban:

17

Peringatan tersebut berasal dari Mode JS2 yang mengimplementasikan parsernya sendiri untuk Javascript dan memperingatkan tentang beberapa masalah. Seperti disebutkan dalam jawaban lain, peringatan khusus yang Anda amati dikendalikan oleh opsi pengguna js2-strict-missing-semi-warningyang dapat Anda atur nildi file init Anda atau via M-x customizeuntuk mematikan peringatan.

Bila menggunakan JS2 mode bersama dengan Flycheck kita umumnya merekomendasikan untuk mematikan semua peringatan dari JS2 mode dengan menetapkan variabel js2-mode-show-parse-errorsdan js2-mode-show-strict-warningsuntuk nilseperti dalam hampir semua kasus Flycheck ini memeriksa sintaks menyediakan pelaporan kesalahan superior.


Untuk memilih javascript-standardpemeriksa sintaks untuk penggunaan buffer saat ini C-c ! s javascript-standard. Anda dapat secara permanen mengaktifkan pemeriksa sintaks ini untuk proyek spesifik Anda dengan membuat .dir-locals.elfile di direktori tingkat atas proyek dengan konten berikut:

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

Emacs secara otomatis memuat Variabel Direktori ini ketika mengunjungi file di bawah direktori, dan dengan demikian secara otomatis memilih pemeriksa sintaksis standar untuk proyek Anda.

lunaryorn
sumber
Untuk beberapa alasan, bahkan ketika js2-mode-show-parse-errorsdiatur ke nil, saya masih melihat kesalahan: C-h v js2-mode-show-parse-errorskembali js2-mode-show-parse-errors is a variable defined in js2-mode.el'. Its value is nil. Original value was t tetapi saya masih melihat garis di bawah. Apakah Anda tahu mengapa ini bisa terjadi?
Startec
Ah, ada jenis kecil dalam jawaban Anda, saya yakin Anda maksudkan js2-mode-show-strict-warnings nil. Saya menambahkan ini sebagai suntingan.
Startec
@Startec Oh maaf terima kasih telah memperbaiki kesalahan saya.
lunaryorn
2

Anda bisa mengubahsuaikan js2-strict-missing-semi-warningvariabel nilsehingga tidak memperingatkan Anda untuk masalah khusus ini, atau Anda bisa menggunakannya js-modesebagai gantinya js2-mode.

Dari dua opsi, saya sarankan untuk mengubah panduan gaya Anda; penyisipan titik koma otomatis di JS adalah jebakan. Namun, saya menyadari bahwa itu tidak selalu mungkin.

db48x
sumber
4
-1: Silakan hapus paragraf terakhir, itu di luar topik. Diskusi gaya Javascript bukan untuk situs ini.
lunaryorn
3
Tidak terima kasih. Saya menawarkan saran ini sebagai seorang insinyur dengan 20 tahun pengalaman dengan Javascript. Tentu saja mengadaptasi emac agar sesuai dengan konvensi lokal dapat dilakukan (dan itulah yang paling baik emacs lakukan), tetapi beberapa hal lebih sulit daripada nilainya, dan penyisipan titik koma otomatis ada di bagian atas daftar itu. Kesampingkan itu, mengubah perilaku mode-js2 adalah pilihan terbaik Anda, karena ini adalah yang paling sederhana. Aku sebenarnya tidak tahu apa-apa tentang flymake, jadi aku tidak bisa membantumu di sana.
db48x