He recuperado la tecla 'd' gnus-article-mode
, pero su comportamiento anterior todavía está activo cuando el punto está en un archivo adjunto. Puedo ver que la nueva vinculación no surtió efecto al hacerlo C-h k d
, pero no me dice qué mapa de teclas está vigente en ese momento, por lo que puedo volver a vincularlo.
¿Hay alguna manera de descubrirlo?
Aquí hay un ejemplo preciso: estoy usando el mal, y quiero que los artículos estén en modo de movimiento. Para la distribución de mi teclado, he configurado 'd' como la tecla para subir.
(evil-mode 1)
(add-to-list 'evil-motion-state-modes 'gnus-article-mode)
(setq evil-emacs-state-modes (remove 'gnus-article-mode evil-emacs-state-modes))
(define-key evil-motion-state-map "d" 'evil-previous-line)
Para asegurarme de que se tengan en cuenta las claves malvadas, configuro la clave gnus en el mapa local:
(defun as/alter-article-evil-map ()
(local-unset-key "d"))
(add-hook 'gnus-article-mode-hook 'as/alter-article-evil-map)
Desafortunadamente, cuando el punto está en un archivo adjunto, la tecla 'd' ya no sube, pero me ofrece eliminar el archivo adjunto. Supongo que otro enlace está activo en ese punto, de ahí la pregunta.
Solución Usé lo keymaps-at-point
siguiente para encontrar que el mapa de teclas utilizado era de una propiedad de texto. Luego miré el código de la función enlazada para encontrar el nombre del mapa de teclas gnus-mime-button-map
. El siguiente código hace lo que quiero:
(defun as/alter-article-evil-map ()
(define-key gnus-mime-button-map "d" nil))
(add-hook 'gnus-article-mode-hook 'as/alter-article-evil-map)
fuente
Searching Keymaps
. Ver también nodosFunctions for Key Lookup
yActive Keymaps
.Respuestas:
Emacs 25
Como mencionó @YoungFrog en los comentarios, comenzando con Emacs 25.1 , el
C-h k
método antiguo de describir las asociaciones de teclas también le dirá en qué mapa de teclas se encontró la clave.Antes de Emacs 25
Hay algo de código aquí sobre esto, pero está incompleto ya que no cubre todo. A continuación se muestra una versión mejorada de la misma.
Las teclas se pueden enlazar de 9 (!) Formas. Gracias a @Drew por este enlace (también complementado por esto ) con la lista completa. Por orden de precedencia, son:
overriding-terminal-local-map
. Esto está definido por laset-transient-map
función.overriding-local-map
. Si este está configurado, se omiten los elementos 3–8 (probablemente por qué no ve muchos de estos).keymap
propiedad de texto (que podría ir en texto real o en superposiciones).emulation-mode-map-alists
.minor-mode-overriding-map-alist
.minor-mode-map-alist
.local-map
propiedad de texto. Si esto existe, se omite el elemento 8.current-local-map
.current-global-map
.También hay un semi-elemento 10. Cualquier comando encontrado a través del procedimiento anterior también podría haberse reasignado.
La siguiente función consulta algunas de estas posibilidades (las más probables) y devuelve o imprime el resultado.
Hay funciones integradas para cada una de ellas, excepto la primera, por lo que debemos crear una (también una versión mejorada del código vinculado anteriormente).
Como está diciendo que el comportamiento está activo cuando el punto está en un archivo adjunto, hay una buena posibilidad de que esta combinación de teclas tenga lugar en una superposición o propiedad de texto.
Si eso no funciona , pruebe el siguiente comando también. Simplemente coloque el cursor en el archivo adjunto y listo
M-x
keymaps-at-point
.fuente
k runs the command gnus-summary-kill-same-subject-and-select (found in gnus-summary-mode-map), which is (...)
Eso sobre:
Por ejemplo, para
(my-lookup-key (kbd "C-c v v"))
obtener la lista en el*Message*
búfer:Este enfoque es útil para buscar mapas de subclaves que se incluyen en mapas de teclas de nivel superior, por ejemplo, resultados de:
es el
vc-prefix-map
que está incluido englobal-map
:Si modifica la condición de filtrado para incluir
keymapp
, podrá buscar siempre prefijos:Entonces
rst-mode-map
se encontrará en ambos:fuente
Soy consciente de que lo siguiente no responde a la pregunta de ¿Cómo puedo averiguar qué mapa de teclas? Sin embargo, trata el problema subyacente en este caso de cómo garantizar que la
d
clave se comporte de acuerdo con lo que el usuario desea. Si lo prefiero, puedo eliminar esta respuesta y convertirla en otra pregunta + respuesta con respecto a ese problema.Como método para anular el
text-property/overlay
mapa, debe poder usar:Según Controlling Active Maps ,
overriding-local-map
tiene prioridad sobre cualquier otro mapa activo que no seaoverriding-terminal-local-map
.fuente
emacs-buttons proporciona
buttons-display
, que con un argumento prefijo muestra una visualización recursiva de todos los enlaces actuales.(Descargo de responsabilidad: soy el autor del paquete)
fuente