Menonaktifkan mode indentasi listrik hanya untuk satu mode (mode lateks)

11

Saya tidak suka cara mode indentasi listrik bekerja dalam mode lateks. Di tempat lain (setidaknya di mana pun saya menggunakan), itu bagus.

Bagaimana saya bisa menonaktifkan mode indentasi listrik hanya untuk mode lateks, tetapi menyimpannya di tempat lain?

Saya menduga ini adalah hack lisp satu-baris dalam file konfigurasi saya, atau sesuatu seperti itu, tapi saya mengerikan pada lisp, jadi saya tidak bisa mengetahuinya.

Toby Muhlhofer
sumber

Jawaban:

8

Perintah yang Anda butuhkan adalah electric-indent-local-mode. Anda dapat menggunakan ini untuk mematikan listrik-indent-mode dalam buffer apapun dengan menyebutnya manual: M-x electric-indent-local-mode. Ini adalah toggle, jadi memanggilnya lagi di buffer yang sama akan mengaktifkannya kembali.

Untuk melakukan ini secara otomatis dari file init Anda, Anda perlu mengatur sebuah hook. Pertama, tentukan kait:

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

Kemudian tambahkan ke mode kait yang sesuai. Untuk mematikan mode indentasi listrik untuk mode LaTeX yang disediakan oleh AUCTex, gunakan ini:

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

Untuk texmode default, gunakan:

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

Pola yang sama berlaku untuk mode lain yang Anda ingin mematikan lekukan listrik.

Untuk detail lebih lanjut tentang kait mode, lihat simpul manual Emacs bawaan [(emacs) Hooks][1]. Anda dapat sampai di sana dari Emacs melalui C-h i r m Hooks <enter>: C-huntuk bantuan, iuntuk info, runtuk membaca manual, muntuk item menu, dan Hooksuntuk memilih item menu. (atau Anda dapat mengikuti tautan di atas untuk melihat versi html).

Tyler
sumber
Anda tidak perlu mendefinisikan fungsi tambahan: (add-hook 'LaTeX-mode-hook (lambda () (electric-indent-local-mode -1)))cukup.
Emil Jeřábek
Benar, tetapi jika Anda mendefinisikan suatu fungsi, Anda dapat menggunakannya kembali di banyak kait berbeda tanpa kode duplikat. Ini juga lebih mudah untuk menghapus fungsi yang didefinisikan daripada yang anonim. Itu bisa berguna saat debugging
Tyler