Ich erhalte hier ein "Argument vom falschen Typ: commandp, (lambda nil (Vorwärtszeile 5))" ".
(global-set-key [?\M-n] (lambda () (forward-line 5)))
Was ist der Fehler? Ich bin mir ziemlich sicher, dass es einfach ist und mir fehlt etwas Offensichtliches.
Antworten:
global-set-key
erwartet einen interaktiven Befehl.(lambda () (interactive) (forward-line 5))
sollte funktionieren.Ist übrigens
C-h f commandp
ein ziemlich guter Ausgangspunkt für solche Fehler.quelle
(commandp)
Dokumentation funktionieren Lambda-Funktionen mit Top-Level-Aufruf zur(interactive)
Arbeit, aber wie kann ich eine Funktion definieren, mit(defun)
der dies funktionieren würde?Die richtige Form sollte dies sein -
Das Problem war, dass Sie vergessen haben zu setzen
(interactive)
(wie brendan erwähnte).Sie werden übrigens feststellen, dass ich die
(kbd)
Funktion zur Angabe der Schlüsselbindung verwendet habe. Diese Funktion ist immens nützlich, da Sie die Tastenkombinationen fast wörtlich setzen können.quelle
Ich habe diesen Fehler auch auf einem neuen Computer gesehen, auf dem ich meine übliche
.emacs
Datei verwende, aber meine Pakete nicht installiert habe, und der auszuführende Befehl befindet sich in einem dieser Pakete. (Weil ein Befehl, der definitiv nicht ausgeführt werden kann, definitiv nicht interaktiv ist!)quelle