Ricevo "un argomento di tipo errato: commandp, (lambda nil (forward-line 5))" qui.
(global-set-key [?\M-n] (lambda () (forward-line 5)))
Qual è l'errore? Sono abbastanza sicuro che sia semplice e mi manca qualcosa di ovvio.
Ricevo "un argomento di tipo errato: commandp, (lambda nil (forward-line 5))" qui.
(global-set-key [?\M-n] (lambda () (forward-line 5)))
Qual è l'errore? Sono abbastanza sicuro che sia semplice e mi manca qualcosa di ovvio.
Risposte:
global-set-key
si aspetta 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.
(commandp)
documentazione, le funzioni lambda con chiamata di primo livello (interactive)
funzionano, ma come posso definire una funzione con (defun)
quella funzionerebbe?
La forma corretta dovrebbe essere questa:
(global-set-key (kbd "M-n") (lambda () (interactive) (forward-line 5)))
Il problema era che ti sei dimenticato di mettere (interactive)
(come ha detto Brendan).
A proposito, noterai che ho usato la (kbd)
funzione per specificare l'associazione dei tasti. Questa funzione è immensamente utile poiché puoi inserire le associazioni di tasti quasi letteralmente.
Ho anche visto questo errore su una nuova macchina in cui sto usando il mio solito .emacs
file ma non ho installato i miei pacchetti e il comando da eseguire è in uno di quei pacchetti. (Perché un comando che non può essere eseguito sicuramente non è interattivo!)