Ich habe ein Problem festgestellt, dass die Region deaktiviert ist (im Transient-Mark-Modus). Die Funktion deactivate-markwird aufgerufen und ich möchte herausfinden, woher (und warum) sie aufgerufen wird.
Ich habe es versucht M-x debug-on-entry RET deactivate-markund es hört auf, aber ich habe keine Möglichkeit gefunden, den Anrufer herauszufinden. Die gesamte angezeigte Stapelverfolgung ist:
Debugger entered--entering a function:
* deactivate-mark()
Ich habe es versucht, M-x edebug-eval-defunaber Edebug zeigt den Anrufer auch nicht an.
Wie finde ich heraus, warum (woher) gerufen deactivate-markwird? Ich suche nach Backtrace- oder Stacktrace-Funktionalität.
BEARBEITEN:
Ein advice-addTrick:
(defun message-show-backtrace ()
(message "%s" (backtrace-frame 10)))
(advice-add deactivate-mark :before #'message-show-backtrace)
produziert nilin *Messages*.
Bearbeiten: Weitere Informationen zu deactivate-mark: http://emacshorrors.com/posts/deactivate-mark.html
deactiveate-markund in Ihrer Beratungsfunktion verwenden backtrace-frames, um einen Überblick über den gesamten Aufrufstapel zu erhalten, wenn edebug nicht anzeigt, was Sie erwarten.
advice-addund hinzugefügt backtrace-frame. Es hat nicht geholfen.
self-insert-commandund "Self-Insert-Command eine interaktive integrierte Funktion in 'C-Quellcode' ist." Dies, zusammen mit dem anderen Verhalten, das bisher festgestellt wurde, deutet darauf hin, dass man mit debuggen muss gdb.
emacs -Q, DebugM-x debug-on-entry deactivate-markaktivieren, Markierung aktivieren, Zeichen eingebenC-<SPC>.