コンピューター サイエンスの講師のために Eclipse プラグインを作成したいと考えています。これは、xml ベースのファイル形式のカスタム エディターです。構文の強調表示などを実装しました。しかし、無効なコンテンツを表示するための注釈/マーカーの使用に関しては、行き詰まりました。
コンテンツが有効な場合、次のようになります。
有効なコンテンツの画像 http://image-upload.de/image/aPCSaa/6c799a671c.png
コンテンツが無効な場合は、次のようになります。
無効なコンテンツの画像 http://image-upload.de/image/4TdooQ/04d662f397.png
ご覧のとおり、無効な属性がマークされますが、問題は、これらの注釈の間で書式設定全体が失われているように見えることです。
org.eclipse.jface.text.reconciler.Reconciler
ドキュメントモデルを作成するために、コンテンツの遅延解析に使用します。このモデルは、テキストの書式設定と注釈の表示に使用されます。これはすべて の voidvoid process(DirtyRegion dirtyRegion)
メソッドで行われReconciler
ます。
私が使用するテキストの書式設定と<ITextViewer>.changeTextPresentation(textAttributes, false)
注釈の処理に使用します
IAnnotationModel annotationModel = <ISourceViewer>.getAnnotationModel();
IAnnotationModelExtension annotationModelExtension = (IAnnotationModelExtension) annotationModel;
annotationModelExtension.replaceAnnotations(oldAnnotations, newAnnotations);
はReconciler
swt スレッドを使用しないため、例外を回避するために次の構成を使用する必要があります。
<ITextViewer>.getTextWidget().getDisplay().asyncExec(new Runnable() {
@Override
public void run() {
<ITextViewer>.changeTextPresentation(textAttributes, false);
updateAnnotations(nodes);
}
});
ちなみに、ITextViewer
とISourceViewer
は同じビューア オブジェクトを意味します。
注釈型として、私は testet:org.eclipse.ui.workbench.texteditor.spelling
と他のいくつか、またカスタム型を持っていますが、すべて同じ結果になります。
私が間違っていることはよくわかりません.1回の呼び出しですべてが行われている可能性がありますか?
誰かがこの問題で私を助けてくれることを願っています。
前もって感謝します。