Определение карты клавиш основного режима Emacs не удается

Определение карты клавиш основного режима Emacs не удается

Итак, я попытался написать простой основной режим (режим отчета)с использованиемкак пример. У меня вроде бы все работает, за исключением того, что раскладка клавиатуры на самом деле не отображается.

Если я C-h f report-modeправильно понял, то увижу список ключевых карт с внесенным мной дополнением, а именно:

ESC  n    kill-dupe

Однако, когда я перехожу к USE 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'. Если я выполню eval, то (keymapp report-mode-map)получу результат true, так что это, похоже, указывает на то, что другой формат не является проблемой...

Наконец, я почти уверен, что это проблема, потому что ни одна из других раскладок клавиатуры тоже не работает.

Любые идеи были бы великолепны. Извините еще раз за то, что не могу напрямую вставить код.

решение1

Итак, я нашел ответ.

Оказывается, я define-derived-modeникогда не вызывал use-local-mapсвою пользовательскую карту клавиш.

как только я включил:

(use-local-map report-mode-map)

Все работало отлично.

Связанный контент