2009-07-19 83 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

相關問題