java Eclipse -以编程方式突出显示编辑器的多行

ddrv8njm  于 2023-05-12  发布在  Java
关注(0)|答案(1)|浏览(140)

我目前正试图突出显示编辑器的多行代码(它们可能不是一行接一行的--即注解遍布整个源文件)。我已经能够以编程方式打开一个编辑器并突出显示一行-

IDE.openEditor(page, m);

其中m是一个IMarker。
我的问题是如何以编程方式(在Java中)选择多行。您可以假设我希望突出显示的每一行都有相关标记,因此所有相关信息(lineNum等)
非常感谢。

8zzbczxx

8zzbczxx1#

好吧,我已经弄明白了-感谢@greg-449
这里是一篇文章,极大地帮助-http://cubussapiens.hu/2011/05/custom-markers-and-annotations-the-bright-side-of-eclipse/
因此,您必须在plugin.xml文件中定义一个自定义标记沿着为其定义一个自定义注解;

<extension
      point="org.eclipse.ui.editors.annotationTypes">
   <type
         markerType="FSM.MARKER"
         name="FSM.MARKER">
   </type>
</extension>

<extension
        id="FSM.MARKER"
        name="FSM.MARKER"
        point="org.eclipse.core.resources.markers">
    <super
        type="org.eclipse.core.resources.textmarker">
    </super>
</extension>

<extension
     point="org.eclipse.ui.editors.markerAnnotationSpecification">
  <specification
        annotationType="FSM.MARKER"
        colorPreferenceKey="FSM.MARKER.COLOR"
        colorPreferenceValue="0,125,255"
        contributesToHeader="false"
        highlightPreferenceKey="FSM.MARKER.highlight"
        highlightPreferenceValue="true"
        includeOnPreferencePage="true"
        label="FSM.MARKER"
        overviewRulerPreferenceKey="org.eclipse.viatra2.slice.overview"
        overviewRulerPreferenceValue="true"
        presentationLayer="0"
        textPreferenceKey="org.eclipse.viatra2.slice.text"
        textPreferenceValue="true"
        textStylePreferenceValue="BOX"
        verticalRulerPreferenceKey="org.eclipse.viatra2.slice.ruler"
        verticalRulerPreferenceValue="true">
   </specification>
</extension>

然后在你的代码中你可以创建一个自定义标记;

IMarker marker = root.createMarker("FSM.MARKER");
marker.setAttribute(IMarker.LINE_NUMBER, lineNum);
marker.setAttribute(IMarker.SOURCE_ID, path);
//if (region.getOffset() != 0) {
       marker.setAttribute(IMarker.CHAR_START,charStart);
       marker.setAttribute(IMarker.CHAR_END,charEnd);

它产生以下类型的注解; enter image description here

相关问题