De tempos em tempos, observo um comportamento inesperado ao editar texto. Meu primeiro recurso é geralmente usar C-h k
para descobrir quais funções estão sendo chamadas por uma determinada sequência de teclas. No entanto, às vezes a documentação está em desacordo com o comportamento observado. Nesses casos, geralmente presumo que algum outro pacote tenha se conectado a essa função ou sequência de teclas e está modificando seu comportamento.
Como posso descobrir quais funções estão conectadas à minha sequência de teclas?
Um exemplo que encontrei recentemente foi o fato de pressionar a "tecla e as aspas foram inseridas no início e no final da região ativa. Eu suspeitava que esse não era o comportamento padrão do Emacs, então eu C-h k "
descobri qual função estava realmente sendo chamada.
A describe-key
documentação me disse que a função self-insert-command
estava sendo chamada, que é uma função interna. Para resumir uma longa história, após algumas tentativas e erros, pude determinar que o comportamento foi causado por electric-pair-mode
. No futuro, existe uma maneira mais rápida de chegar a essa conclusão do que desativar pacotes suspeitos um de cada vez até encontrar o culpado?
electric-pair-mode
funciona conectando post-self-insert-hook
e não alterando a combinação de teclas.
C-h k
informa exatamente o que acontece com o pressionamento de tecla. Se você olhar para a documentação self-insert-command
, ela diz claramente que post-self-insert-hook
é executada após a conclusão do comando.
after-change-functions
como Jordon menciona em sua resposta? A documentação para uma função provavelmente não mencionará especificamente esse gancho, sim?
C-h k
+ os ganchos padrão == o comportamento completo (mais ou menos). É claro que às vezes isso deixa muitas possibilidades, mas ainda é muito mais transparente do que qualquer outro sistema de software complexo que eu conheça.
electric-pair-mode
foi ativado apenas em alguns modos principais? Você ainda vêself-insert-command
para"
quando você fazC-h k
enquantoelectric-pair-mode
está ativo?