Как показать синтаксические ошибки в плагине редактора eclipse

StackOverflow https://stackoverflow.com/questions/392775

Вопрос

Как я могу указать синтаксические ошибки (например,недопустимая последовательность токенов) в плагине редактора eclipse, как и в редакторе Java eclipse, т.е.красными волнистыми подчеркиваниями, красным маркером на полосе прокрутки, к которому можно перейти, и пояснительным сообщением при наведении курсора на любой из них?

Я пишу плагин редактора eclipse для собственного формата файла (в частности, «формата файла змеи» игрового движка Shark3D).Я реализовал сканер для подсветки синтаксиса и схемы.

  • Что касается подчеркиваний, мне просто нужно, чтобы сканер возвращал IToken с «извилистым подчеркиванием» TextAttribute вместо обычного, или есть какой-то особый механизм обозначения синтаксических ошибок?
  • Как реализовать маркеры полосы прокрутки?Является IAnnotationModel соответствующий интерфейс здесь?Если да, то где мне зарегистрировать реализацию, чтобы появились маркеры?
  • Я нашел только SourceViewerConfiguration.getAnnotationHover(), что позволило бы мне реализовать поведение наведения, но только для «аннотации», что, как я полагаю, означает маркеры полосы прокрутки. Как мне реализовать поведение наведения для самого текста?

Я был бы рад конкретным советам, а также URL-адресу учебника, который описывает это - справочные документы и примеры eclipse, похоже, этого не делают.

Редактировать:Маркеры — лучшее решение этой проблемы.Рабочий пример их использования можно найти в примере кода плагина в org.eclipse.ui.examples.readmetool.AddReadmeMarkerAction

Это было полезно?

Решение

Вам следует использовать маркеры.

Ниже приведен пример, взятый из «Руководства Java-разработчика по Eclipse»:

<extension point="org.eclipse.core.resources.markers"  
            id="snakesyntax"  
            name="Snake syntax error">  
    <super type="org.eclipse.core.resources.problemmarker" />  
    <super type="org.eclipse.core.resources.textmarker" />  
    <persistent value="true" />
<extension>

IMarker marker = res.createMarker("com.ibm.tool.resources.snakesyntax");

marker.setAttribute(IMarker.SEVERITY, 0);
marker.setAttribute(IMarker.CHAR_START, startOfSyntaxError);
marker.setAttribute(IMarker.CHAR_END, endOfSyntaxError);
marker.setAttribute(IMarker.LOCATION, "Snake file");
marker.setAttribute(IMarker.MESSAGE, "Syntax error");

Другие советы

Правильный способ — использовать интерфейс маркера.

Маркеры — это, по сути, модель, которая сопоставляет объекты-маркеры с местоположениями в исходном коде, поэтому это имеет смысл в ситуациях, когда в нескольких файлах могут возникнуть ошибки.(см. интерфейс IMarker)

Более дешевый вариант, если вы хотите добавить разметку в текущий редактор, а не во весь проект, — использовать аннотации, которые вы можете добавить и удалить самостоятельно.

Маркеры представлены в пользовательском интерфейсе как аннотации, но Eclipse сам добавляет и удаляет аннотации.Благодаря прямым аннотациям вы все контролируете.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top