Class SemanticTokensProvider

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

@Component public class SemanticTokensProvider extends Object
Провайдер для предоставления семантических токенов.

Обрабатывает запросы textDocument/semanticTokens/full, textDocument/semanticTokens/full/delta и textDocument/semanticTokens/range.

See Also:
  • Constructor Details

  • Method Details

    • getSemanticTokensFull

      public SemanticTokens getSemanticTokensFull(DocumentContext documentContext, SemanticTokensParams params)
      Получить семантические токены для всего документа.
      Parameters:
      documentContext - Контекст документа
      params - Параметры запроса
      Returns:
      Семантические токены в дельта-кодированном формате
    • getSemanticTokensFullDelta

      public Either<SemanticTokens, SemanticTokensDelta> getSemanticTokensFullDelta(DocumentContext documentContext, SemanticTokensDeltaParams params)
      Получить дельту семантических токенов относительно предыдущего результата.
      Parameters:
      documentContext - Контекст документа
      params - Параметры запроса с previousResultId
      Returns:
      Либо дельту токенов, либо полные токены, если предыдущий результат недоступен
    • getSemanticTokensRange

      public SemanticTokens getSemanticTokensRange(DocumentContext documentContext, SemanticTokensRangeParams params)
      Получить семантические токены для указанного диапазона документа.
      Parameters:
      documentContext - Контекст документа
      params - Параметры запроса с диапазоном
      Returns:
      Семантические токены для указанного диапазона в дельта-кодированном формате
    • handleDocumentClosed

      @EventListener public void handleDocumentClosed(ServerContextDocumentClosedEvent event)
      Обрабатывает событие закрытия документа в контексте сервера.

      При закрытии документа очищает кэшированные данные семантических токенов.

      Parameters:
      event - событие закрытия документа
    • handleDocumentRemoved

      @EventListener public void handleDocumentRemoved(ServerContextDocumentRemovedEvent event)
      Обрабатывает событие удаления документа из контекста сервера.

      При удалении документа очищает кэшированные данные семантических токенов.

      Parameters:
      event - событие удаления документа
    • handleServerContextPopulated

      @EventListener public void handleServerContextPopulated(ServerContextPopulatedEvent event)
      Обрабатывает событие завершения наполнения контекста сервера.

      Часть сапплаеров (например, подсветка вызовов методов) опирается на индекс ссылок, который наполняется только после populateContext. Если клиент запросил токены до наполнения индекса, подсветка остаётся устаревшей до следующей правки файла. Поэтому по завершении наполнения контекста инициируется запрос workspace/semanticTokens/refresh.

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

      public void refreshSemanticTokens()
      Отправить запрос на обновление семантических токенов.

      Запрос отправляется только в случае поддержки клиентом возможности workspace.semanticTokens.refreshSupport.

    • clearCache

      protected void clearCache(URI uri)
      Очищает кэшированные данные токенов для указанного документа.
      Parameters:
      uri - URI документа, для которого нужно очистить кэш