J'obtiens un «argument de type incorrect: commandp, (lambda nil (forward-line 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 qu'il me manque quelque chose d'évident.
J'obtiens un «argument de type incorrect: commandp, (lambda nil (forward-line 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 qu'il me manque quelque chose d'évident.
Réponses:
global-set-key
attend une commande interactive. (lambda () (interactive) (forward-line 5))
devrait fonctionner.
Au fait, C-h f commandp
c'est un très bon point de départ pour des erreurs comme celle-là.
(commandp)
documentation, les fonctions lambda avec un appel au plus haut niveau (interactive)
fonctionnent, mais comment puis-je définir une fonction avec (defun)
qui fonctionnerait?
La forme correcte devrait être celle-ci -
(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é).
Au fait, vous remarquerez que j'ai utilisé la (kbd)
fonction pour spécifier le raccourci clavier. Cette fonction est extrêmement utile car vous pouvez mettre les raccourcis clavier presque littéralement.
J'ai également vu cette erreur sur une nouvelle machine où j'utilise mon .emacs
fichier habituel mais je n'ai pas installé mes packages, et la commande à exécuter se trouve dans l'un de ces packages. (Parce qu'une commande qui ne peut pas être exécutée n'est certainement pas interactive!)