2

当我使用以下方法打开源代码文件时,我想根据编程语言运行一个函数。我必须将特定语言传递strfoo函数。怎么能在add-hook声明中做到呢?

(defun foo (str)
   (blahblah...))
(add-hook 'prog-mode-hook 'foo)
4

3 回答 3

8

使用内置apply-partially

(add-hook 'prog-mode-hook (apply-partially #'foo "spam with eggs"))
于 2013-05-24T08:39:15.727 回答
5

在手册中有描述(在谷歌上首次点击“emacs add-hook”):

(add-hook 'prog-mode-hook (lambda () (foo "foobarbaz")))
于 2013-05-24T03:06:49.007 回答
0

坏消息是模式挂钩通常没有任何参数。好消息是,手册的(emacs) Hooks部分对您的情况有以下说明:

大多数主要模式运行一个或多个“模式挂钩”作为初始化的最后一步。

所以,我自己没有测试它,但我很确定你可以编写一个通用的钩子来检查major-mode变量并执行特定于模式的操作。

于 2013-05-24T07:51:17.057 回答