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 k
pour 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-key
documentation 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-mode
fonctionne en se connectant à post-self-insert-hook
, et non en modifiant le raccourci clavier.
C-h k
vous 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-hook
que la commande est exécutée une fois la commande terminée.
after-change-functions
comme 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-command
pour"
quand vous faitesC-h k
toutelectric-pair-mode
est actif?