From 01f9355f655710c10c356ebae66b8070bbfa0566 Mon Sep 17 00:00:00 2001 From: Johannes Rieken Date: Thu, 10 Sep 2020 11:47:45 +0200 Subject: [PATCH] debt - simplify metadata edit because we now have CellEditType.DocumentMetadata --- .../api/browser/mainThreadBulkEdits.ts | 2 +- .../api/browser/mainThreadEditors.ts | 2 +- .../api/browser/mainThreadNotebook.ts | 12 ++-------- .../workbench/api/common/extHost.protocol.ts | 5 ++--- .../api/common/extHostNotebookDocument.ts | 2 +- .../api/common/extHostNotebookEditor.ts | 13 ++++++----- .../contrib/bulkEdit/browser/bulkCellEdits.ts | 22 +++---------------- .../contrib/notebook/common/notebookCommon.ts | 1 - 8 files changed, 17 insertions(+), 42 deletions(-) diff --git a/src/vs/workbench/api/browser/mainThreadBulkEdits.ts b/src/vs/workbench/api/browser/mainThreadBulkEdits.ts index 2c10477e0d1..b6ee8cacf0e 100644 --- a/src/vs/workbench/api/browser/mainThreadBulkEdits.ts +++ b/src/vs/workbench/api/browser/mainThreadBulkEdits.ts @@ -21,7 +21,7 @@ function reviveWorkspaceEditDto2(data: IWorkspaceEditDto | undefined): ResourceE } else if (edit._type === WorkspaceEditType.Text) { result.push(new ResourceTextEdit(edit.resource, edit.edit, edit.modelVersionId, edit.metadata)); } else if (edit._type === WorkspaceEditType.Cell) { - result.push(new ResourceNotebookCellEdit(edit.resource, edit.edit, edit.notebookMetadata, edit.notebookVersionId, edit.metadata)); + result.push(new ResourceNotebookCellEdit(edit.resource, edit.edit, edit.notebookVersionId, edit.metadata)); } } return result; diff --git a/src/vs/workbench/api/browser/mainThreadEditors.ts b/src/vs/workbench/api/browser/mainThreadEditors.ts index 71d1e940085..adfd675a463 100644 --- a/src/vs/workbench/api/browser/mainThreadEditors.ts +++ b/src/vs/workbench/api/browser/mainThreadEditors.ts @@ -44,7 +44,7 @@ function reviveWorkspaceEditDto2(data: IWorkspaceEditDto | undefined): ResourceE } else if (edit._type === WorkspaceEditType.Text) { result.push(new ResourceTextEdit(edit.resource, edit.edit, edit.modelVersionId, edit.metadata)); } else if (edit._type === WorkspaceEditType.Cell) { - result.push(new ResourceNotebookCellEdit(edit.resource, edit.edit, edit.notebookMetadata, edit.notebookVersionId, edit.metadata)); + result.push(new ResourceNotebookCellEdit(edit.resource, edit.edit, edit.notebookVersionId, edit.metadata)); } } return result; diff --git a/src/vs/workbench/api/browser/mainThreadNotebook.ts b/src/vs/workbench/api/browser/mainThreadNotebook.ts index 582fd07d165..f053b450a6b 100644 --- a/src/vs/workbench/api/browser/mainThreadNotebook.ts +++ b/src/vs/workbench/api/browser/mainThreadNotebook.ts @@ -18,7 +18,7 @@ import { INotebookEditor } from 'vs/workbench/contrib/notebook/browser/notebookB import { NotebookCellTextModel } from 'vs/workbench/contrib/notebook/common/model/notebookCellTextModel'; import { NotebookTextModel } from 'vs/workbench/contrib/notebook/common/model/notebookTextModel'; import { INotebookCellStatusBarService } from 'vs/workbench/contrib/notebook/common/notebookCellStatusBarService'; -import { ACCESSIBLE_NOTEBOOK_DISPLAY_ORDER, CellEditType, DisplayOrderKey, ICellEditOperation, ICellRange, IEditor, IMainCellDto, INotebookDocumentFilter, NotebookCellOutputsSplice, NotebookCellsChangeType, NotebookDocumentMetadata, NOTEBOOK_DISPLAY_ORDER, TransientMetadata } from 'vs/workbench/contrib/notebook/common/notebookCommon'; +import { ACCESSIBLE_NOTEBOOK_DISPLAY_ORDER, CellEditType, DisplayOrderKey, ICellEditOperation, ICellRange, IEditor, IMainCellDto, INotebookDocumentFilter, NotebookCellOutputsSplice, NotebookCellsChangeType, NOTEBOOK_DISPLAY_ORDER, TransientMetadata } from 'vs/workbench/contrib/notebook/common/notebookCommon'; import { IMainNotebookController, INotebookService } from 'vs/workbench/contrib/notebook/common/notebookService'; import { IEditorService } from 'vs/workbench/services/editor/common/editorService'; import { IWorkingCopyService } from 'vs/workbench/services/workingCopy/common/workingCopyService'; @@ -156,20 +156,12 @@ export class MainThreadNotebooks extends Disposable implements MainThreadNoteboo this.registerListeners(); } - async $tryApplyEdits(_viewType: string, resource: UriComponents, modelVersionId: number, cellEdits: ICellEditOperation[], newMetadata: NotebookDocumentMetadata | undefined): Promise { + async $tryApplyEdits(_viewType: string, resource: UriComponents, modelVersionId: number, cellEdits: ICellEditOperation[]): Promise { const textModel = this._notebookService.getNotebookTextModel(URI.from(resource)); if (!textModel) { return false; } this._notebookService.transformEditsOutputs(textModel, cellEdits); - if (newMetadata) { - textModel.applyEdit(textModel.versionId, [ - { - editType: CellEditType.DocumentMetadata, - metadata: newMetadata - } - ], true); - } return textModel.applyEdit(modelVersionId, cellEdits, true); } diff --git a/src/vs/workbench/api/common/extHost.protocol.ts b/src/vs/workbench/api/common/extHost.protocol.ts index dd896025d43..ba114412a84 100644 --- a/src/vs/workbench/api/common/extHost.protocol.ts +++ b/src/vs/workbench/api/common/extHost.protocol.ts @@ -741,7 +741,7 @@ export interface MainThreadNotebookShape extends IDisposable { $registerNotebookKernelProvider(extension: NotebookExtensionDescription, handle: number, documentFilter: INotebookDocumentFilter): Promise; $unregisterNotebookKernelProvider(handle: number): Promise; $onNotebookKernelChange(handle: number, uri: UriComponents | undefined): void; - $tryApplyEdits(viewType: string, resource: UriComponents, modelVersionId: number, edits: ICellEditOperation[], metadata: NotebookDocumentMetadata | undefined): Promise; + $tryApplyEdits(viewType: string, resource: UriComponents, modelVersionId: number, edits: ICellEditOperation[]): Promise; $updateNotebookLanguages(viewType: string, resource: UriComponents, languages: string[]): Promise; $spliceNotebookCellOutputs(viewType: string, resource: UriComponents, cellHandle: number, splices: NotebookCellOutputsSplice[]): Promise; $postMessage(editorId: string, forRendererId: string | undefined, value: any): Promise; @@ -1275,8 +1275,7 @@ export interface IWorkspaceTextEditDto { export interface IWorkspaceCellEditDto { _type: WorkspaceEditType.Cell; resource: UriComponents; - edit?: ICellEditOperation; - notebookMetadata?: NotebookDocumentMetadata; + edit: ICellEditOperation; notebookVersionId?: number; metadata?: IWorkspaceEditEntryMetadataDto; } diff --git a/src/vs/workbench/api/common/extHostNotebookDocument.ts b/src/vs/workbench/api/common/extHostNotebookDocument.ts index ac83b9de093..19169f710a0 100644 --- a/src/vs/workbench/api/common/extHostNotebookDocument.ts +++ b/src/vs/workbench/api/common/extHostNotebookDocument.ts @@ -277,7 +277,7 @@ export class ExtHostNotebookDocument extends Disposable { const edit: IWorkspaceCellEditDto = { _type: WorkspaceEditType.Cell, metadata: undefined, - notebookMetadata: this._metadata, + edit: { editType: CellEditType.DocumentMetadata, metadata: this._metadata }, resource: this.uri, notebookVersionId: this.notebookDocument.version, }; diff --git a/src/vs/workbench/api/common/extHostNotebookEditor.ts b/src/vs/workbench/api/common/extHostNotebookEditor.ts index 4b98b86ae66..51ab73a58f5 100644 --- a/src/vs/workbench/api/common/extHostNotebookEditor.ts +++ b/src/vs/workbench/api/common/extHostNotebookEditor.ts @@ -8,7 +8,7 @@ import { Emitter, Event } from 'vs/base/common/event'; import { Disposable } from 'vs/base/common/lifecycle'; import { CellKind, MainThreadNotebookShape } from 'vs/workbench/api/common/extHost.protocol'; import * as extHostTypes from 'vs/workbench/api/common/extHostTypes'; -import { addIdToOutput, CellEditType, ICellEditOperation, ICellReplaceEdit, INotebookEditData, NotebookDocumentMetadata, notebookDocumentMetadataDefaults } from 'vs/workbench/contrib/notebook/common/notebookCommon'; +import { addIdToOutput, CellEditType, ICellEditOperation, ICellReplaceEdit, INotebookEditData, notebookDocumentMetadataDefaults } from 'vs/workbench/contrib/notebook/common/notebookCommon'; import * as vscode from 'vscode'; import { ExtHostNotebookDocument } from './extHostNotebookDocument'; @@ -18,7 +18,6 @@ class NotebookEditorCellEditBuilder implements vscode.NotebookEditorEdit { private _finalized: boolean = false; private _collectedEdits: ICellEditOperation[] = []; - private _newNotebookDocumentMetadata?: NotebookDocumentMetadata; constructor(documentVersionId: number) { this._documentVersionId = documentVersionId; @@ -28,8 +27,7 @@ class NotebookEditorCellEditBuilder implements vscode.NotebookEditorEdit { this._finalized = true; return { documentVersionId: this._documentVersionId, - cellEdits: this._collectedEdits, - newMetadata: this._newNotebookDocumentMetadata + cellEdits: this._collectedEdits }; } @@ -41,7 +39,10 @@ class NotebookEditorCellEditBuilder implements vscode.NotebookEditorEdit { replaceNotebookMetadata(value: vscode.NotebookDocumentMetadata): void { this._throwIfFinalized(); - this._newNotebookDocumentMetadata = { ...notebookDocumentMetadataDefaults, ...value }; + this._collectedEdits.push({ + editType: CellEditType.DocumentMetadata, + metadata: { ...notebookDocumentMetadataDefaults, ...value } + }); } replaceCellMetadata(index: number, metadata: vscode.NotebookCellMetadata): void { @@ -235,7 +236,7 @@ export class ExtHostNotebookEditor extends Disposable implements vscode.Notebook compressedEditsIndex++; } - return this._proxy.$tryApplyEdits(this._viewType, this.document.uri, editData.documentVersionId, compressedEdits, editData.newMetadata); + return this._proxy.$tryApplyEdits(this._viewType, this.document.uri, editData.documentVersionId, compressedEdits); } revealRange(range: vscode.NotebookCellRange, revealType?: extHostTypes.NotebookEditorRevealType) { diff --git a/src/vs/workbench/contrib/bulkEdit/browser/bulkCellEdits.ts b/src/vs/workbench/contrib/bulkEdit/browser/bulkCellEdits.ts index 6db8054a5f3..110e7864fe5 100644 --- a/src/vs/workbench/contrib/bulkEdit/browser/bulkCellEdits.ts +++ b/src/vs/workbench/contrib/bulkEdit/browser/bulkCellEdits.ts @@ -9,7 +9,7 @@ import { URI } from 'vs/base/common/uri'; import { ResourceEdit } from 'vs/editor/browser/services/bulkEditService'; import { WorkspaceEditMetadata } from 'vs/editor/common/modes'; import { IProgress } from 'vs/platform/progress/common/progress'; -import { CellEditType, ICellEditOperation, NotebookDocumentMetadata } from 'vs/workbench/contrib/notebook/common/notebookCommon'; +import { ICellEditOperation } from 'vs/workbench/contrib/notebook/common/notebookCommon'; import { INotebookEditorModelResolverService } from 'vs/workbench/contrib/notebook/common/notebookEditorModelResolverService'; import { INotebookService } from 'vs/workbench/contrib/notebook/common/notebookService'; @@ -17,8 +17,7 @@ export class ResourceNotebookCellEdit extends ResourceEdit { constructor( readonly resource: URI, - readonly cellEdit?: ICellEditOperation, - readonly notebookMetadata?: NotebookDocumentMetadata, + readonly cellEdit: ICellEditOperation, readonly versionId?: number, readonly metadata?: WorkspaceEditMetadata ) { @@ -49,23 +48,8 @@ export class BulkCellEdits { // throw new Error(`Notebook '${first.resource}' has changed in the meantime`); // } - const edits: ICellEditOperation[] = []; - let newMetadata: NotebookDocumentMetadata | undefined; - for (let edit of group) { - if (edit.cellEdit) { - edits.push(edit.cellEdit); - } - newMetadata = edit.notebookMetadata ?? newMetadata; - } - - // set metadata - if (newMetadata) { - edits.push({ - editType: CellEditType.DocumentMetadata, - metadata: newMetadata - }); - } // apply edits + const edits = group.map(entry => entry.cellEdit); this._notebookService.transformEditsOutputs(ref.object.notebook, edits); ref.object.notebook.applyEdit(ref.object.notebook.versionId, edits, true); ref.dispose(); diff --git a/src/vs/workbench/contrib/notebook/common/notebookCommon.ts b/src/vs/workbench/contrib/notebook/common/notebookCommon.ts index d409aacb92e..839bde814ff 100644 --- a/src/vs/workbench/contrib/notebook/common/notebookCommon.ts +++ b/src/vs/workbench/contrib/notebook/common/notebookCommon.ts @@ -466,7 +466,6 @@ export type ICellEditOperation = ICellReplaceEdit | ICellOutputEdit | ICellMetad export interface INotebookEditData { documentVersionId: number; cellEdits: ICellEditOperation[]; - newMetadata?: NotebookDocumentMetadata; } export interface NotebookDataDto { -- GitLab