2

Dave Love のnoweb-modeを使用して、LaTeX と C コードが混在するファイルを編集しています。愛のモードは、彼のマルチモードを使用して、モードを前後に切り替えます。この切り替えは、間接バッファを介して行われます。

Emacs 21 では、このモードはうまく機能しているようです。しかし、Emacs 23 への強制アップグレードにより、問題が明らかになりました。

  1. モード間の遷移を行うと、マークが失われます。

  2. 2 つの異なる可視ウィンドウで同じバッファを表示している場合、ウィンドウ A での移動によってウィンドウ B が移動することがあり、ウィンドウ B も移動しpointます。

これらの障害を診断して修復しようとしています。.中にすべてのバッファ/モード切り替えをオフにすることで、問題 1 を回避することができました(region-active-p)。しかし、問題 2 は私を完全に困惑させました。診断の仕方もわかりません。

助けを求めていますが、特に次の 2 つの質問のいずれかに対する回答を探しています。

  • この問題を診断するにはどうすればよいですか?

  • 間接バッファのセマンティクスに関する明確で完全な説明はどこにありますか? GNU Emacs Lisp リファレンス マニュアルには多くのことが書かれておらず、ソース コードを読むことが最善の次のステップであるかどうかはわかりません。

4

1 に答える 1

3

ご想像のとおり、セマンティクスとEmacsは2つの非常に別個の世界です。同様に、悲しいことに、「明確で完全な説明」はありません。基本的に、間接バッファは、バッファテキスト、テキストプロパティ、および一部の内部変数を共有しますが、個別のバッファローカル変数と個別のオーバーレイを保持します。共有されるものと共有されないものの間の分割は、おおむね恣意的です。さらに悪いことに、間接バッファが使用されることはめったにないため、バグや不当な仮定が必然的に忍び寄ります。問題を追跡するには、最初に信頼性の高い再現可能なレシピを考え出すのが最善の方法です。ベースバッファのマークが間接バッファのマーカーになるという奇妙な動作を再現できるので、どこかで単純なバグのように見えます(残念ながら、24.1では修正されていないようです)。お願いしますM-x report-emacs-bug

于 2012-06-19T02:18:06.097 に答える