Saya memiliki foo-mode dan akan mengaktifkan bar-minor-mode untuk itu. Jadi, jalan mana yang lebih umum dan disukai?
SEBUAH
(add-hook 'foo-mode-hook 'bar-minor-mode)
B
(add-hook 'foo-mode-hook (lambda ()
"Turn on `bar-minor-mode' mode."
(bar-minor-mode 1)))
C
(defun bar-minor-mode-on ()
"Turn on `bar-minor-mode' mode."
(interactive)
(bar-minor-mode 1))
(add-hook 'foo-mode-hook 'bar-minor-mode-on)
D
• varian C, tetapi fungsinya didorong ke hulu
E
• varian C, tetapi fungsinya disimpan dalam resep plugin
hooks
minor-mode
Netsu
sumber
sumber
Jawaban:
Itu tergantung pada versi Emacs yang Anda gunakan (atau targetkan). Jika Anda secara eksklusif menggunakan Emacs 24+ maka Anda dapat menggunakan varian A dengan aman:
Itu dari file NEWS, tetapi sesuai komentar, praktik yang baik untuk menggunakan fungsi-mengutip untuk simbol fungsi, seperti:
Jika kode mungkin perlu dijalankan di bawah Emacs 23 (atau sebelumnya), maka saya akan menggunakan varian C, karena secara pribadi saya tidak suka melihat fungsi anonim dalam variabel hook. (Saya tidak yakin saya mengerti apa yang Anda maksud dengan varian D & E, pikiran).
sumber
Berikut ini satu lagi cara untuk melakukannya yang memiliki beberapa kelebihan, dengan asumsi Anda sedang mengedit konfigurasi Anda sendiri, bukan paket yang Anda bagikan.
Keuntungannya adalah bahwa segala sesuatu disimpan dalam satu kait, jadi untuk menonaktifkan beberapa hal, Anda tidak harus melakukannya
remove-hook
, tetapi berikan komentar pada beberapacustom-foo-hook
dan C-M-x.Anda bahkan dapat menulis perintah yang melompat dari mode apa saja ke pengait khusus.
sumber
add-hook
pernyataan untuk setiap mode minor untuk diaktifkan. Saya ingin menekankan bahwa hanya memiliki satuadd-hook
pernyataan adalah keuntungan.Mengapa Anda mendefinisikan perintah baru yang melakukan persis apa
bar-minor-mode
?Dimulai dengan 24.1, semua ini sepenuhnya setara, jadi gunakan saja yang kurang redundan: opsi A
sumber