Od czasu do czasu obserwuję nieoczekiwane zachowanie podczas edycji tekstu. Moim pierwszym rozwiązaniem jest zazwyczaj C-h ksprawdzenie, jakie funkcje wywoływane są przez daną sekwencję klawiszy. Czasami jednak dokumentacja jest sprzeczna z zaobserwowanym zachowaniem. W takich przypadkach zwykle zakładam, że jakiś inny pakiet zaczepił się w tej funkcji lub sekwencji klawiszy i modyfikuje swoje zachowanie.
Jak mogę dowiedzieć się, które funkcje zaczepiają się w mojej sekwencji klawiszy?
Jednym z przykładów, które ostatnio spotkałem, było naciśnięcie "klawisza, a znaki cudzysłowu zostały wstawione na początku i na końcu aktywnego regionu. Podejrzewałem, że nie jest to domyślne zachowanie Emacsa, więc szukałem C-h k ", jaka funkcja jest faktycznie wywoływana.
describe-keyDokumentacja powiedział mi, że funkcja self-insert-commandzostała miano, która jest wbudowana funkcja. Krótko mówiąc, po pewnym czasie prób i błędów udało mi się ustalić, że zachowanie było spowodowane electric-pair-mode. Czy w przyszłości można szybciej dojść do takiego wniosku, niż wyłączać podejrzane pakiety pojedynczo, aż do znalezienia winowajcy?
electric-pair-modedziała poprzez zaczepienie się post-self-insert-hook, a nie zmianę przypisania klawiszy.
C-h kmówi dokładnie, co dzieje się po naciśnięciu klawisza. Jeśli spojrzysz na dokumentację self-insert-command, wyraźnie widać, że post-self-insert-hookjest uruchamiana po zakończeniu polecenia.
after-change-functionstak, jak Jordon wspomina w swojej odpowiedzi? Dokumentacja funkcji prawdopodobnie nie wspomina konkretnie o tym haku, prawda?
C-h k+ standardowe zaczepy == pełne zachowanie (mniej więcej). Oczywiście czasami pozostawia to wiele możliwości, ale wciąż jest o wiele bardziej przejrzysta niż jakikolwiek inny złożony system oprogramowania, o którym wiem.


electric-pair-modezostał aktywowany tylko w niektórych głównych trybach? Czy nadal zobaczyćself-insert-commandna"kiedy to zrobićC-h k, gdyelectric-pair-modejest aktywny?