과도 표시 모드에서 영역이 비활성화되는 문제가 발생했습니다. 이 함수 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
edebug가 예상 한 것을 보여주지 않으면 전체 콜 스택을 볼 수 있도록 조언
—
Jordon Biondo
deactiveate-mark
하고 조언 기능을 사용할 backtrace-frames
수 있습니다.
advice-add
및 에 대한 수정 사항이 추가되었습니다 backtrace-frame
. 도움이되지 않았습니다.
@AndrewSwann의 재생산과 관련하여 일반적으로 문자를 입력하면
—
Joe Corneli
self-insert-command
"self-insert-command는 대화식 내장 함수 인 'C 소스 코드'에 있습니다." 이것은 지금까지 언급 한 다른 동작과 함께로 디버깅해야 함을 나타 gdb
냅니다.
질문을 읽은 후 마크가 예기치 않게 비활성화 된 것처럼 들렸습니다. 한편 @AndrewSwann이 설명한 동작은 완벽하게 예상됩니다 (입력 한 내용이 영역이 비활성화 됨). 당신이 얻는 행동이 Andrew의 행동과 일치하면, 당신이하고 싶은 일을 명확히하십시오.
—
Malabarba
emacs -Q
하고 디버그를 켜고M-x debug-on-entry deactivate-mark
활성화 표시를 활성화C-<SPC>
한 다음 문자를 입력하십시오.