Wystąpił problem polegający na tym, że region jest dezaktywowany (w trybie znaku przejściowego). Funkcja deactivate-markjest wywoływana i chciałbym dowiedzieć się, skąd (i dlaczego) jest ona wywoływana.
Próbowałem M-x debug-on-entry RET deactivate-marki przestało, ale nie znalazłem sposobu, aby dowiedzieć się, kto dzwoni. Cały wyświetlany stacktrace to:
Debugger entered--entering a function:
* deactivate-mark()
Próbowałem, M-x edebug-eval-defunale Edebug też nie pokazuje dzwoniącego.
Jak dowiedzieć się, dlaczego (skąd) deactivate-markjest wywoływany? Szukam funkcjonalności śledzenia wstecznego lub stosu.
EDYTOWAĆ:
advice-addTrick:
(defun message-show-backtrace ()
(message "%s" (backtrace-frame 10)))
(advice-add deactivate-mark :before #'message-show-backtrace)
produkuje nilw *Messages*.
Edycja: więcej informacji na temat deactivate-mark: http://emacshorrors.com/posts/deactivate-mark.html
deactiveate-markkorzystając z funkcji porad, backtrace-framesaby uzyskać widok całego stosu wywołań, jeśli edebug nie pokazuje tego, czego oczekujesz.
advice-addi backtrace-frame. To nie pomogło.
self-insert-commandi „self-insert-command to interaktywna wbudowana funkcja w„ kodzie źródłowym C ”.” To, wraz z innymi zaobserwowanymi do tej pory zachowaniami, sugeruje, że trzeba będzie debugować gdb.
emacs -Q, włącz debugowanieM-x debug-on-entry deactivate-mark, aktywuj znakC-<SPC>, wpisz postać.