feat: add proposed API newSymbolNamesProvider that allows extensions to suggest new names for symbols that are being renamed

This commit is contained in:
Ulugbek Abdullaev
2024-02-08 12:16:36 +01:00
parent 9d7e3d9cc1
commit 14770d1197
10 changed files with 103 additions and 4 deletions
@@ -479,7 +479,7 @@ export class MainThreadLanguageFeatures extends Disposable implements MainThread
// --- rename
$registerRenameSupport(handle: number, selector: IDocumentFilterDto[], supportResolveLocation: boolean): void {
this._registrations.set(handle, this._languageFeaturesService.renameProvider.register(selector, <languages.RenameProvider>{
this._registrations.set(handle, this._languageFeaturesService.renameProvider.register(selector, {
provideRenameEdits: (model: ITextModel, position: EditorPosition, newName: string, token: CancellationToken) => {
return this._proxy.$provideRenameEdits(handle, model.uri, position, newName, token).then(data => reviveWorkspaceEditDto(data, this._uriIdentService));
},
@@ -489,6 +489,14 @@ export class MainThreadLanguageFeatures extends Disposable implements MainThread
}));
}
$registerNewSymbolNamesProvider(handle: number, selector: IDocumentFilterDto[]): void {
this._registrations.set(handle, this._languageFeaturesService.newSymbolNamesProvider.register(selector, {
provideNewSymbolNames: (model: ITextModel, range: IRange, token: CancellationToken): Promise<string[] | undefined> => {
return this._proxy.$provideNewSymbolNames(handle, model.uri, range, token);
}
} satisfies languages.NewSymbolNamesProvider));
}
// --- semantic tokens
$registerDocumentSemanticTokensProvider(handle: number, selector: IDocumentFilterDto[], legend: languages.SemanticTokensLegend, eventHandle: number | undefined): void {