Я отримую тут "Неправильний аргумент типу: commandp, (лямбда-нуль (прямий рядок 5))" тут.
(global-set-key [?\M-n] (lambda () (forward-line 5)))
У чому помилка? Я впевнений, що це просто, і я пропускаю щось очевидне.
Я отримую тут "Неправильний аргумент типу: commandp, (лямбда-нуль (прямий рядок 5))" тут.
(global-set-key [?\M-n] (lambda () (forward-line 5)))
У чому помилка? Я впевнений, що це просто, і я пропускаю щось очевидне.
Відповіді:
global-set-key
очікує інтерактивної команди. (lambda () (interactive) (forward-line 5))
повинен працювати.
До речі, C-h f commandp
це досить гарна відправна точка для таких помилок.
(commandp)
документацією, лямбда-функції із викликом до (interactive)
роботи верхнього рівня , але як я можу визначити функцію, (defun)
яка б працювала?
Правильна форма повинна бути такою -
(global-set-key (kbd "M-n") (lambda () (interactive) (forward-line 5)))
Проблема полягала в тому, що ви забули поставити (interactive)
(як згадував Брендан).
До речі, ви помітите, що я використовував (kbd)
функцію для визначення прив'язки ключів. Ця функція надзвичайно корисна, оскільки ви можете помістити прив'язки клавіш майже буквально.
Я також бачив цю помилку на новій машині, де я використовую свій звичайний .emacs
файл, але не встановив свої пакунки, і команда, яку потрібно виконати, знаходиться в одному з цих пакетів. (Оскільки команда, яку неможливо виконати, точно не є інтерактивною!)