运行带有参数的函数的最佳方法是什么,例如。通常可以在普通钩子中与run-hook-with-args
一起运行的一个钩子,例如。 after-save-hook
。
作为一个简单的示例,我想在此处将some-function
添加到after-save-hook
,但允许它有一个附加参数。
(defun some-function (&optional arg)
(if arg 'do-this 'otherwise-do-this))
;; how to run `some-function' with argument here?
(add-hook 'after-save-hook 'some-function nil 'local)
答案 0 :(得分:2)
因此,您已经得到了类似的信息(我更改了函数名称,以减少混乱)。
(add-hook 'after-save-hook 'my-function nil 'local)
但是您要问的是,after-save-hook
调用my-function
时如何安排它传递一个参数。
首先,由于after-save-hook
是一个普通的钩子,因此无法直接进行操作,因此无法以任何方式传递参数来运行它。
这意味着您必须向钩子添加一个功能,该功能实际上可以执行您想要的操作。
您可以创建一个函数来实现您想要的功能:
(add-hook 'after-save-hook (apply-partially 'my-function ARG) nil 'local)
但是,在以后检查和操纵钩子时,遵循这些思路的方法确实很混乱,因此,我建议不要做这样的事情。
老实说,最干净的方法是非常简单地定义一个可以执行所需功能的命名函数,并将 that 添加到挂钩中。
(defun my-function-do-this ()
"Do This"
'do-this)
(add-hook 'after-save-hook 'my-function-do-this nil 'local)