2009-08-09 14 views
64

Otrzymuję "Wrong type argument: commandp, (lambda zero (forward-line 5))" tutaj.Błąd "Wrong type argument: commandp" podczas wiązania lambda z kluczem

(global-set-key [?\M-n] (lambda() (forward-line 5))) 

Jaki jest błąd? Jestem całkiem pewna, że ​​to proste & Brakuje mi czegoś oczywistego.

+0

Brakuje zamkniętych nawiasów. Prawdopodobnie nie w twoim kodzie, tylko w pytaniu. – hsribei

+0

Na marginesie: jeśli podasz tę anonimową funkcję, nie zostanie ona skompilowana. Wyobrażam sobie, że w twoim przypadku to nic wielkiego. –

Odpowiedz

96

global-set-key oczekuje interaktywnego polecenia. (lambda() (interactive) (forward-line 5)) powinien działać.

Przy okazji, C-h f commandp jest całkiem dobrym punktem wyjścia do takich błędów.

30

Poprawna forma powinna być ta -

(global-set-key (kbd "M-n") (lambda() (interactive) (forward-line 5))) 

Problem polegał na tym, że zapomniał umieścić (interactive) (jak wspomniano Brendan).

Nawiasem mówiąc, zauważysz, że użyłem funkcji (kbd) do określenia wiązania klawiszy. Ta funkcja jest niezmiernie użyteczna, ponieważ możesz dosłownie umieścić powiązania klawiszy.

Powiązane problemy