วิธีเปลี่ยนความกว้างของการเยื้องในโหมดจาวาสคริปต์ emacs


120

ฉันต้องการใช้ช่องว่าง 2 ช่องสำหรับการเยื้องแทน 4 ฉันสามารถเปลี่ยนพฤติกรรมเริ่มต้นของโหมด C โดยใช้:

(setq c-basic-offset 2)

ฉันจะเปลี่ยนสิ่งนี้ในโหมดจาวาสคริปต์ได้อย่างไร

คำตอบ:


198

js-indent-level สามารถใช้ในโหมดจาวาสคริปต์เริ่มต้นซึ่งรวมไว้โดยค่าเริ่มต้นเริ่มต้นใน emacs 23.2

(setq js-indent-level 2)

ควรทำในสิ่งที่คุณกำลังมองหา หากคุณใช้ emac เวอร์ชันเก่าคุณอาจอยู่ในโหมดจาวา ฉันคิดว่าโหมดนี้ตอบสนองc-basic-offsetอย่างไรก็ตามฉันอาจคิดผิด


2
(setq default-tab-width 2) จะเป็นตัวตั้งค่าความกว้างของแท็บที่สอดคล้องกันสำหรับโหมด java
Fergie

การใช้กลไกนี้ความกว้างของแท็บจะยังคงอยู่ที่ 8 ดังนั้นจะใช้แท็บก็ต่อเมื่อระดับการเยื้องคือ 4 (2x4 = 8) หรือมากกว่า คุณตั้งค่าความกว้างของแท็บเป็น 2 หรือ 4 เพื่อให้ใช้แท็บแทนช่องว่างได้อย่างไร ฉันได้ลองใช้การตั้งค่าหลายอย่างเช่น (setq tab-width 4) แต่ก็ไม่มีประโยชน์ เป้าหมายของฉัน: ใช้ความกว้างของแท็บ 4 และใช้เฉพาะอักขระแท็บเท่านั้น (ไม่ใช่ช่องว่างแทน)
jdp

JDP: (defun my-javascript-mode-hook () (setq indent-tabs-mode t tab-width 4 js-indent-level 4)) (add-hook 'javascript-mode-hook 'my-javascript-mode-hook)ลอง
Phils

ใช้js-mode-hookดังนี้(defun my-js-mode-hook () (setq indent-tabs-mode t tab-width 4 js-indent-level 4)) (add-hook 'js-mode-hook 'my-js-mode-hook)
skeltoac

6
เอกสารนี้อยู่ที่ใด มีวิธีค้นหาข้อมูลนี้โดยไม่ใช้ stackoverflow หรือไม่? ฉันดูM-x hจากโหมด js แต่ไม่พบอะไรเลย
Charles Holbrow

75

ฉันหวังว่าจะมีคนบอกฉันเกี่ยวกับ Custom เร็ว ๆ นี้! บางทีนี่อาจจะช่วยมนุษย์คนอื่นเช่นฉันก็ได้นะ;)

เรียกใช้แบบกำหนดเอง:

M-x customize

จากนั้นเลือก "Programming" จากนั้นเลือก "Languages" จากนั้นเลือกภาษา / โหมดเพื่อปรับแต่ง แก้ไขตัวเลือกตามที่เห็นสมควร เมื่อเสร็จแล้วให้เลือก "บันทึกสำหรับเซสชันปัจจุบัน" หรือ "บันทึกสำหรับเซสชันในอนาคต"



11

คุณอาจต้องการตั้งค่า emac ให้ใช้ช่องว่างแทนแท็บ

(setq-default indent-tabs-mode nil)

นี่เป็นความคิดเห็นมากกว่าคำตอบจริง ได้รับชื่อเสียงมากขึ้นเพื่อให้สามารถแสดงความคิดเห็น
jcubic

2

ในไฟล์ javascript.el ของฉัน (/ usr / share / emacs / site-lisp) ฉันพบ

จาวาสคริปต์เยื้องระดับ 4

ดังนั้นหากคุณใช้โหมดเสียงกระเพื่อมเดียวกันคุณสามารถเปลี่ยนได้โดยการเรียกใช้

(setq javascript-indent-level 2)

2

คุณยังสามารถใช้

M-x customize-variable

และพิมพ์

js-indent-level

( js-[TAB] แสดงรายการตัวเลือก) จากนั้นเปลี่ยนJs Indent Levelตามต้องการแล้วคลิก[State:]และบันทึก


2

การใช้EditorConfigอาจเป็นความคิดที่ดีเช่นกัน และแน่นอน Emacs มีโหมดสำหรับมันeditorconfig-emacs editorconfig-emacs

นอกจากนี้ยังมีอยู่ในตัวจัดการแพ็คเกจ ( M-x package-list-packages) ผ่าน Melpa หรือ Marmalade


2

หากคุณต้องการเปลี่ยนเป็นรายไฟล์ให้วางไว้ที่ด้านบนสุดของไฟล์ของคุณ:

// -*- mode: js; js-indent-level: 2; -*-

0

วิธีแก้ปัญหาเหล่านี้ไม่ได้ผลสำหรับฉันหลังจากอัปเกรดเป็น Emacs 26 (ฉันได้js-indent-levelตั้งค่าเป็น 2 แล้ว แต่ความกว้างของแท็บกลับไปเป็น 8) แต่สิ่งที่ได้ผลคือการตั้งค่าtab-widthตัวแปรเป็น2ซึ่งดูเหมือนว่าจะแทนที่default-tab-widthตัวแปรเก่า

ฉันพบสิ่งนี้M-x customizeโดยการค้นหาtab width.

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.