Ho riscontrato un problema per cui la regione è disattivata (in modalità contrassegno transitorio). La funzione deactivate-mark
si chiama e vorrei scoprire da dove (e perché) viene chiamata.
Ho provato M-x debug-on-entry RET deactivate-mark
e si interrompe ma non ho trovato il modo di trovare il chiamante. L'intero stacktrace visualizzato è:
Debugger entered--entering a function:
* deactivate-mark()
Ho provato M-x edebug-eval-defun
ma Edebug non mostra neanche il chiamante.
Come faccio a sapere perché (da dove) deactivate-mark
viene chiamato? Sono alla ricerca di funzionalità backtrace o stacktrace.
MODIFICARE:
Un advice-add
trucco:
(defun message-show-backtrace ()
(message "%s" (backtrace-frame 10)))
(advice-add deactivate-mark :before #'message-show-backtrace)
produce nil
in *Messages*
.
Modifica: maggiori informazioni su deactivate-mark
: http://emacshorrors.com/posts/deactivate-mark.html
deactiveate-mark
e utilizzare la funzione di avviso backtrace-frames
per ottenere una vista dell'intero stack di chiamate se edebug non mostra ciò che ci si aspetta.
advice-add
e backtrace-frame
. Non ha aiutato
self-insert-command
e "il comando di autoinserimento è una funzione integrata interattiva nel" codice sorgente C "." Questo, insieme all'altro comportamento osservato finora, suggerisce che si dovrà eseguire il debug gdb
.
emacs -Q
, attiva il debugM-x debug-on-entry deactivate-mark
, attiva il segnoC-<SPC>
, digita un carattere.