Me encontré con un problema de que la región está desactivada (en modo de marca transitoria). Se deactivate-markllama 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-marky 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-defunpero Edebug tampoco muestra a la persona que llama.
¿Cómo puedo saber por qué deactivate-markse llama (de dónde) ? Estoy buscando la funcionalidad de traza inversa o traza de pila.
EDITAR:
Un advice-addtruco:
(defun message-show-backtrace ()
(message "%s" (backtrace-frame 10)))
(advice-add deactivate-mark :before #'message-show-backtrace)
produce nilen *Messages*.
Editar: más información sobre deactivate-mark: http://emacshorrors.com/posts/deactivate-mark.html

emacs -Q, active la depuraciónM-x debug-on-entry deactivate-mark, active la marcaC-<SPC>, escriba un carácter.deactiveate-marky utilizar su función de asesoramientobacktrace-framespara obtener una vista de toda la pila de llamadas si edebug no muestra lo que espera.advice-addybacktrace-frame. No sirvió de nada.self-insert-commandy "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 depurargdb.Respuestas:
De
command_loop_1adentrokeyboard.c.Ese parece ser el único lugar donde
Qdeactivate_markse llama en todossrc/*.c. Así que supongo que esto es con lo que te estás encontrando.Tenga en cuenta, no soy un experto en Emacs C. I hurgó con
gdb --args src/emacs -Qdespués de leer Cómo compilar emacs con símbolos de depuración? .fuente