我的GNU Emacs配置中有一行,用于在保存时清除空白:
(add-hook 'before-save-hook 'whitespace-cleanup)如何防止它在特定模式下运行(例如Makefile模式)?
发布于 2014-10-02 07:42:59
除了在条件中给出的模式之外,以下定义将在模式中运行whitespace-cleanup:
(defun elektito/whitespace-cleanup ()
(when (not (derived-mode-p 'makefile-mode))
(whitespace-cleanup)))
(add-hook 'before-save-hook 'elektito/whitespace-cleanup)这使用derived-mode-p来检查当前模式,而不是直接比较,正如您提到的makefile,makefile使用了许多稍微不同的模式,所有这些模式都是从makefile-mode派生的。derived-mode-p接受多个参数来检查不同的父模式。
(注:使用(unless COND EXPR)代替(when (not COND) EXPR)__是可能的,但我发现它的可读性较低;您可能有不同的首选项。)
https://stackoverflow.com/questions/26155536
复制相似问题