2012-06-15 2 views
2

Dave Love의 noweb-mode을 사용하여 LaTeX와 C 코드가 혼합 된 파일을 편집하고 있습니다. 사랑의 모드는 자신의 multi-mode을 사용하여 모드간에 앞뒤로 전환합니다. 이 전환은 간접 버퍼를 통해 수행됩니다.간접 버퍼와 관련된 emacs lisp 문제를 진단하는 방법은 무엇입니까?

이맥스 21에서는 모드가 잘 작동하는 것처럼 보입니다. 그러나 Emacs 23으로의 강제 업그레이드로 인해 문제가 발견되었습니다.

  1. 모드간에 전환을 수행하면 표시가 손실됩니다.

  2. 두 개의 서로 다른 보이는 창에서 동일한 버퍼를 볼 때 창 A에서의 움직임은 종종 창 B에서 움직임을 일으키고 창 B의 point도 이동하게됩니다.

이러한 결함을 진단하고 복구하려고합니다. (region-active-p) 동안 모든 버퍼/모드 전환을 해제하여 문제 1을 해결할 수있었습니다. 그러나 문제 2는 완전히 저음을 줬다. 나는 그것을 진단하는 방법조차 모른다.

나는 어떤 도움을 찾고 있지만,하고이 두 질문 중 하나 특히 답변 :

  • 가 어떻게이 문제를 진단 할 것인가?

  • 간접 버퍼의 의미에 대한 명확하고 자세한 설명은 어디에서 찾을 수 있습니까? GNU Emacs Lisp Reference Manual은 그다지 말하지 않으며, 소스 코드를 읽는 것이 최선의 다음 단계인지 확신 할 수 없습니다.

+0

문제를 해결해야한다는 점에서 공식적으로 발표 된 Emacs 24를 사용해 보시기 바랍니다. – phils

+0

@phils 데비안에 추가되기를 기다리고 있습니다 –

+0

이 경우에는 간접 버퍼 메커니즘 자체에 문제가 있다고 결론을 내릴 경우 제안 할 수있는 것은'M-x report-emacs-bug'입니다. 'emacs -Q'에서 문제를 복제하는 방법은 확실히 유용 할 것입니다. – phils

답변

3

의미와 이맥스는 상상할 수있는 것처럼 매우 별개의 두 세계입니다. 마찬가지로 슬프게도 "명확하고 완전한 설명"이 없습니다. 기본적으로 간접 버퍼는 별도의 버퍼 로컬 변수와 별도의 오버레이를 유지하면서 버퍼 텍스트, 텍스트 속성 및 일부 내부 변수를 공유합니다. 공유되는 것과 그렇지 않은 것의 구분은 대체로 임의적입니다. 상황을 악화 시키려면 간접 버퍼가 거의 사용되지 않으므로 버그와 부당한 가정은 필연적으로 들어갑니다. 문제를 추적하려면 최상의 재사용 방법을 사용해야합니다. 기본 버퍼의 마크가 간접 버퍼의 마커가되는 곳에서 흔히 볼 수있는 이상한 동작을 재현 할 수 있습니다. 어딘가에 평범한 버그처럼 보입니다 (슬프게도 24.1에서 수정되지 않은 것 같습니다). M-x report-emacs-bug을 입력하십시오.