Entfernen Sie die Haken für bestimmte Modi

12

Ich möchte nachfolgende Leerzeichen beim Speichern für jeden Modus außer löschen org-mode.

In meinem habe .emacsich die folgende Zeile:

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

Ich verwende das use-packageMakro und habe versucht, (remove-hook 'before-save-hook 'delete-trailing-whitespace)es meinem :configBlock hinzuzufügen , aber dadurch wird der Hook global entfernt. Wie kann ich es speziell für entfernen org-mode?

Matthew Piziak
quelle

Antworten:

17

Ich habe keine Erfahrung mit dem use-packageMakro, aber im Prinzip könnten Sie das dritte Argument verwenden, mit remove-hookdem es angewiesen wird, die Funktion nur aus dem lokalen Hook zu entfernen:

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

Hier ist die Dokumentzeichenfolge als Referenz:

(remove-hook HOOK FUNCTION &optional LOCAL)

Entfernen Sie aus dem Wert von HOOK die Funktion FUNCTION. HOOK sollte ein Symbol sein und FUNCTION kann eine beliebige gültige Funktion sein. Wenn FUNCTION nicht der Wert von HOOK ist oder wenn FUNCTION nicht in der Liste der Hooks angezeigt wird, die in HOOK ausgeführt werden sollen, wird nichts unternommen. Siehe add-hook.

Das optionale dritte Argument, LOCAL, wenn nicht Null, besagt, dass der pufferlokale Wert des Hooks anstelle seines Standardwerts geändert werden soll.

Dan
quelle
Funktioniert perfekt, danke. Eine weitere gute Erinnerung an C-h f. Ich werde akzeptieren, sobald der Timer abgelaufen ist.
Matthew Piziak
2
@MatthewPiziak: Wenn Sie sich dadurch besser fühlen, hat es sehr lange gedauert, bis mir klar wurde, dass dieses dritte Argument erforderlich war, und erst, nachdem mich jemand auf dieser Website darauf hingewiesen hat.
Dan
2
Funktioniert dies nicht nur, wenn die Funktion zunächst explizit als LOCAL hinzugefügt wurdeadd-hook ? (Ein schneller Test in 24.5 scheint meine Erwartung zu bestätigen ... gibt es neue Funktionen im Kofferraum, um diese Art der
Außerkraftsetzung