2016-04-07 26 views
0

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

アノテーションモデルを設定しましたか?おそらく1つの 'AbstractMarkerAnnotationModel'を拡張したものでしょう –

+0

ありがとうございます。私は別の解決策を見つけました(下記参照)。ドキュメントプロバイダの基本クラスとして 'FileDocumentProvider'を使用します。このクラスはデフォルトで 'ResourceMarkerAnnotationModel'を作成します。それはすべて今働くようです。 – tonisuter

答えて

1

私はそれを自分で修正できました。

setPreferenceStore(MyPlugin.getDefault().getPreferenceStore()); 

を私はAnnotationPainterクラスにいくつかのブレークポイントを設定し、すべての 注釈が無効になっていたことに気づいた。問題は、私はTextEditorサブクラスのコンストラクタで自分の好みの店を設定することでした。この行をエディタから削除すると、注釈が表示されました。

また、マーカーを作成するだけで十分であることに気付きました。対応する注釈が自動的に追加されます。

関連する問題