3

そこで、ユーザーがファイルに対して行った編集を監視するEclipse4.2用のプラグインを開発しようとしています。

これは私の最初のEclipseプラグインであり、準備するために、Eclipseプラグイン開発のチートシート(HelloWorld)をウォークスルーし、ドキュメントとAPIを調べてhelp.eclipse.orgに何時間も費やしました。必要なツールについてはある程度わかっていると思いますが、それらのツールを組み合わせて自分のやりたいことを実行する方法がわかりません。

望ましい結果:(Java)エディターに追加されたすべての新しい文字と、すべての削除を通知し続けるプラグインを用意します。これには、Eclipseが行うこと(変数の自動補完、中括弧)と、ユーザーが入力する内容が含まれます。

役立つ可能性のあるツール: IResourceChangeListenerは、ワークスペースの変更を表すアクセス可能なIResourceDeltaを使用してIResourceChangeEventを提供するため、役立つと思います。また、エディターはEditorPartを拡張しているので、関連するエディターにIPropertyChangeListenerを追加することも役立つと思います。

私は適切なツールを持っていると思いますが、私が望むようにそれらを組み立てる方法がわかりません。

質問
上記のツールは、その仕事に適したものですか?
すべてのエディターのリストを開く、または開く予定のリストを取得してリスナーを追加するにはどうすればよいですか?
Eclipseプラグインのプログラミング方法を学ぶためのリソースに関する追加のヒントはありますか?

4

2 に答える 2

2

はいといいえ。IResourceChangedListenerリソース(ファイル)が変更されると、がトリガーされます。ほとんどのエディターでは、これはファイルを保存するユーザーに対応します。

ほぼリアルタイムで入力を監視するための1つのアプローチはMonoReconciler、ユーザーがたとえば0.5秒間アイドル状態になった後、を使用してバッファーの変更をキャッチすることです。これがJDTの仕組みです。

さて、あなたがの作成者であれば、これはすべて簡単ですEditorPart。監視するエディタに応じて、そのエディタを取得し、必要に応じてIDocumentリスナーを追加する必要があります。ドキュメントを参照してください。その価値のために、Javaエディターが使用するIIRC ProjectionDocument

于 2012-07-14T15:52:52.347 に答える
2

Krumelurのヒントは私に良い出発点を与えてくれました。DocumentEventによって返されるsは、IDocumentListener何が起こったかの文字分析によって文字を取得するのに十分な粒度です。

IEditorPart editor = ...;  
IEditorInput input = editor.getEditorInput();  
IDocument document=(((ITextEditor)editor).getDocumentProvider()).getDocument();

document.addDocumentListener(new IDocumentListener() {

        @Override
        public void documentChanged(DocumentEvent event) 
        {
            System.out.println("Change happened: " + event.toString());
        }

        @Override
        public void documentAboutToBeChanged(DocumentEvent event) {
            System.out.println("I predict that the following change will occur: "+event.toString());


        }
    };
});

org.eclipse.ui.startup拡張する必要がある限り、上記のコードに到達するまで、一連のリスナーを拡張して追加しました。

これが私が何であったかを探している他の誰かに役立つことを願っています。

于 2012-07-17T16:37:50.570 に答える