ปิดใช้งานโหมดการเยื้องไฟฟ้าสำหรับหนึ่งโหมด (โหมดลาเท็กซ์) เท่านั้น


11

ฉันไม่ชอบวิธีที่โหมดการเยื้องไฟฟ้าในโหมดลาเท็กซ์ ทุกที่อื่น (อย่างน้อยทุกที่ที่ฉันใช้) มันยอดเยี่ยม

ฉันจะปิดใช้งานโหมดการเยื้องไฟฟ้าอย่างถาวรสำหรับโหมดลาเท็กซ์เท่านั้น แต่เก็บไว้ที่อื่นได้อย่างไร

ฉันเดาว่ามันเป็นแฮ็คเสียงกระเพื่อมหนึ่งบรรทัดในไฟล์ปรับแต่งของฉันหรืออะไรทำนองนั้น แต่ฉันก็น่ากลัวที่เสียงกระเพื่อมดังนั้นฉันจึงไม่เข้าใจ

คำตอบ:


8

electric-indent-local-modeคำสั่งที่คุณต้องการก็คือ คุณสามารถใช้เพื่อปิดไฟฟ้าเยื้องโหมดในบัฟเฟอร์ใด ๆ M-x electric-indent-local-modeโดยเรียกมันว่าตนเอง: นี่คือการสลับดังนั้นการเรียกมันอีกครั้งในบัฟเฟอร์เดียวกันจะเปิดอีกครั้ง

ในการทำสิ่งนี้โดยอัตโนมัติจากไฟล์ init ของคุณคุณต้องตั้งค่า hook ก่อนกำหนด hook:

(defun remove-electric-indent-mode ()
  (electric-indent-local-mode -1))

จากนั้นเพิ่มลงใน hooks โหมดที่เหมาะสม ในการปิดโหมด electric-indent สำหรับโหมด LaTeX ที่ AUCTex จัดทำให้ใช้:

(add-hook 'LaTeX-mode-hook 'remove-electric-indent-mode)

สำหรับ texmode เริ่มต้นให้ใช้:

(add-hook 'tex-mode-hook 'remove-electric-indent-mode)

รูปแบบเดียวกันนี้ใช้สำหรับโหมดอื่น ๆ ที่คุณต้องการปิดการเยื้องไฟฟ้า

สำหรับรายละเอียดเพิ่มเติมเกี่ยวกับโหมด hooks ดูที่โหนดคู่มือ Emacs ใน[(emacs) Hooks][1]ตัว คุณสามารถไปถึงได้จาก Emacs ผ่านC-h i r m Hooks <enter>: C-hเพื่อขอความช่วยเหลือiขอข้อมูลrอ่านคู่มือmสำหรับรายการเมนูและHooksเลือกรายการเมนู (หรือคุณสามารถไปที่ลิงค์ด้านบนเพื่อดูเวอร์ชั่น html)


คุณไม่จำเป็นต้องกำหนดฟังก์ชั่นพิเศษ: (add-hook 'LaTeX-mode-hook (lambda () (electric-indent-local-mode -1)))พอเพียง
Emil Jeřábek

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