A definição do mapa de teclas do modo principal do Emacs falha

A definição do mapa de teclas do modo principal do Emacs falha

Então, tentei escrever um modo principal simples (modo de relatório)usandocomo um exemplo. Parece que tenho tudo funcionando, exceto que o mapa de teclado não parece mapear.

Se o fizer, C-h f report-modevejo corretamente uma lista dos principais mapas com a adição que fiz, a saber:

ESC  n    kill-dupe

Porém, quando vou para USE Mn ou ESC n, nada acontece. Posso invocar manualmente a função via M-x kill-dupepara que esse não pareça ser o problema.

Infelizmente, como a máquina está em uma rede diferente, não consigo copiar e colar o código elisp real.

Posso copiar exatamente o exemplo que usei (e fazer as substituições):

(defvar report-mode-map
  (let ((map (make-sparse-keymap "Report-Mode")))
    (define-key map "\M-n" 'kill-dupe)
    map)
 "Keymap for browsing report mode")

que vem deaqui.

Se eu examinar o mapa do modo de relatório, vejo o que parece mais correto, exceto que contém palavras-chave adicionais keymap:

(keymap (27 keymap (110 . kill-dupe)) keymap (....) "Report-Map" (....))

Se eu comparar isso com, digamos, mapa de modo de texto, ele terá a string de definição de mapa de chave esparsa incorporada e strings adicionais de 'mapa de teclado'. Se eu avaliar, (keymapp report-mode-map)obtenho um resultado verdadeiro, o que parece indicar que o formato diferente não é um problema ...

Por último, tenho certeza de que é um problema, porque nenhuma das outras ligações do mapa de teclado também funciona.

Qualquer ideia seria ótima. Desculpe novamente por não conseguir colar o código diretamente.

Responder1

Então, encontrei a resposta.

Acontece que define-derived-modenunca invoquei use-local-mapmeu mapa de teclas personalizado.

uma vez que incluí:

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

Tudo funcionou bem.

informação relacionada