De temps en temps, j'observe un comportement inattendu lors de l'édition de texte. Mon premier recours consiste généralement à utiliser C-h kpour savoir quelles fonctions sont appelées par une séquence de touches donnée. Cependant, la documentation est parfois en contradiction avec le comportement observé. Dans ces cas, je suppose généralement qu'un autre package s'est accroché à cette fonction ou séquence de touches et modifie son comportement.
Comment savoir quelles fonctions sont liées à ma séquence de touches?
Un exemple que j'ai rencontré récemment est que j'ai appuyé sur la "touche et que des guillemets ont été insérés au début et à la fin de la région active. Je soupçonnais que ce n'était pas le comportement par défaut d'Emacs, j'ai donc l'habitude C-h k "de savoir quelle fonction était réellement appelée.
La describe-keydocumentation m'a dit que la fonction self-insert-commandétait appelée, qui est une fonction intégrée. Pour faire court, après quelques essais et erreurs, j'ai pu déterminer que le comportement était dû à electric-pair-mode. À l'avenir, y a-t-il un moyen plus rapide d'arriver à cette conclusion que de désactiver les colis suspects un par un jusqu'à trouver le coupable?
electric-pair-modefonctionne en se connectant à post-self-insert-hook, et non en modifiant le raccourci clavier.
C-h kvous indique exactement ce qui se passe pour une touche. Si vous regardez la documentation de self-insert-command, il est très clairement indiqué post-self-insert-hookque la commande est exécutée une fois la commande terminée.
after-change-functionscomme Jordon le mentionne dans sa réponse? La documentation d'une fonction ne mentionnera probablement pas spécifiquement ce crochet, n'est-ce pas?
C-h k+ les hooks standards == le comportement complet (plus ou moins). Bien sûr, cela laisse parfois beaucoup de possibilités, mais il est toujours beaucoup plus transparent que tout autre système logiciel complexe que je connaisse.


electric-pair-modeété activé uniquement dans certains modes majeurs? Ne voyez - vous encoreself-insert-commandpour"quand vous faitesC-h ktoutelectric-pair-modeest actif?