Path: blob/main/src/vs/workbench/api/common/extHostBulkEdits.ts
3296 views
/*---------------------------------------------------------------------------------------------1* Copyright (c) Microsoft Corporation. All rights reserved.2* Licensed under the MIT License. See License.txt in the project root for license information.3*--------------------------------------------------------------------------------------------*/45import { IExtensionDescription } from '../../../platform/extensions/common/extensions.js';6import { MainContext, MainThreadBulkEditsShape } from './extHost.protocol.js';7import { ExtHostDocumentsAndEditors } from './extHostDocumentsAndEditors.js';8import { IExtHostRpcService } from './extHostRpcService.js';9import { WorkspaceEdit } from './extHostTypeConverters.js';10import { SerializableObjectWithBuffers } from '../../services/extensions/common/proxyIdentifier.js';11import type * as vscode from 'vscode';1213export class ExtHostBulkEdits {1415private readonly _proxy: MainThreadBulkEditsShape;16private readonly _versionInformationProvider: WorkspaceEdit.IVersionInformationProvider;1718constructor(19@IExtHostRpcService extHostRpc: IExtHostRpcService,20extHostDocumentsAndEditors: ExtHostDocumentsAndEditors,21) {22this._proxy = extHostRpc.getProxy(MainContext.MainThreadBulkEdits);2324this._versionInformationProvider = {25getTextDocumentVersion: uri => extHostDocumentsAndEditors.getDocument(uri)?.version,26getNotebookDocumentVersion: () => undefined27};28}2930applyWorkspaceEdit(edit: vscode.WorkspaceEdit, extension: IExtensionDescription, metadata: vscode.WorkspaceEditMetadata | undefined): Promise<boolean> {31const dto = new SerializableObjectWithBuffers(WorkspaceEdit.from(edit, this._versionInformationProvider));32return this._proxy.$tryApplyWorkspaceEdit(dto, undefined, metadata?.isRefactoring ?? false);33}34}353637