Class CompletionProvider

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

@Component public final class CompletionProvider extends Object
Провайдер для запросов textDocument/completion.

Поддерживает:

  • dot-completion: после точки выводится union членов всех типов выражения слева;
  • no-dot completion: глобальные функции, классы (в позиции после Новый), ключевые слова + локальные методы документа, отфильтрованные по префиксу.
See Also:
  • Constructor Details

  • Method Details

    • handleInitializeEvent

      @EventListener(LanguageServerInitializeRequestReceivedEvent.class) public void handleInitializeEvent()
    • getCompletion

      public CompletionList getCompletion(DocumentContext documentContext, CompletionParams params)
      Returns:
      предложения автодополнения для указанной позиции, обёрнутые в CompletionList. isIncomplete = false: список содержит все валидные кандидаты для текущего префикса — клиент может фильтровать дальше локально, повторно к серверу обращаться не обязан.
    • resolveCompletionItem

      public CompletionItem resolveCompletionItem(CompletionItem unresolved, CompletionData data)
      Разрешает отложенную документацию completion item (completionItem/resolve).

      По data-ключу восстанавливается источник описания: для глобальной функции — она сама по имени в глобальной области видимости, для члена типа — тип-владелец и член. После чего documentation собирается тем же способом, что был бы при жадной сборке. Поле data очищается для экономии трафика.

      И globalScopeProvider, и typeService — workspace-scoped бины, поэтому вызывающий обязан установить workspace-контекст текущего документа перед вызовом (см. extractData(CompletionItem) для получения uri документа).

      Parameters:
      unresolved - completion item, пришедший от клиента на разрешение.
      data - ключ восстановления документации, извлечённый из item через extractData(CompletionItem).
      Returns:
      тот же item с проставленной documentation и очищенным data.
    • extractData

      public @Nullable CompletionData extractData(CompletionItem item)
      Извлекает CompletionData из CompletionItem.getData().

      При прямом серверном вызове data — уже объект CompletionData; после round-trip через клиента lsp4j отдаёт её как JSON (Map/JsonElement), поэтому нетипизированное значение десериализуется через JsonMapper.

      Parameters:
      item - completion item, из которого извлекаются данные.
      Returns:
      извлечённые данные либо null, если data отсутствует.