2013-12-12 14 views
6

Co jest nie tak z następującego kodu:błąd Emacs Lisp "Niewłaściwy typ argumentu: commandp"

(defun test 
    (interactive) 
    (message "hello")) 
(global-set-key '[f4] 'test) 

Przy ocenie tego z eval-region a następnie naciskając F4 pojawia się błąd:

Wrong type argument: commandp, test 
+4

Spróbuj '(defun test() ...)' z pustą listą parametrów. – uselpa

+0

Tak, działa. Dziękuję Ci bardzo! Możesz dać to jako odpowiedź, a ja to zaakceptuję. –

+0

Nie ma za co ;-) – uselpa

Odpowiedz

10

Brakuje listy argumentów funkcji test, więc Emacs interpretuje formularz (interactive) jako argument. W ten sposób zdefiniowano nieinteraktywną funkcję 1 argumentu zamiast interaktywnego polecenia bez argumentów.

Co chcesz to:

(defun test() 
    "My command test" 
    (interactive) 
    (message "hello")) 

Wnioski:

  1. Zawsze dodać ciąg DOC - jeśli nie, Emacs byłby skarżył
  2. Korzystając elint (pochodzi z Emacs, spróbuj Ch a elita RET).
+0

Dzięki za radę! –

+0

Gdzie mogę znaleźć informacje na temat 'elint'? –

+1

@ HåkonHægland: elint pochodzi z Emacsem, zobacz edycję – sds

Powiązane problemy