Hanya aktifkan mode spasi putih di buffer tertentu


8

Saya ingin agar mode spasi diaktifkan untuk semua buffer kecuali untuk mode-org. Sangat mudah untuk melakukan ini ketika emacs dimulai, tetapi karena saya menggunakan salinan emacs yang persisten dengan mode daemon emacs, saya tidak bisa begitu saja melakukannya.

Saya mencoba:

(require 'whitespace)
(setq whitespace-line-column 80)
(setq whitespace-style '(face lines-tail))
(global-whitespace-mode t)
(add-hook 'org-mode-hook
      (lambda ()
          (visual-line-mode 1)
          (auto-fill-mode -1)
          (setq whitespace-style nil)))

tetapi begitu saya mengunjungi buffer mode-org semua buffer masa depan saya tidak memiliki mode spasi putih lagi.

Saya berpikir untuk menambahkan pengait untuk mengaktifkan mode spasi putih untuk mode-mode besar lainnya, tapi itu sepertinya cara yang buruk karena saya tidak ingin menyebutkan semua mode lain yang mungkin.

Saya tahu bahwa ada mode spasi putih bersama dengan mode spasi global, tapi saya tidak yakin bagaimana saya bisa menggunakannya untuk membantu di sini juga.

Apakah ada cara lain untuk mencapai hal ini yang tidak saya pikirkan?


3
Anda dapat mengubah global-whitespace-modedefinisi dengan menambahkan (unless (eq major-mode 'org-mode) . . .). Atau, Anda dapat mengaktifkannya pada per mode-utama alih-alih secara global - yaitu, untuk setiap mode-besar, gunakan kail dan (whitespace-mode 1). Ide Anda juga dapat berfungsi jika Anda menggunakan (setq-local whitespace-style nil), tetapi secara teknis mode ini masih aktif hanya dengan nyali / umph yang dikeluarkan.
hukum


Poin bagus tentang lambda yang dikutip. Tidak yakin bagaimana atau mengapa saya berakhir dengan cara itu tetapi saya menghapusnya dari .emacs saya. Terima kasih.
jcv

Jawaban:


17
(setq whitespace-global-modes '(not org-mode))

Lihat C-hv whitespace-global-modes RET


Itu bekerja dengan sempurna. Terima kasih. Saya tahu harus ada sesuatu yang sederhana yang saya lewatkan.
jcv

4

Mungkin lebih mudah untuk mematikan mode spasi langsung, menggunakan

 (whitespace-mode -1)

Juga, whitespace-stylebukan variabel penyangga-lokal, sehingga dimodifikasi untuk semua penyangga lainnya juga. Coba saja

(set (make-local-variable 'whitespace-style) nil)

Saya sebenarnya awalnya mematikan mode spasi langsung dari pada repot-repot dengan var gaya putih. Itu hanya iterasi saat ini dari upaya saya. Saya akan mencoba apa yang disarankan orang dan kemudian memperbarui ini dengan apa yang berhasil untuk saya.
jcv

Ini sebenarnya bekerja juga, tetapi ketika Anda berkomentar sendiri, langsung mematikan mode spasi daripada berurusan dengan gaya adalah solusi yang lebih baik (yang jawabannya di atas tidak).
jcv
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.