El problema básico aquí es que no existe un mapa de teclas actual per se. Existe el mapa de teclas global que se reemplaza por el mapa de teclas del modo principal, que a su vez es anulado por uno o más mapas de teclas de modo menor (y pueden cruzarse el uno al otro de alguna manera definida, estoy seguro). La definición de un nuevo modo principal aún dejará las teclas de modo menor funcionales, y la definición de un nuevo modo menor solo afectará a las teclas que defina en el mapa de teclas del modo secundario.
Por ejemplo, puede definir un modo menor que hará lo que desee mientras el modo menor esté activo. Usted define un nuevo modo menor my-gud-mode
que tendrá su propio mapa de teclas. Debería definir todas sus asignaciones de teclas (p. Ej., N, p, etc.) y también debería definir todas las teclas que no deseaba que estuvieran vinculadas a la función ignore
. Ese es el verdadero dolor de esto, remapeando todas las otras claves. Sin embargo, el modo menor es fácil de activar y desactivar; esa es la ventaja.
Definir un nuevo modo principal sería más fácil a primera vista, ya que le permitirá anular más del "mapa de teclas actual" en una sola toma. Debe tener en cuenta el modo principal actual en una variable local de búfer para que pueda restaurarse más tarde cuando se apaga el modo principal temporal. Pero todavía tendrá otros modos menores que entren en su mapa de teclas, por lo que no será "puro".
¡Lo que hago en esta situación es definir un prefijo más fácil! Para las cosas que utilizo todo el tiempo, todo el día todos los días, les doy una tecla de función por sí solas (por ejemplo, tengo F1 reservada como mi tecla de modo jabber). Para cosas menos útiles, tengo otras dos teclas de función reservadas, F3 y F12 (estoy seguro de que hubo alguna razón por la que las elegí hace mucho tiempo, pero ya no recuerdo por qué). F3 define las claves que están siempre disponibles, independientemente del modo principal. F12 define claves que dependen del modo principal. Algunos ejemplos:
He configurado F3-m- como un prefijo para cambiar los modos principales (por ejemplo, F3-mp cambia a cperl-mode) y F3-M- como un prefijo para modos menores (por ejemplo, F3-Mv alterna modo de vista). Estos están siempre disponibles, por lo que podría hacer algo como unir F3-g- para ser su prefijo gud, y escribir F3-g-p para el anterior y así sucesivamente.
Mi tecla F12 depende del modo. Entonces, en modo directo, F12-e llamará al dired-nt-open-in-excel
en el archivo actual, y en emacs-lisp-mode F12-e llamará al elint-current-buffer
. De alguna manera, nunca los confundí.
Si necesita ayuda para definir mapas de teclas como este, hágamelo saber.
¿Estás hablando de modos menores o modos principales? ¿Puedes dar un ejemplo específico? –
En realidad, estaría satisfecho con algo aún menos estructurado que eso: solo una forma de ingresar un prefijo y aplicarlo a todas las teclas que presiono hasta que presiono alguna serie especial de teclas para salir de ese modo. – fdr