Von Zeit zu Zeit beobachte ich unerwartetes Verhalten beim Bearbeiten von Text. Meine erste Möglichkeit besteht normalerweise darin C-h k
, herauszufinden, welche Funktionen von einer bestimmten Tastenfolge aufgerufen werden. Manchmal widerspricht die Dokumentation jedoch dem beobachteten Verhalten. In diesen Fällen gehe ich normalerweise davon aus, dass sich ein anderes Paket in diese Funktion oder Tastenfolge eingebunden hat und ihr Verhalten ändert.
Wie kann ich herausfinden, welche Funktionen in meine Tastenfolge eingebunden sind?
Ein Beispiel, auf das ich kürzlich gestoßen bin, war das Drücken der "Taste und das Einfügen von Anführungszeichen am Anfang und Ende des aktiven Bereichs. Ich hatte den Verdacht, dass dies nicht das Standardverhalten von Emacs war, also habe ich C-h k "
herausgefunden, welche Funktion tatsächlich aufgerufen wurde.
Die describe-key
Dokumentation hat mir gesagt , dass die Funktion self-insert-command
aufgerufen wurde, die eine eingebaute Funktion ist. Um es kurz zu machen, nach einigem Ausprobieren konnte ich feststellen, dass das Verhalten durch verursacht wurde electric-pair-mode
. Gibt es in Zukunft einen schnelleren Weg, um zu dieser Schlussfolgerung zu gelangen, als verdächtige Pakete einzeln auszuschalten, bis der Täter gefunden ist?
electric-pair-mode
funktioniert, indem man sich einhakt post-self-insert-hook
und nicht, indem man die Tastenkombination ändert.
C-h k
sagt Ihnen genau, was bei einem Tastendruck passiert. Wenn Sie sich die Dokumentation ansehen self-insert-command
, wird sehr deutlich angezeigt, post-self-insert-hook
dass der Befehl ausgeführt wird, nachdem er ausgeführt wurde.
after-change-functions
wie Jordon in seiner Antwort erwähnt? In der Dokumentation einer Funktion wird dieser Haken wahrscheinlich nicht speziell erwähnt, oder?
C-h k
+ die Standard-Hooks == das komplette Verhalten (mehr oder weniger). Natürlich lässt das manchmal eine Menge Möglichkeiten offen, aber es ist immer noch viel transparenter als jedes andere komplexe Softwaresystem, das ich kenne.
electric-pair-mode
nur in einigen Hauptmodi aktiviert wurde? Sehen Sie nochself-insert-command
für ,"
wenn Sie tun ,C-h k
währendelectric-pair-mode
aktiv ist?