De vez en cuando observo un comportamiento inesperado al editar texto. Mi primer recurso suele ser utilizar C-h kpara 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-keydocumentación me dijo que self-insert-commandse 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-modefunciona enganchándose post-self-insert-hooky no cambiando la combinación de teclas.
C-h kle dice exactamente qué sucede con una pulsación de tecla. Si observa la documentación self-insert-command, dice claramente que post-self-insert-hookse ejecuta una vez que finaliza el comando.
after-change-functionscomo 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-modese haya activado solo en algunos modos principales? ¿Todavía veself-insert-commandpara"cuando lo haceC-h kmientraselectric-pair-modeestá activo?