当我使用以下方法打开源代码文件时,我想根据编程语言运行一个函数。我必须将特定语言传递str
给foo
函数。怎么能在add-hook
声明中做到呢?
(defun foo (str)
(blahblah...))
(add-hook 'prog-mode-hook 'foo)
使用内置apply-partially
:
(add-hook 'prog-mode-hook (apply-partially #'foo "spam with eggs"))
这在手册中有描述(在谷歌上首次点击“emacs add-hook”):
(add-hook 'prog-mode-hook (lambda () (foo "foobarbaz")))
坏消息是模式挂钩通常没有任何参数。好消息是,手册的(emacs) Hooks部分对您的情况有以下说明:
大多数主要模式运行一个或多个“模式挂钩”作为初始化的最后一步。
所以,我自己没有测试它,但我很确定你可以编写一个通用的钩子来检查major-mode
变量并执行特定于模式的操作。