¿Cómo puedo establecer un enlace de clave que anule globalmente y tenga prioridad sobre todos los demás enlaces para esa clave? Quiero anular todos los mapas de modo mayor / menor y asegurarme de que mi enlace esté siempre en efecto.
Esto, por supuesto, no funciona:
(global-set-key "\C-i" 'some-function)
Funciona text-mode
, pero cuando lo uso lisp-mode
, C-i
se recupera lisp-indent-line
.
Puedo revisar y anular este enlace en lisp-mode
y en cualquier otro modo individualmente, pero debe haber una manera más fácil. Cada vez que instalo un nuevo modo para un nuevo tipo de archivo, tengo que volver atrás y comprobar para asegurarme de que el nuevo modo no anula todas mis combinaciones de teclas.
Quiero hacer esto porque quiero emular enlaces que ya aprendí y arraigé de otros editores.
fuente
Como adición a la respuesta de scottfrazer , escribí lo siguiente para que mis combinaciones de teclas conserven la prioridad, incluso si las bibliotecas cargadas posteriormente traen nuevos mapas de teclas propios.
Debido a que los mapas de teclas se pueden generar en tiempo de compilación,
load
parecía el mejor lugar para hacer esto.fuente
Instalar
use-package
, evaluar y listo:fuente
use-package
:Install package: use-package [No Match]
Encontré esta pregunta mientras buscaba "emacs undefine org mode keybindings", porque quería desvincular el comportamiento existente de Cc Cb para permitir que mi mapa global bury-buffer funcione en un búfer de organización.
Esta terminó siendo la solución más simple para mí:
fuente
Aunque la respuesta de scottfrazer es exactamente lo que pediste, mencionaré para la posteridad otra solución.
Del manual de Emacs :
Si vincula sus enlaces globales personales a Cc más una letra, entonces "debería" estar seguro. Sin embargo, esto es simplemente una convención, y cualquier modo puede anular sus enlaces.
fuente
Si desea "usar siempre las combinaciones de teclas en el mapa, a menos que las anule explícitamente para un mapa de modo específico", y asumiendo que está utilizando el enfoque de scottfrazier , desea:
Entonces
debería eliminar el enlace "\ Ci" del modo menor sólo en el búfer actual. Advertencia: esto no está completamente probado, pero parece el enfoque correcto. El objetivo de establecer el padre en lugar de simplemente hacer frente al valor global de my-keys-minor-mode-map es que cualquier cambio posterior al valor global se refleje automáticamente en el valor local.
fuente
No creo que puedas. Eso es aproximadamente equivalente a decir que desea definir una variable global que no se pueda ocultar mediante declaraciones de variables locales en funciones. El alcance simplemente no funciona de esa manera.
Sin embargo, puede haber una forma de escribir una función elisp para revisar la lista de modos y reasignarla en cada uno de ellos.
fuente
overriding-local-map
está diseñada específicamente para anular todos los demás mapas. Sin embargo, es peligroso usarlo.A menos que realmente desee hacer esto usted mismo, debe verificar y ver si alguien más ya lo ha hecho.
Hay un paquete para Emacs que proporciona combinaciones de teclas similares a las de Windows. Debería poder encontrarlo a través de Google.
fuente
cua-mode
.