Hapus kait untuk mode tertentu

12

Saya ingin menghapus spasi kosong di save untuk setiap mode kecuali org-mode.

Di saya .emacs, saya memiliki baris berikut:

(add-hook 'before-save-hook 'delete-trailing-whitespace)

Saya menggunakan use-packagemakro, dan saya mencoba menambahkan (remove-hook 'before-save-hook 'delete-trailing-whitespace)ke :configblok saya , tetapi itu menghilangkan kait secara global. Bagaimana cara menghapusnya secara khusus org-mode?

Matthew Piziak
sumber

Jawaban:

17

Saya tidak punya pengalaman dengan use-packagemakro, tetapi pada prinsipnya, Anda bisa menggunakan argumen ketiga remove-hookyang mengatakannya untuk menghapus fungsi hanya dari kait lokal:

(remove-hook 'before-save-hook 'delete-trailing-whitespace t)

Inilah docstring untuk referensi:

(remove-hook HOOK FUNCTION &optional LOCAL)

Hapus dari nilai fungsi fungsi FUNGSI. HOOK harus menjadi simbol, dan FUNGSI mungkin merupakan fungsi yang valid. Jika FUNCTION bukan nilai HOOK, atau, jika FUNCTION tidak muncul dalam daftar kait untuk dijalankan di HOOK, maka tidak ada yang dilakukan. Lihat add-hook.

Argumen opsional ketiga, LOCAL, jika bukan nol, mengatakan untuk memodifikasi nilai buffer-local hook daripada nilai defaultnya.

Dan
sumber
Berfungsi dengan sempurna, terima kasih. Pengingat yang bagus untuk C-h f. Saya akan menerima segera setelah timer habis.
Matthew Piziak
2
@ MatthewPiziak: jika itu membuat Anda merasa lebih baik, butuh waktu sangat lama sebelum saya menyadari bahwa butuh argumen ketiga, dan hanya setelah seseorang di situs ini menunjukkannya kepada saya.
Dan
2
Bukankah ini hanya akan berfungsi jika fungsi secara eksplisit ditambahkan sebagai LOCAL add-hookuntuk memulai? (Tes cepat dalam 24,5 tampaknya untuk mengkonfirmasi harapan saya ... apakah ada fungsi baru di bagasi untuk memfasilitasi pengesampingan semacam ini?)
phils