Время от времени я наблюдаю неожиданное поведение при редактировании текста. Мой первый C-h kвыход - обычно использовать, чтобы узнать, какие функции вызываются данной последовательностью клавиш. Однако иногда документация расходится с наблюдаемым поведением. В этих случаях я обычно предполагаю, что какой-то другой пакет подключился к этой функции или последовательности клавиш и изменяет свое поведение.
Как я могу узнать, какие функции подключаются к моей последовательности клавиш?
Один из примеров, с которым я недавно столкнулся, это то, что я нажал "клавишу, и кавычки были вставлены в начало и конец активной области. У меня было подозрение, что это не было поведением Emacs по умолчанию, поэтому я обычно C-h k "выяснял, какая функция на самом деле вызывается.
В describe-keyдокументации сказано self-insert-command, что вызывается функция , которая является встроенной функцией. Короче говоря, после некоторого количества проб и ошибок я смог определить, чем вызвано поведение electric-pair-mode. Есть ли в будущем более быстрый способ прийти к такому выводу, чем отключать подозрительные пакеты по одному, пока не будет найден виновник?
electric-pair-modeработает путем подключения post-self-insert-hook, а не путем изменения привязки клавиш.
C-h kговорит вам точно, что происходит для нажатия клавиши. Если вы посмотрите на документацию self-insert-command, там очень четко написано, что post-self-insert-hookона запускается после завершения команды.
after-change-functionsкак упоминает Джордон в своем ответе? Документация для функции, вероятно, не будет упоминать этот хук, не так ли?
C-h k+ стандартные зацепки == полное поведение (более или менее). Конечно, иногда это оставляет много возможностей, но все же гораздо прозрачнее, чем любая другая сложная программная система, о которой я знаю.


electric-pair-modeбыл активирован только в некоторых основных режимах? Вы все еще видитеself-insert-commandдля"когда вы делаете вC-h kто время какelectric-pair-modeактивен?