Связан ли валидатор исходного кода (org.eclipse.wst.sse.ui.sourcevalidation) с редактором или только с типом содержимого?

#java #eclipse #eclipse-rcp

Вопрос:

В настоящее время у меня есть валидатор исходного кода(org.eclipse.wst.sse.ui.sourcevalidation) для проверки исходного кода html:

 <extension point="org.eclipse.wst.sse.ui.sourcevalidation">
    <validator
        scope="total"
        class="com.test.HtmlValidator"
        id="com.test.HtmlValidator.total">
        <contentTypeIdentifier
            id="org.eclipse.wst.html.core.htmlsource">
            <partitionType id="org.eclipse.wst.html.HTML_DEFAULT"/>
            <partitionType id="org.eclipse.wst.html.HTML_DECLARATION"/>
            <partitionType id="org.eclipse.wst.html.HTML_COMMENT"/>
        </contentTypeIdentifier>
    </validator>
 

Валидатор исходного кода работает, как и ожидалось, с редактором html по умолчанию (org.eclipse.wst.html.core.htmlsource.source), но если я открою те же файлы с помощью универсального редактора Eclipse (org.eclipse.ui.genericeditor.GenericEditor, веб-разработчик Eclipse Wild использует его для открытия всех файлов веб-разработки) валидатор исходного кода не работает.

Пока я не узнаю, что валидатор исходного кода работает непосредственно с типом контента, а не с редактором, мой вопрос здесь заключается в том, что я должен сделать, чтобы валидатор работал с обоими редакторами?

Комментарии:

1. В этом руководстве , похоже, говорится, что оно доступно только в редакторах, основанных на редакторе структурированного исходного кода Eclipse WTP

2. Я нашел способ добавить валидатор в редактор org.eclipse.ui.generic. Редактор, использующий org.eclipse.wst.validation.validatorV2, но единственная проблема в том, что validatorV2 запускается только вручную, @greg-449 знаете ли вы, как настроить validatorV2 для исправления изменений файлов, таких как sse.ui.sourcevalidation?

Ответ №1:

Чтобы решить эту проблему, я нашел обходной путь с помощью org.eclipse.core.точка расширения filebuffers.documentSetup, эта точка расширения выполняет метод IDocumentSetupParticipant.setup(документ IDocument), преимущество этой точки расширения в том, что она не зависит от редактора. org.eclipse.core.файловые буферы.documentSetup выполняется, когда файл с определенным типом содержимого открыт с помощью любого редактора.

 <extension
       point="org.eclipse.core.filebuffers.documentSetup">
   <participant
      class="setup.HTMLDocumentSetup"
      contentTypeId="org.eclipse.wst.html.core.htmlsource">
    </participant>
 </extension>
 

В IDocumentSetupParticipant.setup мы можем зарегистрировать IDocumentListener, этот интерфейс определяет 2 метода:

  1. documentAboutToBeChanged
  2. Документ изменен

Если мы используем documentChanged, каждый раз, когда пользователь вводит что-то в редакторе, метод будет выполняться.