ทำให้โหมดเว็บเยื้องกับช่องว่างเสมอ


10

ฉันกำลังใช้ emacs web-modeและการแท็บในไฟล์ JS ดูเหมือนจะผิดปกติ

ฉันได้ตั้งค่าแท็บให้เยื้อง 2 ช่องว่าง แต่เมื่อเยื้องถึง 8 ช่องว่างโหมดเว็บจะเปลี่ยนพวกเขาเป็นแท็บจากนั้นไปยังแท็บช่องว่าง 2 จนกว่าจะถึงอีก 8 และแปลงเป็นแท็บอื่น ฯลฯ

ฉันสามารถหยุดสิ่งนี้ไม่ให้เกิดขึ้นและบอก emacs / web-mode ให้เว้นวรรคเยื้องเท่านั้น

แก้ไข:

นี่คือตัวอย่างฟังก์ชันซ้อนแบบสั้น:

(function() {
  function() {
    function() {
      function() {
    function() {
      // Indenting problem.
    }
      }
    }
  }
})()

เห็นได้ชัดว่ามันทำงานได้ดีใน Emacs แต่คุณสามารถเห็นปัญหาการเยื้องที่นี่

ฉันจะทราบที่นี่ว่าสิ่งนี้เกิดขึ้นในโหมดจาวาสคริปต์


1
นี่เฉพาะโหมดเว็บหรือไม่ หรือมันเกิดขึ้นได้ทุกที่?
Malabarba

สิ่งนี้เกิดขึ้นเฉพาะในโหมดเว็บทุกอย่างจะมีแท็บที่ดีพร้อมเว้นวรรค
dieuwe

ขออภัยโหมด javascript ก็ทำเช่นเดียวกัน แต่มันก็แค่สองอัน
dieuwe

javascript-modeคุณกำลังใช้ตัวไหนอยู่ในตัว? นอกจากนี้สิ่งนี้จะเกิดขึ้นเมื่อเยื้อง HTML ในweb-modeหรือไม่
dgtized

กรุณาโพสต์เนื้อหาของไฟล์ init ของคุณ Emacs ใช้แท็บ 8 ช่องว่างตามค่าเริ่มต้นดังนั้นจะต้องมีบางอย่างในไฟล์ init ของคุณเพื่อปิดมันสำหรับโหมดส่วนใหญ่
Gilles 'หยุดความชั่วร้าย'

คำตอบ:


10

โดยทั่วไปหากคุณต้องการเยื้องการใช้ช่องว่างเท่านั้นฉันขอแนะนำให้ปรับแต่ง:

(setq-default indent-tabs-mode nil)

สิ่งนี้บังคับให้ย่อหน้าเพื่อใช้ช่องว่างและไม่มีแท็บ ฉันไม่แน่ใจว่าweb-modeใช้วิธีปกติสำหรับการเยื้องหรือไม่ดังนั้นจึงอาจไม่เคารพสิ่งนี้

คุณสามารถให้ไฟล์ตัวอย่างเพื่อสาธิตได้หรือไม่


3
ได้เพิ่มตัวอย่างให้กับคำถาม เพิ่ม(setq indent-tabs-mode nil)ดูเหมือนจะไม่เปลี่ยนแปลงอะไรทั้งในและweb-mode javascript-mode
dieuwe

3
ฉันคิดว่าคุณควรใช้setq-defaultเพราะindent-tabs-modeเป็นบัฟเฟอร์ในเครื่อง
nperson325681

@progo โอเคทำงานได้ ขอบคุณมาก.
dieuwe

1
เป็นไปได้ไหมที่จะเยื้องด้วยแท็บเท่านั้น? ฉันพยายามตั้งค่าที่แตกต่างกัน แต่มันเยื้องกับแท็บ / ช่องว่างแบบผสม
Dfr

1
@Dfr คุณควรเพิ่ม(setq-default indent-tabs-mode t)ใน.emacs
fxbois

3

โปรดลองใช้รหัสนี้ในไฟล์กำหนดค่า emacs ของคุณเพื่อบังคับให้เยื้องโหมดเว็บ ฉันเรียกมันจากหน้าแรกของโหมดเว็บ

(require 'web-mode)
(defun my-web-mode-hook ()
  "Hooks for Web mode."
  (setq web-mode-markup-indent-offset 2)
)
(add-hook 'web-mode-hook  'my-web-mode-hook)

สิ่งนี้จะใช้งานได้หรือไม่ (add-hook 'web-mode-hook (lambda () (setq web-mode-markup-indent-offset 2)))
Andrew Lamarra
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.