У мене виникла проблема, що область деактивована (у режимі перехідних позначок). Функція 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>, ввести символ.