Время от времени я наблюдаю неожиданное поведение при редактировании текста. Мой первый 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
активен?