#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 метода:
- documentAboutToBeChanged
- Документ изменен
Если мы используем documentChanged, каждый раз, когда пользователь вводит что-то в редакторе, метод будет выполняться.