Сбой определения карты ключей основного режима Emacs

294
Daniel

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

Если я 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, так что это может показаться, что другой формат не является проблемой ...

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

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

1
Вы уверены, что ваш основной режим называется `report-mode` - если нет, он не будет работать из коробки? `(define-производный-режим. .`. lawlist 9 лет назад 0
хорошо, спасибо - я не включил вызов `(define-output-mode-mode-mode text-mode ...)`. У меня есть это. Daniel 9 лет назад 0
То, что я хотел напечатать, было «я не включил в определение вопроса», у меня есть define-производный-режим в файле report-mode.el. Daniel 9 лет назад 0

1 ответ на вопрос

1
Daniel

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.

Похожие вопросы