Open
Description
notice how the return type is now: ProviderResult<data<T[] | CompletionList<T>>>
export type data<T> = T extends Function
? never
: T extends object // recurse
? { [k in keyof T]: data<T[k]>; }
: T;
export interface CompletionItemProvider<T extends CompletionItem = CompletionItem> {
//...
provideCompletionItems(document: TextDocument, position: Position, token: CancellationToken, context: CompletionContext): ProviderResult<data<T[] | CompletionList<T>>>;
//...
}
this would allow an extension to use the following (and not need to allocate a real range using new vscode.Range
):
provideCompletionItems(/*...*/) {
return [{
label: 'hello',
range: {
start: { line: 10, character: 0 },
end: { line: 10, character: 1}
}
}];
}