Class DiagnosticProvider
Отвечает за публикацию диагностик с использованием textDocument/publishDiagnostics,
предоставление диагностик по запросу textDocument/diagnostic
и уведомление об обновлении диагностик через workspace/diagnostic/refresh.
- See Also:
-
Field Summary
Fields -
Constructor Summary
ConstructorsConstructorDescriptionDiagnosticProvider(LanguageClientHolder clientHolder, ClientCapabilitiesHolder clientCapabilitiesHolder, ServerContextProvider serverContextProvider) -
Method Summary
Modifier and TypeMethodDescriptionvoidcomputeAndPublishDiagnostics(DocumentContext documentContext) Вычислить и опубликовать диагностики для документа.getDiagnostic(DocumentContext documentContext) Получить диагностики для документа (pull-модель).voidОбработчик событияLanguageServerConfigurationChangedEvent.voidОбработчик событияConfigurationTypesRegisteredEvent.voidОбработчик событияLanguageServerInitializeRequestReceivedEvent.voidОбработчик событияServerContextPopulatedEvent.voidpublishEmptyDiagnosticList(DocumentContext documentContext) Опубликовать пустой список диагностик для документа.booleanПроверить, поддерживает ли клиент pull-модель диагностик (textDocument/diagnostic).
-
Field Details
-
SOURCE
- See Also:
-
-
Constructor Details
-
DiagnosticProvider
@ConstructorProperties({"clientHolder","clientCapabilitiesHolder","serverContextProvider"}) public DiagnosticProvider(LanguageClientHolder clientHolder, ClientCapabilitiesHolder clientCapabilitiesHolder, ServerContextProvider serverContextProvider)
-
-
Method Details
-
computeAndPublishDiagnostics
Вычислить и опубликовать диагностики для документа.- Parameters:
documentContext- Контекст документа
-
getDiagnostic
Получить диагностики для документа (pull-модель).- Parameters:
documentContext- Контекст документа- Returns:
- Отчет с диагностиками
-
supportsPullDiagnostics
public boolean supportsPullDiagnostics()Проверить, поддерживает ли клиент pull-модель диагностик (textDocument/diagnostic).Признаком поддержки считается наличие возможности
textDocument.diagnosticв заявленных возможностях клиента. Для таких клиентов сервер не выполняет push-публикацию диагностик черезtextDocument/publishDiagnostics, а отдаёт их по запросу.- Returns:
true, если клиент поддерживает pull-модель диагностик, иначеfalse(в том числе если клиент ещё не подключён).
-
publishEmptyDiagnosticList
Опубликовать пустой список диагностик для документа.- Parameters:
documentContext- Контекст документа
-
handleInitializeEvent
@EventListener public void handleInitializeEvent(LanguageServerInitializeRequestReceivedEvent event) Обработчик событияLanguageServerInitializeRequestReceivedEvent.Проверяет поддержку клиентом workspace/diagnostic/refresh.
- Parameters:
event- Событие
-
handleConfigurationChangedEvent
@EventListener public void handleConfigurationChangedEvent(LanguageServerConfigurationChangedEvent event) Обработчик событияLanguageServerConfigurationChangedEvent.Отправляет клиенту запрос на обновление диагностик при изменении конфигурации.
- Parameters:
event- Событие
-
handleServerContextPopulatedEvent
Обработчик событияServerContextPopulatedEvent.После наполнения контекста сервера межфайловые диагностики уже открытых документов (неиспользуемые методы, обращения к общим модулям и т.п.) могли устареть, поэтому pull-клиенту отправляется запрос на их повторный расчёт через
workspace/diagnostic/refresh.- Parameters:
event- Событие наполнения контекста сервера
-
handleConfigurationTypesRegistered
@EventListener public void handleConfigurationTypesRegistered(ConfigurationTypesRegisteredEvent event) Обработчик событияConfigurationTypesRegisteredEvent.После регистрации конфигурационных типов diagnostic'и, опирающиеся на реестр типов (UnknownMember, EventHandler*, и т.п.), могут давать результат, отличный от того, что был вычислен до регистрации. Просим клиента перезапросить (pull) или push'им сами, если клиент не поддерживает refresh.
-