Class DiagnosticProvider

java.lang.Object
com.github._1c_syntax.bsl.languageserver.providers.DiagnosticProvider

@Component public final class DiagnosticProvider extends Object
Провайдер для диагностических сообщений.

Отвечает за публикацию диагностик с использованием textDocument/publishDiagnostics, предоставление диагностик по запросу textDocument/diagnostic и уведомление об обновлении диагностик через workspace/diagnostic/refresh.

See Also:
  • Field Details

  • Constructor Details

  • Method Details

    • computeAndPublishDiagnostics

      public void computeAndPublishDiagnostics(DocumentContext documentContext)
      Вычислить и опубликовать диагностики для документа.
      Parameters:
      documentContext - Контекст документа
    • getDiagnostic

      public DocumentDiagnosticReport getDiagnostic(DocumentContext documentContext)
      Получить диагностики для документа (pull-модель).
      Parameters:
      documentContext - Контекст документа
      Returns:
      Отчет с диагностиками
    • supportsPullDiagnostics

      public boolean supportsPullDiagnostics()
      Проверить, поддерживает ли клиент pull-модель диагностик (textDocument/diagnostic).

      Признаком поддержки считается наличие возможности textDocument.diagnostic в заявленных возможностях клиента. Для таких клиентов сервер не выполняет push-публикацию диагностик через textDocument/publishDiagnostics, а отдаёт их по запросу.

      Returns:
      true, если клиент поддерживает pull-модель диагностик, иначе false (в том числе если клиент ещё не подключён).
    • publishEmptyDiagnosticList

      public void publishEmptyDiagnosticList(DocumentContext documentContext)
      Опубликовать пустой список диагностик для документа.
      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

      @EventListener public void handleServerContextPopulatedEvent(ServerContextPopulatedEvent event)
      Обработчик события ServerContextPopulatedEvent.

      После наполнения контекста сервера межфайловые диагностики уже открытых документов (неиспользуемые методы, обращения к общим модулям и т.п.) могли устареть, поэтому pull-клиенту отправляется запрос на их повторный расчёт через workspace/diagnostic/refresh.

      Parameters:
      event - Событие наполнения контекста сервера
    • handleConfigurationTypesRegistered

      @EventListener public void handleConfigurationTypesRegistered(ConfigurationTypesRegisteredEvent event)
      Обработчик события ConfigurationTypesRegisteredEvent.

      После регистрации конфигурационных типов diagnostic'и, опирающиеся на реестр типов (UnknownMember, EventHandler*, и т.п.), могут давать результат, отличный от того, что был вычислен до регистрации. Просим клиента перезапросить (pull) или push'им сами, если клиент не поддерживает refresh.