У мене виникла проблема, що область деактивована (у режимі перехідних позначок). Функція deactivate-mark
викликається, і я хотів би дізнатися, звідки (і чому) вона викликана.
Я спробував, M-x debug-on-entry RET deactivate-mark
і це зупиняється, але я не знайшов способу дізнатись абонента. Весь відображений стек-трек:
Debugger entered--entering a function:
* deactivate-mark()
Я спробував, M-x edebug-eval-defun
але Edebug також не показує абонента.
Як дізнатись, чому (звідки) deactivate-mark
викликається? Я шукаю функцію зворотності або складності.
Редагувати:
advice-add
трюк:
(defun message-show-backtrace ()
(message "%s" (backtrace-frame 10)))
(advice-add deactivate-mark :before #'message-show-backtrace)
виробляє nil
в *Messages*
.
Редагувати: більше інформації про deactivate-mark
: http://emacshorrors.com/posts/deactivate-mark.html
deactiveate-mark
а також у своїй функції порад, backtrace-frames
щоб отримати уявлення про весь стек викликів, якщо edebug не відображає те, що ви очікуєте.
advice-add
та backtrace-frame
. Це не допомогло.
self-insert-command
а "самовстановлення-команда - це інтерактивна вбудована функція у" вихідному коді C "." Це, разом з іншою поведінкою, відзначеною до цього часу, говорить про те, що потрібно буде налагоджувати проблеми gdb
.
emacs -Q
, увімкнути налагодженняM-x debug-on-entry deactivate-mark
, активувати позначкуC-<SPC>
, ввести символ.