Eclipse - программно выделить несколько строк редактора - PullRequest
0 голосов
/ 25 марта 2020

В настоящее время я пытаюсь выделить несколько строк редактора (они могут не располагаться одна за другой - то есть комментарии распространяются по всему исходному файлу). Мне удалось программно открыть редактор и выделить одну строку с помощью -

IDE.openEditor(page, m);

, где m - IMarker.

Мой вопрос: как программно (в Java) выбрать несколько строк? Вы можете предположить, что у меня есть соответствующие маркеры для каждой строки, которую я хочу выделить sh, и, следовательно, вся соответствующая информация (lineNum et c.)

Большое спасибо.

1 Ответ

0 голосов
/ 26 марта 2020

Точно, так что я понял это - благодаря @ greg-449

Вот статья, которая очень помогла - http://cubussapiens.hu/2011/05/custom-markers-and-annotations-the-bright-side-of-eclipse/

Так эффективно вы необходимо определить собственный маркер в файле плагина. 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);

, который производит следующий вид аннотации; введите описание изображения здесь

...