use LanguageFeaturesService to support MappedEditsProviders instead of creating a new MappedEditsService

This commit is contained in:
Ulugbek Abdullaev
2023-08-22 15:46:44 +02:00
parent 98f63f1849
commit 2c9e2b85b2
17 changed files with 196 additions and 279 deletions
@@ -931,6 +931,13 @@ export class MainThreadLanguageFeatures extends Disposable implements MainThread
}
return provider.resolveDocumentOnDropFileData(requestId, dataId);
}
// --- mapped edits
$registerMappedEditsProvider(handle: number, selector: IDocumentFilterDto[]): void {
const provider = new MainThreadMappedEditsProvider(handle, this._proxy, this._uriIdentService);
this._registrations.set(handle, this._languageFeaturesService.mappedEditsProvider.register(selector, provider));
}
}
class MainThreadPasteEditProvider implements languages.DocumentPasteEditProvider {
@@ -1124,3 +1131,17 @@ export class MainThreadDocumentRangeSemanticTokensProvider implements languages.
throw new Error(`Unexpected`);
}
}
export class MainThreadMappedEditsProvider implements languages.MappedEditsProvider {
constructor(
private readonly _handle: number,
private readonly _proxy: ExtHostLanguageFeaturesShape,
private readonly _uriService: IUriIdentityService,
) { }
async provideMappedEdits(document: ITextModel, codeBlocks: string[], context: languages.MappedEditsContext, token: CancellationToken): Promise<languages.WorkspaceEdit | null> {
const res = await this._proxy.$provideMappedEdits(this._handle, document.uri, codeBlocks, context, token);
return res ? reviveWorkspaceEditDto(res, this._uriService) : null;
}
}