De vez en cuando observo un comportamiento inesperado al editar texto. Mi primer recurso suele ser utilizar C-h k
para averiguar qué funciones está llamando una secuencia de teclas determinada. Sin embargo, a veces la documentación está en desacuerdo con el comportamiento observado. En estos casos, generalmente asumo que algún otro paquete se ha conectado a esa función o secuencia de teclas y está modificando su comportamiento.
¿Cómo puedo averiguar qué funciones se enganchan en mi secuencia de teclas?
Un ejemplo que encontré recientemente fue que presioné la "tecla y las comillas se insertaron al principio y al final de la región activa. Tenía la sospecha de que este no era el comportamiento predeterminado de Emacs, así que solía C-h k "
averiguar qué función se llamaba realmente.
La describe-key
documentación me dijo que self-insert-command
se estaba llamando a la función , que es una función incorporada. Para resumir, después de una cierta cantidad de prueba y error, pude determinar que el comportamiento fue causado por electric-pair-mode
. En el futuro, ¿hay una manera más rápida de llegar a esta conclusión que apagar los paquetes sospechosos de uno en uno hasta encontrar al culpable?
electric-pair-mode
funciona enganchándose post-self-insert-hook
y no cambiando la combinación de teclas.
C-h k
le dice exactamente qué sucede con una pulsación de tecla. Si observa la documentación self-insert-command
, dice claramente que post-self-insert-hook
se ejecuta una vez que finaliza el comando.
after-change-functions
como Jordon menciona en su respuesta? La documentación para una función probablemente no mencionará específicamente ese gancho, ¿verdad?
C-h k
+ los ganchos estándar == el comportamiento completo (más o menos). Por supuesto, a veces eso deja muchas posibilidades, pero aún es mucho más transparente que cualquier otro sistema de software complejo que conozco.
electric-pair-mode
se haya activado solo en algunos modos principales? ¿Todavía veself-insert-command
para"
cuando lo haceC-h k
mientraselectric-pair-mode
está activo?