我正在创建一个简单的宏来禁用某些主要模式下的show trailing whitespace(我稍后会在dolist循环中循环这个宏):
(defmacro non-trailing-whitespaces-modes (mode)
(let ((hook (intern (concat mode "-mode-hook"))))
`(add-hook ,hook (lambda () (setq show-trailing-whitespace nil)))))
在此宏展开后:(macroexpand '(non-trailing-whitespaces-modes "eshell"))
,结果为
(add-hook eshell-mode-hook
(lambda nil
(setq show-trailing-whitespace nil)))
我希望eshell-mode-hook
为'eshell-mode-hook
,否则会导致错误。
答案 0 :(得分:2)
只需更改宏的正文即可开始(add-hook ',hook ...)
答案 1 :(得分:2)
不需要宏,这里:
(defun non-trailing-whitespaces-modes (mode)
(let ((hook (intern (concat mode "-mode-hook"))))
(add-hook hook (lambda () (setq show-trailing-whitespace nil)))))