2009-07-19 81 views
2

我想添加一个我创建的钩子函数,但显而易见的(对我的Schemer心灵)似乎并不奏效。该函数在2个地方使用,我想保持我的代码干,所以没有匿名函数。虽然我可以用lambda包装我的函数,但一定有更好的方法。如何在Emacs Lisp中将函数作为参数传递?

不起作用:

(defun my-function() 
    ;; do my stuff) 

(add-hook 'some-hook-list my-function) 

我得到的错误信息:

符号的可变值是无效的: 我的功能

+2

的Emacs Lisp是一个Lisp-2,而不是口齿不清-1类似方案。函数在它们自己的命名空间中。 – jrockway 2009-07-19 09:42:37

回答

6

我想通了。这很简单。只是引用功能:

固定码: (defun定义我的功能() ;;做我的东西)

(add-hook 'some-hook-list 'my-function) ;;; There's a quote before my-function 
+2

要明确'foo是(函数foo)的简写(这与elisp中的(引用foo)相同,但不是像CL那样的其他lisp-2)。 – jrockway 2009-07-19 09:43:43

相关问题