Skip to content

Commit 7288d30

Browse files
authored
make sure extension completion item provider have their extension identifier set correctly (microsoft#185685)
1 parent e911605 commit 7288d30

File tree

4 files changed

+9
-8
lines changed

4 files changed

+9
-8
lines changed

src/vs/editor/contrib/suggest/browser/suggestController.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -513,7 +513,7 @@ export class SuggestController implements IEditorContribution {
513513
};
514514

515515
this._telemetryService.publicLog2<AcceptedSuggestion, AcceptedSuggestionClassification>('suggest.acceptedSuggestion', {
516-
providerId: item.extensionId?.value ?? 'unknown',
516+
providerId: item.extensionId?.value ?? item.provider._debugDisplayName ?? 'unknown',
517517
kind: item.completion.kind,
518518
basenameHash: hash(basename(model.uri)).toString(16),
519519
languageId: model.getLanguageId(),

src/vs/workbench/api/browser/mainThreadLanguageFeatures.ts

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -488,7 +488,7 @@ export class MainThreadLanguageFeatures extends Disposable implements MainThread
488488

489489
// --- suggest
490490

491-
private static _inflateSuggestDto(defaultRange: IRange | { insert: IRange; replace: IRange }, data: ISuggestDataDto): languages.CompletionItem {
491+
private static _inflateSuggestDto(defaultRange: IRange | { insert: IRange; replace: IRange }, data: ISuggestDataDto, extensionId: ExtensionIdentifier): languages.CompletionItem {
492492

493493
const label = data[ISuggestDataDtoField.label];
494494
const commandId = data[ISuggestDataDtoField.commandId];
@@ -497,6 +497,7 @@ export class MainThreadLanguageFeatures extends Disposable implements MainThread
497497

498498
return {
499499
label,
500+
extensionId,
500501
kind: data[ISuggestDataDtoField.kind] ?? languages.CompletionItemKind.Property,
501502
tags: data[ISuggestDataDtoField.kindModifier],
502503
detail: data[ISuggestDataDtoField.detail],
@@ -520,17 +521,17 @@ export class MainThreadLanguageFeatures extends Disposable implements MainThread
520521
};
521522
}
522523

523-
$registerCompletionsProvider(handle: number, selector: IDocumentFilterDto[], triggerCharacters: string[], supportsResolveDetails: boolean, displayName: string): void {
524+
$registerCompletionsProvider(handle: number, selector: IDocumentFilterDto[], triggerCharacters: string[], supportsResolveDetails: boolean, extensionId: ExtensionIdentifier): void {
524525
const provider: languages.CompletionItemProvider = {
525526
triggerCharacters,
526-
_debugDisplayName: displayName,
527+
_debugDisplayName: `${extensionId.value}(${triggerCharacters.join('')})`,
527528
provideCompletionItems: async (model: ITextModel, position: EditorPosition, context: languages.CompletionContext, token: CancellationToken): Promise<languages.CompletionList | undefined> => {
528529
const result = await this._proxy.$provideCompletionItems(handle, model.uri, position, context, token);
529530
if (!result) {
530531
return result;
531532
}
532533
return {
533-
suggestions: result[ISuggestResultDtoField.completions].map(d => MainThreadLanguageFeatures._inflateSuggestDto(result[ISuggestResultDtoField.defaultRanges], d)),
534+
suggestions: result[ISuggestResultDtoField.completions].map(d => MainThreadLanguageFeatures._inflateSuggestDto(result[ISuggestResultDtoField.defaultRanges], d, extensionId)),
534535
incomplete: result[ISuggestResultDtoField.isIncomplete] || false,
535536
duration: result[ISuggestResultDtoField.duration],
536537
dispose: () => {
@@ -548,7 +549,7 @@ export class MainThreadLanguageFeatures extends Disposable implements MainThread
548549
return suggestion;
549550
}
550551

551-
const newSuggestion = MainThreadLanguageFeatures._inflateSuggestDto(suggestion.range, result);
552+
const newSuggestion = MainThreadLanguageFeatures._inflateSuggestDto(suggestion.range, result, extensionId);
552553
return mixin(suggestion, newSuggestion, true);
553554
});
554555
};

src/vs/workbench/api/common/extHost.protocol.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -406,7 +406,7 @@ export interface MainThreadLanguageFeaturesShape extends IDisposable {
406406
$registerDocumentSemanticTokensProvider(handle: number, selector: IDocumentFilterDto[], legend: languages.SemanticTokensLegend, eventHandle: number | undefined): void;
407407
$emitDocumentSemanticTokensEvent(eventHandle: number): void;
408408
$registerDocumentRangeSemanticTokensProvider(handle: number, selector: IDocumentFilterDto[], legend: languages.SemanticTokensLegend): void;
409-
$registerCompletionsProvider(handle: number, selector: IDocumentFilterDto[], triggerCharacters: string[], supportsResolveDetails: boolean, displayName: string): void;
409+
$registerCompletionsProvider(handle: number, selector: IDocumentFilterDto[], triggerCharacters: string[], supportsResolveDetails: boolean, extensionId: ExtensionIdentifier): void;
410410
$registerInlineCompletionsSupport(handle: number, selector: IDocumentFilterDto[], supportsHandleDidShowCompletionItem: boolean): void;
411411
$registerSignatureHelpProvider(handle: number, selector: IDocumentFilterDto[], metadata: ISignatureHelpProviderMetadataDto): void;
412412
$registerInlayHintsProvider(handle: number, selector: IDocumentFilterDto[], supportsResolve: boolean, eventHandle: number | undefined, displayName: string | undefined): void;

src/vs/workbench/api/common/extHostLanguageFeatures.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2220,7 +2220,7 @@ export class ExtHostLanguageFeatures implements extHostProtocol.ExtHostLanguageF
22202220

22212221
registerCompletionItemProvider(extension: IExtensionDescription, selector: vscode.DocumentSelector, provider: vscode.CompletionItemProvider, triggerCharacters: string[]): vscode.Disposable {
22222222
const handle = this._addNewAdapter(new CompletionsAdapter(this._documents, this._commands.converter, provider, this._apiDeprecation, extension), extension);
2223-
this._proxy.$registerCompletionsProvider(handle, this._transformDocumentSelector(selector, extension), triggerCharacters, CompletionsAdapter.supportsResolving(provider), `${extension.identifier.value}(${triggerCharacters.join('')})`);
2223+
this._proxy.$registerCompletionsProvider(handle, this._transformDocumentSelector(selector, extension), triggerCharacters, CompletionsAdapter.supportsResolving(provider), extension.identifier);
22242224
return this._createDisposable(handle);
22252225
}
22262226

0 commit comments

Comments
 (0)