2009-07-19 5 views
2

Я пытаюсь добавить функцию, которую я создал, к крюку, но очевидный (по моему мнению ум) не работает. Функция используется в 2-х местах, и я хочу сохранить код DRY, чтобы не было анонимной функции. Хотя я мог бы обернуть свою функцию в лямбда, должен быть лучший способ.Как передать функцию в качестве параметра в Emacs Lisp?

Не работает:

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

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

Я получаю сообщение об ошибке:

значение символа как переменной является недействительным: моя функция

+2

Emacs Lisp является шепелявость-2, а не сюсюкать-1, как на схеме. Функции находятся в собственном пространстве имен. – jrockway

ответ

6

Я понял это. Это довольно просто. Просто процитирую функцию:

Фиксированный код: (Defun мой-функции() ;; сделать свой материал)

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

Чтобы быть понятным, foo является сокращением для (function foo) (что совпадает с (quote foo) в elisp, но не в других lisp-2 типа CL). – jrockway

+0

# 'Моя функция является более популярной. – andrewdotn

Смежные вопросы