Mam foo-mode i pozwoliłoby bar-moll-mode dla niego. Który sposób jest bardziej powszechny i preferowany?
ZA
(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)))
do
(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)
re
• wariant C, ale funkcja przesunięta do góry
mi
• wariant C, ale funkcja zapisana w recepturze wtyczki
hooks
minor-mode
Netsu
źródło
źródło
Odpowiedzi:
To zależy od tego, której wersji Emacsa używasz (lub kierujesz reklamy). Jeśli używasz wyłącznie Emacsa 24+, możesz bezpiecznie używać wariantu A:
Pochodzi z pliku NEWS, ale zgodnie z komentarzami dobrą praktyką jest stosowanie cytowania funkcji dla symboli funkcji, na przykład:
Jeśli kod może wymagać uruchomienia pod Emacsem 23 (lub wcześniejszym), wybrałbym wariant C, ponieważ osobiście nie lubię widzieć anonimowych funkcji w zmiennych hook. (Nie jestem pewien, czy rozumiem, co masz na myśli przez warianty D i E, umysł).
źródło
Oto jeszcze jeden sposób na zrobienie tego, który ma pewne zalety, zakładając, że edytujesz własną konfigurację, a nie pakiet, który dystrybuujesz.
Zaletą jest to, że wszystko jest przechowywane w jednym haku, więc aby wyłączyć niektóre rzeczy, nie musisz tego robić
remove-hook
, ale zamiast tego komentować niektóre rzeczy wcustom-foo-hook
i C-M-x.Możesz nawet napisać polecenie, które przeskakuje z dowolnego trybu do niestandardowego zaczepu.
źródło
add-hook
włączenie wielu instrukcji dla każdego trybu podrzędnego. Chciałem podkreślić, że posiadanie tylko jednegoadd-hook
oświadczenia jest zaletą.Dlaczego miałbyś zdefiniować nowe polecenie, które robi dokładnie to, co
bar-minor-mode
robi?Począwszy od 24.1, wszystkie są całkowicie równoważne, więc po prostu użyj mniej zbędnego: opcja A.
źródło