请教,
比如只在 org-mode 和 markdown-mode 中才实现某功能,分别 add-hook 然后 lambda 好几行。
如果后面的都一样,应该如何实现?
我试了这样:
(add-hook 'org-mode-hook #'markdown-mode-hook
'(lambda ()
........)
)
可是在 spacemacs 里提示 Symbol's function definition is void: markdown-mode-hook
,
无论加不加 # 都是这样。
(add-hook 'org-mode-hook markdown-mode-hook
'(lambda ()
........))
(dolist (hook '(org-mode-hook markdown-mode-hook))
(add-hook hook
'(lambda ()
........)))
1 个赞
给你的功能起个名字,要比 lambda
好很多
- 方便
remove-hook
-
C-h v org-mode-hook
更友好的结果
- 方便更新(用函数名只需要重现定义
C-M-x
函数即可,用 lambda
需要先 remove-hook
,然后再 add-hook
)
- etc
另外,lambda
不需要 quote
。
除了 @Samray 所说的,你也可以把你的 lambda
放到变量里,再一一绑定
(let ((func (lambda () (message "Do something"))))
(add-hook 'foo-hook func)
(add-hook 'bar-hook func))
3 个赞