J'ai rencontré un problème de région désactivée (en mode marque transitoire). La fonction deactivate-mark
est appelée et je voudrais savoir d'où (et pourquoi) elle est appelée.
J'ai essayé M-x debug-on-entry RET deactivate-mark
et ça s'arrête mais je n'ai trouvé aucun moyen de trouver l'appelant. Le stacktrace affiché est:
Debugger entered--entering a function:
* deactivate-mark()
J'ai essayé M-x edebug-eval-defun
mais Edebug ne montre pas non plus l'appelant.
Comment savoir pourquoi (d'où) deactivate-mark
est appelé? Je recherche la fonction backtrace ou stacktrace.
ÉDITER:
Une advice-add
astuce:
(defun message-show-backtrace ()
(message "%s" (backtrace-frame 10)))
(advice-add deactivate-mark :before #'message-show-backtrace)
produit nil
en *Messages*
.
Edit: plus d'informations sur deactivate-mark
: http://emacshorrors.com/posts/deactivate-mark.html
deactiveate-mark
et utiliser dans votre fonction de conseil backtrace-frames
pour obtenir une vue de la pile d'appels entière si edebug ne montre pas ce que vous attendez.
advice-add
et backtrace-frame
. Cela n'a pas aidé.
self-insert-command
et que "self-insert-command est une fonction intégrée interactive en 'code source C'". " Ceci, ainsi que l'autre comportement noté jusqu'à présent, suggère que l'on devra déboguer avec gdb
.
emacs -Q
, activez le débogageM-x debug-on-entry deactivate-mark
, activez la marqueC-<SPC>
, tapez un caractère.