添加带参数的函数到钩子

RNA*_*RNA 2 lisp emacs elisp

当我使用以下内容打开源代码文件时,我想根据编程语言运行一个函数.我必须将特定str于语言的foo函数传递给函数.如何在add-hook声明中做到这一点?

(defun foo (str)
   (blahblah...))
(add-hook 'prog-mode-hook 'foo)
Run Code Online (Sandbox Code Playgroud)

lun*_*orn 7

使用内置apply-partially:

(add-hook 'prog-mode-hook (apply-partially #'foo "spam with eggs"))
Run Code Online (Sandbox Code Playgroud)


Chr*_*ung 5

在手册中有所描述(Google首次点击"emacs add-hook"):

(add-hook 'prog-mode-hook (lambda () (foo "foobarbaz")))
Run Code Online (Sandbox Code Playgroud)