Eu atingi um problema em que a região está desativada (no modo de marca transitória). A função deactivate-marké chamada e eu gostaria de descobrir de onde (e por que) é chamada.
Eu tentei M-x debug-on-entry RET deactivate-marke para, mas não encontrei maneira de descobrir a pessoa que ligou. Todo o rastreamento de pilha exibido é:
Debugger entered--entering a function:
* deactivate-mark()
Eu tentei, M-x edebug-eval-defunmas o Edebug também não mostra o chamador.
Como descubro por que (de onde) deactivate-marké chamado? Estou procurando backtrace ou functinality stacktrace.
EDITAR:
Um advice-addtruque:
(defun message-show-backtrace ()
(message "%s" (backtrace-frame 10)))
(advice-add deactivate-mark :before #'message-show-backtrace)
produz nilem *Messages*.
Edit: mais informações sobre deactivate-mark: http://emacshorrors.com/posts/deactivate-mark.html
deactiveate-marke, em sua função de aconselhamento, usar backtrace-framespara obter uma visão de toda a pilha de chamadas se o edebug não estiver mostrando o que você espera.
advice-adde backtrace-frame. Não ajudou.
self-insert-commande "o comando self-insert-command é uma função interna interativa em 'código-fonte C'". Isso, junto com o outro comportamento observado até agora, sugere que um terá que ser depurado gdb.
emacs -Q, ativar a depuraçãoM-x debug-on-entry deactivate-mark, ativar a marcaC-<SPC>, digite um caractere.