Class FoldingRangeProvider

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

@Component public final class FoldingRangeProvider extends Object
Провайдер для предоставления информации о сворачиваемых областях кода.

Обрабатывает запросы textDocument/foldingRange.

See Also:
  • Constructor Details

  • Method Details

    • handleInitializeEvent

      @EventListener(LanguageServerInitializeRequestReceivedEvent.class) public void handleInitializeEvent()
      Обработчик события LanguageServerInitializeRequestReceivedEvent.

      Кэширует клиентские возможности секции textDocument.foldingRange:

      • foldingRange.collapsedText (LSP 3.17) — определяет, отдавать ли клиенту текст-заглушку свёрнутого блока;
      • rangeLimit — максимальное число сворачиваемых областей, которое готов принять клиент. Отсутствие значения трактуется как отсутствие лимита.
    • getFoldingRange

      public List<FoldingRange> getFoldingRange(DocumentContext documentContext)
      Получить список сворачиваемых областей в документе.

      Сапплаеры всегда заполняют осмысленный текст-заглушку свёрнутого блока (FoldingRange.setCollapsedText(String)). Если клиент не заявил поддержку возможности textDocument.foldingRange.foldingRange.collapsedText (LSP 3.17), провайдер сбрасывает этот текст в null, чтобы клиент подставил собственную заглушку.

      Если клиент заявил лимит на число областей (textDocument.foldingRange.rangeLimit) и вычисленный список его превышает, список усекается до лимита с приоритизацией наиболее полезных областей (см. applyRangeLimit(List)). Если лимит не заявлен, возвращаются все области без изменений.

      Parameters:
      documentContext - Контекст документа
      Returns:
      Список областей, которые можно свернуть