Ошибка неправильного типа: commandp "при привязке лямбды к ключу

Я получаю "Неверный аргумент типа: commandp, (lambda nil (forward-line 5))" здесь.

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

Какая ошибка? Я уверен, что это просто, и я пропускаю что-то очевидное.

Ответ 1

global-set-key ожидает интерактивную команду. (lambda () (interactive) (forward-line 5)) должен работать.

Кстати, C-h f commandp является довольно хорошей отправной точкой для таких ошибок.

Ответ 2

Правильная форма должна быть такой -

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

Проблема заключалась в том, что вы забыли поставить (interactive) (как упоминал Брендан).

Кстати, вы заметите, что я использовал функцию (kbd) для указания привязки ключа. Эта функция очень полезна, так как вы можете поместить привязки клавиш почти буквально.