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

1

Então, eu tentei escrever um modo simples simples (modo de relatório) using como um exemplo. Eu pareço ter tudo funcionando, exceto que o mapa de teclado não parece realmente mapear.

Se eu C-h f report-mode ver corretamente uma lista de mapas de chaves com a adição que fiz, a saber:

ESC  n    kill-dupe

No entanto, quando vou para USE M-n ou ESC n, nada acontece. Eu posso invocar manualmente a função via M-x kill-dupe para que 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.

Eu posso copiar no exemplo exato que usei (e fazer as subestaçõ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 de aqui .

Se eu examinar o relatório-modo-mapa, vejo o que parece mais correto, exceto que ele tem palavras-chave adicionais de keymap em:

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

Se eu comparar isso com, digamos, text-mode-map, ele terá a string de definição de mapa de chave esparsa incorporada e strings adicionais de 'keymap'. Se eu eval (keymapp report-mode-map) obtiver um resultado de true, isso pareceria indicar que o formato diferente não é um problema ...

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

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

    
por Daniel 14.05.2015 / 02:15

1 resposta

1

Então, encontrei a resposta.

Acontece que eu em define-derived-mode nunca invoquei use-local-map no meu mapa de chaves personalizado.

uma vez incluído:

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

Tudo funcionou bem.

    
por 14.05.2015 / 19:26

Tags