Не удалось определить карту ключей основного режима 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)

Все работало нормально

Другие вопросы по тегам