卸下特定模式的挂钩


12

我想在除之外的所有模式下删除尾随空格org-mode

在我的.emacs,我有以下一行:

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

我使用了use-package宏,并尝试将其添加(remove-hook 'before-save-hook 'delete-trailing-whitespace):config块中,但这会全局删除该钩子。我如何专门删除它org-mode

Answers:


17

我对use-package宏没有任何经验,但是原则上,您可以使用第三个参数remove-hook,告诉它仅从本地挂钩中删除函数:

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

这是文档字符串供参考:

(remove-hook HOOK FUNCTION &optional LOCAL)

从HOOK的值中删除功能FUNCTION。HOOK应该是一个符号,而FUNCTION可以是任何有效函数。如果FUNCTION不是HOOK的值,或者如果FUNCTION没有出现在要在HOOK中运行的钩子列表中,则不会执行任何操作。请参阅add-hook

可选的第三个参数LOCAL(如果不为nil)表示修改钩子的缓冲区局部值,而不是其默认值。


完美运行,谢谢。再次提醒您C-h f。计时器一到,我就会接受。
马修·皮兹亚克

2
@MatthewPiziak:如果让您感觉更好,我花了很长时间才意识到它接受了第三个论点,而且只是在该站点上有人向我指出之后。

2
仅当函数最初以LOCAL形式显式添加时,这才行得通add-hook吗?(在24.5中进行的快速测试似乎证实了我的期望...主干中是否有新功能可以促进这种覆盖?)
phils 2015年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.