Files
vscode/src/vs/workbench/api/common/extHostBulkEdits.ts

35 lines
1.7 KiB
TypeScript

/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import { IExtensionDescription } from 'vs/platform/extensions/common/extensions';
import { MainContext, MainThreadBulkEditsShape } from 'vs/workbench/api/common/extHost.protocol';
import { ExtHostDocumentsAndEditors } from 'vs/workbench/api/common/extHostDocumentsAndEditors';
import { IExtHostRpcService } from 'vs/workbench/api/common/extHostRpcService';
import { WorkspaceEdit } from 'vs/workbench/api/common/extHostTypeConverters';
import type * as vscode from 'vscode';
export class ExtHostBulkEdits {
private readonly _proxy: MainThreadBulkEditsShape;
private readonly _versionInformationProvider: WorkspaceEdit.IVersionInformationProvider;
constructor(
@IExtHostRpcService extHostRpc: IExtHostRpcService,
extHostDocumentsAndEditors: ExtHostDocumentsAndEditors,
) {
this._proxy = extHostRpc.getProxy(MainContext.MainThreadBulkEdits);
this._versionInformationProvider = {
getTextDocumentVersion: uri => extHostDocumentsAndEditors.getDocument(uri)?.version,
getNotebookDocumentVersion: () => undefined
};
}
applyWorkspaceEdit(edit: vscode.WorkspaceEdit, extension: IExtensionDescription, metadata: vscode.WorkspaceEditMetadata | undefined): Promise<boolean> {
const dto = WorkspaceEdit.from(edit, this._versionInformationProvider);
return this._proxy.$tryApplyWorkspaceEdit(dto, undefined, metadata?.isRefactoring ?? false);
}
}