Ich habe Foo-Modus und würde Bar-Moll-Modus dafür aktivieren . Welcher Weg ist also üblicher und vorzuziehen?
EIN
(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
• Variante C, aber die Funktion wurde nach oben verschoben
E
• Variante C, aber die Funktion ist im Rezept des Plugins gespeichert
hooks
minor-mode
Netsu
quelle
quelle
Antworten:
Es hängt davon ab, welche Version (en) von Emacs Sie verwenden (oder welche Ausrichtung Sie verwenden). Wenn Sie ausschließlich Emacs 24+ verwenden, können Sie Variante A sicher verwenden:
Das ist aus der NEWS-Datei, aber gemäß den Kommentaren ist es eine gute Praxis, Funktionszitate für Funktionssymbole zu verwenden, wie folgt:
Wenn der Code unter Emacs 23 (oder früher) ausgeführt werden muss, würde ich Variante C wählen, da ich anonyme Funktionen in Hook-Variablen nicht mag. (Ich bin mir nicht sicher, ob ich verstehe, was Sie mit den Varianten D & E meinen.)
quelle
Hier ist eine weitere Möglichkeit, die einige Vorteile bietet, vorausgesetzt, Sie bearbeiten Ihre eigene Konfiguration und nicht ein Paket, das Sie verteilen.
Der Vorteil ist, dass alles in einem Hook gespeichert ist. Um also einiges zu deaktivieren, müssen Sie nichts tun
remove-hook
, sondern einiges incustom-foo-hook
und kommentieren C-M-x.Sie können sogar einen Befehl schreiben, der von einem beliebigen Modus zu seinem benutzerdefinierten Hook springt.
quelle
add-hook
Anweisungen für jeden zu aktivierenden Nebenmodus. Ich wollte betonen, dass es vonadd-hook
Vorteil ist , nur eine Aussage zu haben.Warum sollten Sie einen neuen Befehl definieren, der genau das
bar-minor-mode
tut , was er tut?Ab 24.1 sind alle gleich, verwenden Sie also einfach die weniger redundante: Option A
quelle