Para resumir, hay una pequeña biblioteca que me gusta pero no me gusta ninguna de las combinaciones de teclas predeterminadas. Por ejemplo, es un modo menor global y vincula una función C-c C-s
, pero eso se oculta org-schedule
en mis buffers de org y org-agenda.
Quiero mantener la pequeña biblioteca pero deshacerme de todos los enlaces en el pequeño mapa de teclas de la biblioteca.
En un intento temprano de hacer esto, probé lo siguiente (después de confirmar que little-library-mode-map
es donde viven los enlaces):
(with-eval-after-load "little-library-mode"
(setq little-library-mode-map (make-sparse-keymap)))
El código "tiene éxito" ( C-h v little-library-mode-map RET
muestra que es (keymap)
ahora), pero todas las pequeñas combinaciones de teclas de la biblioteca aún "funcionan" ( C-c C-s
todavía funciona la pequeña función de la biblioteca, incluso en los buffers de org y org-agenda).
He encontrado otra forma de resolver mi problema, pero tengo mucha curiosidad por qué este enfoque falla. Las combinaciones de teclas de Emacs todavía me parecen magia negra.
fuente
(setcdr little-library-mode-map nil)
.Respuestas:
Hay tres cosas importantes en esta historia:
Básicamente, lo que hizo fue hacer que el nombre apunte al mapa de teclas disperso en lugar del original, pero es demasiado tarde: el modo menor usa el original.
fuente
minor-mode-map-alist
.En algún momento al activar
little-library-mode
el mapa de teclas almacenado en la variablelittle-library-mode-map
se agrega aminor-mode-map-alist
:Emacs usa esta lista para buscar enlaces de modo menor. Cuando vincula la variable
little-library-mode-map
a un nuevo valor después, esto no tiene efecto en losminor-mode-map-alist
puntos del mapa de teclas . Como se señaló en el comentario de @wasamasa, una forma de deshacerse de todos los enlaces en este mapa de teclas es mutar el mapa de teclas directamente:Otra forma es restablecer el mapa de teclas antes de cargar la biblioteca:
Si el modo menor se comporta bien, esto también evitará crear instancias de sus enlaces.
fuente