Час від часу спостерігаю несподівану поведінку під час редагування тексту. Моє перше звернення, як правило, використовувати 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
активний?