Tôi có thể tắt hoặc chuyển trình kiểm tra cú pháp cho chế độ js2 không?


13

Tôi có một thiết lập mặc định js2-mode. Điều này cung cấp đánh dấu và kiểm tra cú pháp đẹp nhưng tôi hiện đang làm việc trên một dự án với một tập hợp các kiểu khác nhau (cụ thể là dự án mới này không sử dụng dấu chấm phẩy).

Điều này khiến cho mỗi dòng mã được gạch chân js2-modevới cảnh báo:missing ; after statement

Có cách nào để tôi có thể vô hiệu hóa kiểm tra cú pháp js2-modekhông?

Hoặc, thậm chí tốt hơn, có cách nào để sử dụng trình kiểm tra cú pháp khác nhau không?

Tôi đã cài đặt và chạy chế độ Flycheck cho .jscác tệp của mình nhưng tôi không bật bất kỳ trình kiểm tra cú pháp nào (nghĩa là tất cả các trình kiểm tra được đặt thành nilnot found). Sẽ thật tuyệt khi biết cách kích hoạt một trong số này và vô hiệu hóa tích hợp trong js2một.

Tôi biết các quan điểm về chèn dấu chấm phẩy khác nhau nhưng dự án này tuân theo cái "standard style"mà có trình kiểm tra cú pháp trong Flycheck và tôi chỉ quan tâm đến việc tôi có thể chuyển đổi trình kiểm tra hay không.

Câu trả lời:


17

Cảnh báo đến từ Chế độ JS2 thực hiện trình phân tích cú pháp riêng cho Javascript và cảnh báo về một số vấn đề. Như đã lưu ý trong câu trả lời khác, cảnh báo cụ thể mà bạn quan sát được điều khiển bởi tùy chọn người dùng js2-strict-missing-semi-warningmà bạn có thể đặt niltrong tệp init hoặc thông qua M-x customizeđể tắt cảnh báo.

Khi sử dụng JS2 Chế độ cùng với Flycheck chúng tôi thường khuyên để tắt tất cả các cảnh báo của JS2 Chế độ bằng cách thiết lập các biến js2-mode-show-parse-errorsjs2-mode-show-strict-warningsđể nilnhư ở hầu hết các trường hợp kiểm tra cú pháp Flycheck của cung cấp báo cáo lỗi vượt trội.


Để chọn javascript-standardtrình kiểm tra cú pháp cho việc sử dụng bộ đệm hiện tại C-c ! s javascript-standard. Bạn có thể kích hoạt vĩnh viễn trình kiểm tra cú pháp này cho dự án cụ thể của mình bằng cách tạo một .dir-locals.eltệp trong thư mục cấp cao nhất của dự án với các nội dung sau:

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

Emacs tự động tải các Biến thư mục này khi truy cập một tệp bên dưới thư mục và do đó tự động chọn trình kiểm tra cú pháp tiêu chuẩn cho dự án của bạn.


Vì một số lý do, ngay cả khi js2-mode-show-parse-errorsđược đặt thành nil, tôi vẫn thấy các lỗi: C-h v js2-mode-show-parse-errorstrả về js2-mode-show-parse-errors is a variable defined in js2-mode.el'. Its value is nil. Original value was t nhưng tôi vẫn thấy các dòng bên dưới. Bạn có biết tại sao điều này có thể được?
Bắt đầu

Ah, có một loại nhỏ trong câu trả lời của bạn, tôi tin rằng bạn có ý nghĩa js2-mode-show-strict-warnings nil. Tôi đã thêm điều này như là một chỉnh sửa.
Bắt đầu

@Startec Oh xin lỗi cảm ơn vì đã sửa lỗi của tôi.
lunaryorn

2

Bạn có thể tùy chỉnh js2-strict-missing-semi-warningbiến để nilnó không cảnh báo bạn về vấn đề cụ thể này hoặc bạn có thể sử dụng js-modethay vì js2-mode.

Trong hai tùy chọn, tôi khuyên bạn nên thay đổi hướng dẫn phong cách của bạn; tự động chèn dấu chấm phẩy trong JS là một cái bẫy. Tuy nhiên, tôi nhận ra rằng điều đó có thể không phải lúc nào cũng có thể.


4
-1: Vui lòng xóa đoạn cuối, nó lạc đề. Thảo luận về các phong cách Javascript không dành cho trang web này.
lunaryorn

2
Không cám ơn. Tôi cung cấp lời khuyên này với tư cách là một kỹ sư có 20 năm kinh nghiệm với Javascript. Chắc chắn việc điều chỉnh các emacs để phù hợp với các quy ước địa phương là có thể thực hiện được (và đó là những gì emacs giỏi nhất), nhưng một số điều còn rắc rối hơn giá trị của chúng và việc chèn dấu chấm phẩy tự động nằm ở đầu danh sách đó. Đặt điều đó sang một bên, điều chỉnh hành vi của chế độ js2 là lựa chọn tốt nhất của bạn, vì đó là cách đơn giản nhất. Tôi thực sự không biết bất cứ điều gì về flymake, vì vậy tôi không thể giúp bạn ở đó.
db48x
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.