我創建一個簡單的宏禁用顯示在某些主要模式尾隨空白(我會在後面循環中dolist循環這個宏):產生的Emacs Lisp宏引用符號
(defmacro non-trailing-whitespaces-modes (mode)
(let ((hook (intern (concat mode "-mode-hook"))))
`(add-hook ,hook (lambda() (setq show-trailing-whitespace nil)))))
這macroexpand後:(macroexpand '(non-trailing-whitespaces-modes "eshell"))
,結果是
(add-hook eshell-mode-hook
(lambda nil
(setq show-trailing-whitespace nil)))
我想eshell-mode-hook
是'eshell-mode-hook
,否則會引起錯誤。
所以添加缺少的'''的宏代碼。 – phils
鉤子中的匿名lambdas並不好:很難修改/刪除它們而沒有名稱。 我更喜歡每種模式的專用命名鉤子函數。 –
它的工作原理。我認爲把'''加入',hook'使其成爲引用。 – Amumu