Me encontré con un problema de que la región está desactivada (en modo de marca transitoria). Se deactivate-mark
llama a la función y me gustaría saber de dónde (y por qué) se llama.
Lo intenté M-x debug-on-entry RET deactivate-mark
y se detiene pero no encontré la manera de averiguar quién llamaba. Todo el seguimiento de pila mostrado es:
Debugger entered--entering a function:
* deactivate-mark()
Lo intenté M-x edebug-eval-defun
pero Edebug tampoco muestra a la persona que llama.
¿Cómo puedo saber por qué deactivate-mark
se llama (de dónde) ? Estoy buscando la funcionalidad de traza inversa o traza de pila.
EDITAR:
Un advice-add
truco:
(defun message-show-backtrace ()
(message "%s" (backtrace-frame 10)))
(advice-add deactivate-mark :before #'message-show-backtrace)
produce nil
en *Messages*
.
Editar: más información sobre deactivate-mark
: http://emacshorrors.com/posts/deactivate-mark.html
deactiveate-mark
y utilizar su función de asesoramiento backtrace-frames
para obtener una vista de toda la pila de llamadas si edebug no muestra lo que espera.
advice-add
y backtrace-frame
. No sirvió de nada.
self-insert-command
y "auto-inserción-comando es una función interactiva incorporada en 'código fuente C'". Esto, junto con el otro comportamiento observado hasta ahora, sugiere que habrá que depurar gdb
.
emacs -Q
, active la depuraciónM-x debug-on-entry deactivate-mark
, active la marcaC-<SPC>
, escriba un carácter.