Eclipse のドキュメントで示唆されているように、org.eclipse.core.resources.IncrementalProjectBuilder
各ソース ファイルをコンパイルする があり、個別にorg.eclipse.ui.editors.text.TextEditor
各ソース ファイルを編集できる もあります。各ソース ファイルは独自のコンパイル ユニットにコンパイルされますが、他の (既にコンパイルされた) ソース ファイルから型を参照できます。
これが重要な 2 つのタスクは次のとおりです。
- コンパイル (使用している型が実際に存在することを確認するため)
- オートコンプリート (タイプを調べて、そこに存在するプロパティ/メソッドを確認できるようにするため)
これを実現するために、コンパイルされたすべての型の表現をメモリに格納します (以下、「型ストア」と呼びます)。
私の質問は 2 つあります。
上記のタスク 1 はビルダーによって実行され、タスク 2 はエディターによって実行されます。両方がこの型ストアにアクセスできるようにするには、両方がアクセスできる静的ストアをどこかに作成する必要がありますか、または Eclipse はこの問題に対処するためのより適切な方法を提供しますか? 必要なときにビルダーとエディターをインスタンス化するのは、私ではなくEclipseであることに注意してください。
Eclipse を開くときに、タイプ ストアを再作成できるようにするためだけに、プロジェクト全体を再構築する必要はありません。これまでの私の最善の解決策は、このデータをどこかに保持し、そこからストアを再作成することです (おそらくプロジェクトを開いたときに)。これは、他のインクリメンタル コンパイラが通常行う方法ですか? Java のアプローチは、クラス ファイルからこのデータを効率的に抽出する特別なパーサーを使用することだと思います。
どんな洞察も本当に高く評価されます。これは私の最初の DSL です。