2009-08-09 12 views
64

Mi viene restituito un "Argomento di tipo errato: commandp, (lambda nil (forward-line 5))" qui.Errore "argomento tipo errato: commandp" quando si associa un lambda a una chiave

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

Qual è l'errore? Sono abbastanza sicuro che sia semplice & Mi manca qualcosa di ovvio.

+0

Ti manca una parentesi chiusa. Probabilmente non nel tuo codice, però, solo nella domanda. – hsribei

+0

Come nota a margine: quando si cita la funzione anonima come quella non verrà compilata. Immagino che non sia un grosso problema nel tuo caso, però. –

risposta

96

global-set-key prevede un comando interattivo. (lambda() (interactive) (forward-line 5)) dovrebbe funzionare.

A proposito, C-h f commandp è un buon punto di partenza per errori del genere.

30

La forma corretta dovrebbe essere questo -

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

Il problema è che si è dimenticato di mettere (interactive) (come detto Brendan).

A proposito, si noterà che ho utilizzato la funzione (kbd) per specificare l'associazione di chiavi. Quella funzione è immensamente utile dal momento che puoi mettere le associazioni dei tasti quasi alla lettera.

Problemi correlati