So, I found the answer.
Turns out I in define-derived-mode
I never invoked use-local-map
on my custom key map.
once I included:
(use-local-map report-mode-map)
Everything worked fine.
Итак, я попытался написать простой основной режим (режим отчета), используя в качестве примера. Кажется, у меня все работает, за исключением того, что раскладка клавиатуры на самом деле не отображается.
Если я 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)
получу eval, я получу результат true, так что это может показаться, что другой формат не является проблемой ...
Наконец, я почти уверен, что это проблема, потому что ни одна из других привязок клавиш не работает.
Любые идеи будут великолепны. Еще раз извините за то, что не смогли напрямую пройти код.
So, I found the answer.
Turns out I in define-derived-mode
I never invoked use-local-map
on my custom key map.
once I included:
(use-local-map report-mode-map)
Everything worked fine.