Class CompletionProvider
java.lang.Object
com.github._1c_syntax.bsl.languageserver.providers.CompletionProvider
Провайдер для запросов
textDocument/completion.
Поддерживает:
- dot-completion: после точки выводится union членов всех типов выражения слева;
- no-dot completion: глобальные функции, классы (в позиции после
Новый), ключевые слова + локальные методы документа, отфильтрованные по префиксу.
- See Also:
-
Constructor Summary
ConstructorsConstructorDescriptionCompletionProvider(TypeService typeService, GlobalScopeProvider globalScopeProvider, OScriptLibraryIndex oScriptLibraryIndex, LanguageServerConfiguration configuration, ClientCapabilitiesHolder clientCapabilitiesHolder, JsonMapper jsonMapper, FuzzyMatcher fuzzyMatcher) -
Method Summary
Modifier and TypeMethodDescriptionextractData(CompletionItem item) ИзвлекаетCompletionDataизCompletionItem.getData().getCompletion(DocumentContext documentContext, CompletionParams params) voidresolveCompletionItem(CompletionItem unresolved, CompletionData data) Разрешает отложенную документацию completion item (completionItem/resolve).
-
Constructor Details
-
CompletionProvider
@ConstructorProperties({"typeService","globalScopeProvider","oScriptLibraryIndex","configuration","clientCapabilitiesHolder","jsonMapper","fuzzyMatcher"}) public CompletionProvider(TypeService typeService, GlobalScopeProvider globalScopeProvider, OScriptLibraryIndex oScriptLibraryIndex, LanguageServerConfiguration configuration, ClientCapabilitiesHolder clientCapabilitiesHolder, JsonMapper jsonMapper, FuzzyMatcher fuzzyMatcher)
-
-
Method Details
-
handleInitializeEvent
@EventListener(LanguageServerInitializeRequestReceivedEvent.class) public void handleInitializeEvent() -
getCompletion
- Returns:
- предложения автодополнения для указанной позиции, обёрнутые в
CompletionList.isIncomplete = false: список содержит все валидные кандидаты для текущего префикса — клиент может фильтровать дальше локально, повторно к серверу обращаться не обязан.
-
resolveCompletionItem
Разрешает отложенную документацию 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
ИзвлекаетCompletionDataизCompletionItem.getData().При прямом серверном вызове data — уже объект
CompletionData; после round-trip через клиента lsp4j отдаёт её как JSON (Map/JsonElement), поэтому нетипизированное значение десериализуется черезJsonMapper.- Parameters:
item- completion item, из которого извлекаются данные.- Returns:
- извлечённые данные либо
null, если data отсутствует.
-