2009-07-19 7 views
2

J'essaye d'ajouter une fonction que j'ai créée à un crochet, mais la manière évidente (à mon esprit de Schemer) ne semble pas fonctionner. La fonction est utilisée à 2 endroits et je veux garder mon code DRY donc pas de fonction anonyme. Bien que je puisse envelopper ma fonction dans un lambda, il doit y avoir un meilleur moyen.Comment transmettre une fonction en tant que paramètre dans Emacs Lisp?

ne fonctionne pas:

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

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

Je reçois le message d'erreur:

valeur de symbole comme variable est vide: ma fonction

+2

Emacs Lisp est un Lisp-2, pas un Lisp-1 comme schéma. Les fonctions sont dans leur propre espace de noms. – jrockway

Répondre

6

I figured it out. C'est plutôt simple. Il suffit de citer la fonction:

Code fixe: (defun my-function() ;; faire mes affaires)

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

Pour être clair 'foo est un raccourci pour (fonction foo) (qui est le même que (quote foo) dans elisp, mais pas dans d'autres lisp-2 comme CL). – jrockway

+0

# 'ma-fonction est lispier. – andrewdotn

Questions connexes