Не удалось определить карту ключей основного режима Emacs
Итак, я попытался написать простой основной режим (режим отчета), используя в качестве примера. Кажется, у меня все работает, за исключением того, что раскладка клавиатуры фактически не отображается.
Если я сделаю C-h f report-mode
Я правильно вижу список ключевых карт с добавлением, которое я сделал, а именно:
ESC n kill-dupe
Однако, когда я иду на ИСПОЛЬЗОВАНИЕ Mn или ESC n, ничего не происходит. Я могу вручную вызвать функцию через M-x kill-dupe
так что, похоже, это не проблема.
К сожалению, поскольку компьютер находится в другой сети, я не могу скопировать и вставить фактический код elisp.
Я могу скопировать в конкретном примере, который я использовал (и сделать подстановки):
(defvar report-mode-map
(let ((map (make-sparse-keymap "Report-Mode")))
(define-key map "\M-n" 'kill-dupe)
map)
"Keymap for browsing report mode")
который идет отсюда.
Если я исследую report-mode-map, я вижу то, что выглядит в основном правильно, за исключением того, что у него есть дополнительные ключевые слова: keymap
в:
(keymap (27 keymap (110 . kill-dupe)) keymap (....) "Report-Map" (....))
Если я сравню это, скажем, с text-mode-map, то в него будет встроена строка определения sparse-key-map и дополнительные строки 'keymap'. Если я оценю (keymapp report-mode-map)
Я получаю результат true, так что это может показаться, что другой формат не проблема...
Наконец, я уверен, что это проблема, потому что ни одна из других привязок клавиш не работает.
Любые идеи будут великолепны. Еще раз извините за то, что не смогли напрямую пройти код.
1 ответ
Итак, я нашел ответ.
Оказывается, я в define-derived-mode
Я никогда не вызывал use-local-map
на моей карте ключей.
однажды я включил:
(use-local-map report-mode-map)
Все работало нормально