1

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

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

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

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

1 ответ1

1

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

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

однажды я включил:

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .