ASTを更新し、エラーのマーカーがあれば作成するリコンサイル機能を備えたカスタムテキストエディタを作成しようとしています。エディタの左の定規と問題のビューに表示されるマーカーを追加することができました。しかし、私はまた、それらのエラーにテキストに下線を引いてもらいたい。それは動作しません。本文には下線が引かれていません。ただし、問題ビュー内のエラーのいずれかをダブルクリックすると、テキストエディタの対応するテキストが選択されます。私が理解する限り、私はマーカーに加えて注釈を追加する必要があります。カスタムEclipseテキストエディタの注釈が表示されない
final IResource resource = ResourceUtil.getResource(getEditorInput());
final IMarker marker = resource.createMarker("com.test.myproblemmarker");
marker.setAttribute(IMarker.MESSAGE, "hello");
marker.setAttribute(IMarker.CHAR_START, 2);
marker.setAttribute(IMarker.CHAR_END, 10);
marker.setAttribute(IMarker.SEVERITY, IMarker.SEVERITY_ERROR);
final IDocumentProvider idp = getDocumentProvider();
final IDocument document = idp.getDocument(getEditorInput());
final IAnnotationModel iamf = idp.getAnnotationModel(getEditorInput());
final SimpleMarkerAnnotation ma = new SimpleMarkerAnnotation("org.eclipse.ui.workbench.texteditor.error", marker);
ma.setText("hello");
iamf.connect(document);
iamf.addAnnotation(ma, new Position(2, 8));
ma.update();
iamf.disconnect(document);
ma.update();
関連する部分をplugin.xml
から:これは私がこれまで試してみました何である
<extension id="com.test.problemmarker" point="org.eclipse.core.resources.markers" name="A Problem">
<super type="org.eclipse.core.resources.problemmarker"/>
<super type="org.eclipse.core.resources.textmarker"/>
<persistent value="true"/>
</extension>
<extension point="org.eclipse.ui.editors.markerAnnotationSpecification" id="myannotationspecification" name="MyAnnotation">
<specification
annotationType="com.test.problemannotation"
label="MyAnnotation"
icon="icons/icon16x16.png"
overviewRulerPreferenceKey="clruler"
overviewRulerPreferenceValue="true"
colorPreferenceKey="clcolor"
colorPreferenceValue="255,0,0"
textPreferenceKey="cltext"
textPreferenceValue="true"
verticalRulerPreferenceKey="clvertical"
verticalRulerPreferenceValue="true"
textStylePreferenceKey="clstyle"
textStylePreferenceValue="UNDERLINE"
presentationLayer="4">
</specification>
</extension>
<extension point="org.eclipse.ui.editors.annotationTypes">
<type
markerSeverity="2"
super="org.eclipse.ui.workbench.texteditor.error"
name="com.test.problemannotation"
markerType="com.test.problemmarker"/>
</extension>
カスタムテキストエディタはTextEditor
から継承し、競合回避がMonoReconciler
です。既存のエディタ/リコンサイルの実装を見ると、かなり標準的なセットアップのようです。私は助けていただきありがとうございます!
アノテーションモデルを設定しましたか?おそらく1つの 'AbstractMarkerAnnotationModel'を拡張したものでしょう –
ありがとうございます。私は別の解決策を見つけました(下記参照)。ドキュメントプロバイダの基本クラスとして 'FileDocumentProvider'を使用します。このクラスはデフォルトで 'ResourceMarkerAnnotationModel'を作成します。それはすべて今働くようです。 – tonisuter