
Entonces, intenté escribir un modo principal simple (modo informe)usandocomo ejemplo. Parece que todo funciona excepto que el mapa de teclas en realidad no parece asignarse.
Si lo hago, C-h f report-mode
veo correctamente una lista de mapas clave con la adición que hice, a saber:
ESC n kill-dupe
Sin embargo, cuando voy a USE Mn o ESC n, no pasa nada. Puedo invocar manualmente la función M-x kill-dupe
para que ese no parezca ser el problema.
Lamentablemente, debido a que la máquina está en una red diferente, no puedo copiar y pegar el código elisp real.
Puedo copiar el ejemplo exacto que usé (y hacer las sustituciones):
(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 viene deaquí.
Si examino el mapa del modo de informe, veo lo que parece más correcto, excepto que tiene palabras clave adicionales dentro keymap
de:
(keymap (27 keymap (110 . kill-dupe)) keymap (....) "Report-Map" (....))
Si comparo esto con, digamos, text-mode-map, tiene incrustada la cadena de definición de mapa de teclas dispersas y cadenas de 'mapa de teclas' adicionales. Si evalúo (keymapp report-mode-map)
obtengo un resultado verdadero, lo que parecería indicar que el formato diferente no es un problema...
Por último, estoy bastante seguro de que ES un problema, porque ninguna de las otras combinaciones de mapas de teclas tampoco funciona.
Cualquier idea sería genial. Perdón nuevamente por no poder pasar el código directamente.
Respuesta1
Entonces encontré la respuesta.
Resulta que define-derived-mode
nunca invoqué use-local-map
mi mapa de claves personalizado.
una vez incluí:
(use-local-map report-mode-map)
Todo funcionó bien.