Emacs no guarda la información sobre dónde se asocian las teclas con las funciones. De hecho, la respuesta generalmente no está definida.
Muchas veces los enlaces de teclas se configuran como un efecto secundario de un modo menor, o mediante ganchos de modo. El enlace de clave para modos menores a menudo se almacena en alguna variable como comint-mode-map
. Este mapa de teclas se habilita configurando la variable de modo comint-mode
. Sin embargo, ese mapa de modo es una variable global y cualquiera, en cualquier lugar, puede agregarle enlaces de teclas. Entonces, hacer lo que quieras es esencialmente rastrear quién establece una variable con un valor particular. De forma similar, para enlaces de teclas que se configuran localmente a través de ganchos de modo (usando local-set-key
). Además, incluso puede configurar enlaces de teclas a través del file variables. Todo esto es para decir que las asociaciones de teclas en Emacs son efímeras.
Lo mejor que puede hacer es encontrar la función asociada a la tecla y buscar en ese archivo (o cualquier archivo relacionado si el modo se divide en varios archivos).
La búsqueda de enlace de claves en emacs es bastante complicada debido a la gran cantidad de maneras de establecer/asociar pulsaciones de tecla (globalmente, modo principal, modos menores, anulación de modos menores, local a búferes, propiedades de texto, etc.). Para obtener una visión general rápida, consulte this documentation.
Puede escribir una función como esta para buscar en los modos menores para ver dónde podría establecerse una combinación de teclas, pero por supuesto mi primera prueba mostró que la vinculación no estaba definida allí. Pero tal vez el código sea instructivo.
(defun guess-where-keybinding-is-defined (key)
"try to guess where a key binding might be defined"
(interactive (list (read-key-sequence "Describe key: ")))
(let ((bindings (minor-mode-key-binding key))
found)
(while (and bindings (not found))
(if (setq found (caar bindings))
(find-function (cdar bindings)))
(setq bindings (cdr bindings)))))
¿Hay algún problema específico que intente resolver (que no sea esta pregunta)?
Gracias por su respuesta detallada. La pregunta me vino a la mente ayer cuando estaba tratando de descubrir que era una combinación de teclas específica definida en los modos centrales o por un paquete externo. –