91 votes

Erreur "Wrong type argument: commandp" lors de la liaison d'un lambda à une clé

Je reçois un "Argument de type incorrect: commandp, (lambda nil (ligne suivante 5))" ici.

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

Quelle est l'erreur? Je suis assez sûr que c'est simple et il me manque quelque chose d'évident.

135voto

brendan Points 1382

global-set-key attend une commande interactive. (lambda () (interactive) (forward-line 5)) devrait fonctionner.

À propos, C-h f commandp est un très bon point de départ pour de telles erreurs.

37voto

Baishampayan Ghose Points 9414

La forme correcte devrait être ceci -

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

Le problème était que vous avez oublié de mettre (interactive) (comme Brendan l'a mentionné).

En passant, vous remarquerez que j'ai utilisé la fonction (kbd) pour spécifier la liaison de clé. Cette fonction est extrêmement utile car vous pouvez utiliser les raccourcis-clavier presque littéralement.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X