The completion item provider interface defines the contract between extensions and IntelliSense.

Providers can delay the computation of the {@linkcode CompletionItem.detail detail} and {@linkcode CompletionItem.documentation documentation} properties by implementing the {@linkcode CompletionItemProvider.resolveCompletionItem resolveCompletionItem}-function. However, properties that are needed for the initial sorting and filtering, like sortText, filterText, insertText, and range, must not be changed during resolve.

Providers are asked for completions either explicitly by a user gesture or -depending on the configuration- implicitly when typing words or trigger characters.

Fields

@:optionaloptionalresolveCompletionItem:Null<(item:T, token:CancellationToken) ‑> ProviderResult<T>>

Given a completion item fill in more data, like {@link CompletionItem.documentation doc-comment} or {@link CompletionItem.detail details}.

The editor will only resolve a completion item once.

Note that this function is called when completion items are already showing in the UI or when an item has been selected for insertion. Because of that, no property that changes the presentation (label, sorting, filtering etc) or the (primary) insert behaviour ({@link CompletionItem.insertText insertText}) can be changed.

This function may fill in {@link CompletionItem.additionalTextEdits additionalTextEdits}. However, that means an item might be inserted before resolving is done and in that case the editor will do a best effort to still apply those additional text edits.

Parameters:

item

A completion item currently active in the UI.

token

A cancellation token.

Returns:

The resolved completion item or a thenable that resolves to of such. It is OK to return the given item. When no result is returned, the given item will be used.

provideCompletionItems(document:TextDocument, position:Position, token:CancellationToken, context:CompletionContext):ProviderResult<EitherType<Array<T>, CompletionList<T>>>

Provide completion items for the given position and document.

@link CompletionList completion list}, or a thenable that resolves to either. The lack of a result can be signaled by returning undefined, null, or an empty array.

Parameters:

document

The document in which the command was invoked.

position

The position at which the command was invoked.

token

A cancellation token.

context

How the completion was triggered.

Returns:

An array of completions, a {