ฉันสามารถปิดหรือสลับตัวตรวจสอบไวยากรณ์สำหรับโหมด 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ในไฟล์ init หรือผ่านM-x customizeเพื่อปิดคำเตือน

เมื่อใช้โหมด JS2 ร่วมกับ 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

@ เริ่มต้นโอ้ขอโทษด้วยสำหรับการแก้ไขข้อผิดพลาดของฉัน
Lunaryorn

2

คุณสามารถปรับแต่งjs2-strict-missing-semi-warningตัวแปรnilเพื่อที่ว่ามันก็ไม่ได้เตือนคุณสำหรับปัญหานี้โดยเฉพาะหรือคุณอาจจะใช้แทนjs-modejs2-mode

ในสองตัวเลือกนี้ฉันแนะนำให้เปลี่ยนไกด์สไตล์ของคุณ การแทรกเครื่องหมายอัฒภาคอัตโนมัติใน JS คือกับดัก ถึงกระนั้นฉันก็ตระหนักว่ามันอาจจะเป็นไปไม่ได้เสมอไป


4
-1: โปรดลบย่อหน้าสุดท้ายออกนอกหัวข้อ การอภิปรายเกี่ยวกับสไตล์ Javascript ไม่ได้มีไว้สำหรับเว็บไซต์นี้
Lunaryorn

3
ไม่เป็นไรขอบคุณ. ฉันเสนอคำแนะนำนี้ในฐานะวิศวกรที่มีประสบการณ์ 20 ปีกับ Javascript แน่นอนว่าการปรับ emacs ให้เหมาะสมกับการประชุมในท้องถิ่นนั้นทำได้ (และเป็นสิ่งที่ดีที่สุดของ emacs) แต่บางสิ่งก็มีปัญหามากกว่าที่พวกเขาควรค่าและการแทรกเครื่องหมายอัฒภาคอยู่ด้านบนสุดของรายการนั้น การวางสิ่งนั้นไว้การกระทำของโหมด js2 เป็นตัวเลือกที่ดีที่สุดของคุณเนื่องจากเป็นวิธีที่ง่ายที่สุด ที่จริงฉันไม่รู้อะไรเกี่ยวกับ flymake แต่ฉันก็เลยช่วยคุณไม่
db48x
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.