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