Skip to content

Consider reducing requirements for results provided by extensions #142182

Open
@alexdima

Description

@alexdima

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}
		}
	}];
}

Metadata

Metadata

Labels

extension-hostExtension host issuesunder-discussionIssue is under discussion for relevance, priority, approach

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions