提交 01f9355f 编写于 作者: J Johannes Rieken

debt - simplify metadata edit because we now have CellEditType.DocumentMetadata

上级 533ca9bf
...@@ -21,7 +21,7 @@ function reviveWorkspaceEditDto2(data: IWorkspaceEditDto | undefined): ResourceE ...@@ -21,7 +21,7 @@ function reviveWorkspaceEditDto2(data: IWorkspaceEditDto | undefined): ResourceE
} else if (edit._type === WorkspaceEditType.Text) { } else if (edit._type === WorkspaceEditType.Text) {
result.push(new ResourceTextEdit(edit.resource, edit.edit, edit.modelVersionId, edit.metadata)); result.push(new ResourceTextEdit(edit.resource, edit.edit, edit.modelVersionId, edit.metadata));
} else if (edit._type === WorkspaceEditType.Cell) { } 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; return result;
......
...@@ -44,7 +44,7 @@ function reviveWorkspaceEditDto2(data: IWorkspaceEditDto | undefined): ResourceE ...@@ -44,7 +44,7 @@ function reviveWorkspaceEditDto2(data: IWorkspaceEditDto | undefined): ResourceE
} else if (edit._type === WorkspaceEditType.Text) { } else if (edit._type === WorkspaceEditType.Text) {
result.push(new ResourceTextEdit(edit.resource, edit.edit, edit.modelVersionId, edit.metadata)); result.push(new ResourceTextEdit(edit.resource, edit.edit, edit.modelVersionId, edit.metadata));
} else if (edit._type === WorkspaceEditType.Cell) { } 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; return result;
......
...@@ -18,7 +18,7 @@ import { INotebookEditor } from 'vs/workbench/contrib/notebook/browser/notebookB ...@@ -18,7 +18,7 @@ import { INotebookEditor } from 'vs/workbench/contrib/notebook/browser/notebookB
import { NotebookCellTextModel } from 'vs/workbench/contrib/notebook/common/model/notebookCellTextModel'; import { NotebookCellTextModel } from 'vs/workbench/contrib/notebook/common/model/notebookCellTextModel';
import { NotebookTextModel } from 'vs/workbench/contrib/notebook/common/model/notebookTextModel'; import { NotebookTextModel } from 'vs/workbench/contrib/notebook/common/model/notebookTextModel';
import { INotebookCellStatusBarService } from 'vs/workbench/contrib/notebook/common/notebookCellStatusBarService'; 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 { IMainNotebookController, INotebookService } from 'vs/workbench/contrib/notebook/common/notebookService';
import { IEditorService } from 'vs/workbench/services/editor/common/editorService'; import { IEditorService } from 'vs/workbench/services/editor/common/editorService';
import { IWorkingCopyService } from 'vs/workbench/services/workingCopy/common/workingCopyService'; import { IWorkingCopyService } from 'vs/workbench/services/workingCopy/common/workingCopyService';
...@@ -156,20 +156,12 @@ export class MainThreadNotebooks extends Disposable implements MainThreadNoteboo ...@@ -156,20 +156,12 @@ export class MainThreadNotebooks extends Disposable implements MainThreadNoteboo
this.registerListeners(); this.registerListeners();
} }
async $tryApplyEdits(_viewType: string, resource: UriComponents, modelVersionId: number, cellEdits: ICellEditOperation[], newMetadata: NotebookDocumentMetadata | undefined): Promise<boolean> { async $tryApplyEdits(_viewType: string, resource: UriComponents, modelVersionId: number, cellEdits: ICellEditOperation[]): Promise<boolean> {
const textModel = this._notebookService.getNotebookTextModel(URI.from(resource)); const textModel = this._notebookService.getNotebookTextModel(URI.from(resource));
if (!textModel) { if (!textModel) {
return false; return false;
} }
this._notebookService.transformEditsOutputs(textModel, cellEdits); this._notebookService.transformEditsOutputs(textModel, cellEdits);
if (newMetadata) {
textModel.applyEdit(textModel.versionId, [
{
editType: CellEditType.DocumentMetadata,
metadata: newMetadata
}
], true);
}
return textModel.applyEdit(modelVersionId, cellEdits, true); return textModel.applyEdit(modelVersionId, cellEdits, true);
} }
......
...@@ -741,7 +741,7 @@ export interface MainThreadNotebookShape extends IDisposable { ...@@ -741,7 +741,7 @@ export interface MainThreadNotebookShape extends IDisposable {
$registerNotebookKernelProvider(extension: NotebookExtensionDescription, handle: number, documentFilter: INotebookDocumentFilter): Promise<void>; $registerNotebookKernelProvider(extension: NotebookExtensionDescription, handle: number, documentFilter: INotebookDocumentFilter): Promise<void>;
$unregisterNotebookKernelProvider(handle: number): Promise<void>; $unregisterNotebookKernelProvider(handle: number): Promise<void>;
$onNotebookKernelChange(handle: number, uri: UriComponents | undefined): void; $onNotebookKernelChange(handle: number, uri: UriComponents | undefined): void;
$tryApplyEdits(viewType: string, resource: UriComponents, modelVersionId: number, edits: ICellEditOperation[], metadata: NotebookDocumentMetadata | undefined): Promise<boolean>; $tryApplyEdits(viewType: string, resource: UriComponents, modelVersionId: number, edits: ICellEditOperation[]): Promise<boolean>;
$updateNotebookLanguages(viewType: string, resource: UriComponents, languages: string[]): Promise<void>; $updateNotebookLanguages(viewType: string, resource: UriComponents, languages: string[]): Promise<void>;
$spliceNotebookCellOutputs(viewType: string, resource: UriComponents, cellHandle: number, splices: NotebookCellOutputsSplice[]): Promise<void>; $spliceNotebookCellOutputs(viewType: string, resource: UriComponents, cellHandle: number, splices: NotebookCellOutputsSplice[]): Promise<void>;
$postMessage(editorId: string, forRendererId: string | undefined, value: any): Promise<boolean>; $postMessage(editorId: string, forRendererId: string | undefined, value: any): Promise<boolean>;
...@@ -1275,8 +1275,7 @@ export interface IWorkspaceTextEditDto { ...@@ -1275,8 +1275,7 @@ export interface IWorkspaceTextEditDto {
export interface IWorkspaceCellEditDto { export interface IWorkspaceCellEditDto {
_type: WorkspaceEditType.Cell; _type: WorkspaceEditType.Cell;
resource: UriComponents; resource: UriComponents;
edit?: ICellEditOperation; edit: ICellEditOperation;
notebookMetadata?: NotebookDocumentMetadata;
notebookVersionId?: number; notebookVersionId?: number;
metadata?: IWorkspaceEditEntryMetadataDto; metadata?: IWorkspaceEditEntryMetadataDto;
} }
......
...@@ -277,7 +277,7 @@ export class ExtHostNotebookDocument extends Disposable { ...@@ -277,7 +277,7 @@ export class ExtHostNotebookDocument extends Disposable {
const edit: IWorkspaceCellEditDto = { const edit: IWorkspaceCellEditDto = {
_type: WorkspaceEditType.Cell, _type: WorkspaceEditType.Cell,
metadata: undefined, metadata: undefined,
notebookMetadata: this._metadata, edit: { editType: CellEditType.DocumentMetadata, metadata: this._metadata },
resource: this.uri, resource: this.uri,
notebookVersionId: this.notebookDocument.version, notebookVersionId: this.notebookDocument.version,
}; };
......
...@@ -8,7 +8,7 @@ import { Emitter, Event } from 'vs/base/common/event'; ...@@ -8,7 +8,7 @@ import { Emitter, Event } from 'vs/base/common/event';
import { Disposable } from 'vs/base/common/lifecycle'; import { Disposable } from 'vs/base/common/lifecycle';
import { CellKind, MainThreadNotebookShape } from 'vs/workbench/api/common/extHost.protocol'; import { CellKind, MainThreadNotebookShape } from 'vs/workbench/api/common/extHost.protocol';
import * as extHostTypes from 'vs/workbench/api/common/extHostTypes'; 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 * as vscode from 'vscode';
import { ExtHostNotebookDocument } from './extHostNotebookDocument'; import { ExtHostNotebookDocument } from './extHostNotebookDocument';
...@@ -18,7 +18,6 @@ class NotebookEditorCellEditBuilder implements vscode.NotebookEditorEdit { ...@@ -18,7 +18,6 @@ class NotebookEditorCellEditBuilder implements vscode.NotebookEditorEdit {
private _finalized: boolean = false; private _finalized: boolean = false;
private _collectedEdits: ICellEditOperation[] = []; private _collectedEdits: ICellEditOperation[] = [];
private _newNotebookDocumentMetadata?: NotebookDocumentMetadata;
constructor(documentVersionId: number) { constructor(documentVersionId: number) {
this._documentVersionId = documentVersionId; this._documentVersionId = documentVersionId;
...@@ -28,8 +27,7 @@ class NotebookEditorCellEditBuilder implements vscode.NotebookEditorEdit { ...@@ -28,8 +27,7 @@ class NotebookEditorCellEditBuilder implements vscode.NotebookEditorEdit {
this._finalized = true; this._finalized = true;
return { return {
documentVersionId: this._documentVersionId, documentVersionId: this._documentVersionId,
cellEdits: this._collectedEdits, cellEdits: this._collectedEdits
newMetadata: this._newNotebookDocumentMetadata
}; };
} }
...@@ -41,7 +39,10 @@ class NotebookEditorCellEditBuilder implements vscode.NotebookEditorEdit { ...@@ -41,7 +39,10 @@ class NotebookEditorCellEditBuilder implements vscode.NotebookEditorEdit {
replaceNotebookMetadata(value: vscode.NotebookDocumentMetadata): void { replaceNotebookMetadata(value: vscode.NotebookDocumentMetadata): void {
this._throwIfFinalized(); this._throwIfFinalized();
this._newNotebookDocumentMetadata = { ...notebookDocumentMetadataDefaults, ...value }; this._collectedEdits.push({
editType: CellEditType.DocumentMetadata,
metadata: { ...notebookDocumentMetadataDefaults, ...value }
});
} }
replaceCellMetadata(index: number, metadata: vscode.NotebookCellMetadata): void { replaceCellMetadata(index: number, metadata: vscode.NotebookCellMetadata): void {
...@@ -235,7 +236,7 @@ export class ExtHostNotebookEditor extends Disposable implements vscode.Notebook ...@@ -235,7 +236,7 @@ export class ExtHostNotebookEditor extends Disposable implements vscode.Notebook
compressedEditsIndex++; 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) { revealRange(range: vscode.NotebookCellRange, revealType?: extHostTypes.NotebookEditorRevealType) {
......
...@@ -9,7 +9,7 @@ import { URI } from 'vs/base/common/uri'; ...@@ -9,7 +9,7 @@ import { URI } from 'vs/base/common/uri';
import { ResourceEdit } from 'vs/editor/browser/services/bulkEditService'; import { ResourceEdit } from 'vs/editor/browser/services/bulkEditService';
import { WorkspaceEditMetadata } from 'vs/editor/common/modes'; import { WorkspaceEditMetadata } from 'vs/editor/common/modes';
import { IProgress } from 'vs/platform/progress/common/progress'; 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 { INotebookEditorModelResolverService } from 'vs/workbench/contrib/notebook/common/notebookEditorModelResolverService';
import { INotebookService } from 'vs/workbench/contrib/notebook/common/notebookService'; import { INotebookService } from 'vs/workbench/contrib/notebook/common/notebookService';
...@@ -17,8 +17,7 @@ export class ResourceNotebookCellEdit extends ResourceEdit { ...@@ -17,8 +17,7 @@ export class ResourceNotebookCellEdit extends ResourceEdit {
constructor( constructor(
readonly resource: URI, readonly resource: URI,
readonly cellEdit?: ICellEditOperation, readonly cellEdit: ICellEditOperation,
readonly notebookMetadata?: NotebookDocumentMetadata,
readonly versionId?: number, readonly versionId?: number,
readonly metadata?: WorkspaceEditMetadata readonly metadata?: WorkspaceEditMetadata
) { ) {
...@@ -49,23 +48,8 @@ export class BulkCellEdits { ...@@ -49,23 +48,8 @@ export class BulkCellEdits {
// throw new Error(`Notebook '${first.resource}' has changed in the meantime`); // 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 // apply edits
const edits = group.map(entry => entry.cellEdit);
this._notebookService.transformEditsOutputs(ref.object.notebook, edits); this._notebookService.transformEditsOutputs(ref.object.notebook, edits);
ref.object.notebook.applyEdit(ref.object.notebook.versionId, edits, true); ref.object.notebook.applyEdit(ref.object.notebook.versionId, edits, true);
ref.dispose(); ref.dispose();
......
...@@ -466,7 +466,6 @@ export type ICellEditOperation = ICellReplaceEdit | ICellOutputEdit | ICellMetad ...@@ -466,7 +466,6 @@ export type ICellEditOperation = ICellReplaceEdit | ICellOutputEdit | ICellMetad
export interface INotebookEditData { export interface INotebookEditData {
documentVersionId: number; documentVersionId: number;
cellEdits: ICellEditOperation[]; cellEdits: ICellEditOperation[];
newMetadata?: NotebookDocumentMetadata;
} }
export interface NotebookDataDto { export interface NotebookDataDto {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册