diff --git a/src/vs/vscode.proposed.d.ts b/src/vs/vscode.proposed.d.ts index 3e7a5110524..3a1ad120a9d 100644 --- a/src/vs/vscode.proposed.d.ts +++ b/src/vs/vscode.proposed.d.ts @@ -1354,7 +1354,12 @@ declare module 'vscode' { } export interface NotebookEditorCellEdit { + + replaceCells(from: number, to: number, cells: NotebookCellData[]): void; + + /** @deprecated */ insert(index: number, content: string | string[], language: string, type: CellKind, outputs: CellOutput[], metadata: NotebookCellMetadata | undefined): void; + /** @deprecated */ delete(index: number): void; } @@ -1478,9 +1483,9 @@ declare module 'vscode' { export interface NotebookCellData { readonly cellKind: CellKind; readonly source: string; - language: string; - outputs: CellOutput[]; - metadata: NotebookCellMetadata; + readonly language: string; + readonly outputs: CellOutput[]; + readonly metadata: NotebookCellMetadata | undefined; } export interface NotebookData { diff --git a/src/vs/workbench/api/browser/mainThreadNotebook.ts b/src/vs/workbench/api/browser/mainThreadNotebook.ts index 1fdf3135d25..c767266373d 100644 --- a/src/vs/workbench/api/browser/mainThreadNotebook.ts +++ b/src/vs/workbench/api/browser/mainThreadNotebook.ts @@ -452,7 +452,7 @@ export class MainThreadNotebooks extends Disposable implements MainThreadNoteboo if (data.cells.length) { textModel.initialize(data!.cells); } else { - const mainCell = textModel.createCellTextModel([''], textModel.languages.length ? textModel.languages[0] : '', CellKind.Code, [], undefined); + const mainCell = textModel.createCellTextModel('', textModel.languages.length ? textModel.languages[0] : '', CellKind.Code, [], undefined); textModel.insertTemplateCell(mainCell); } diff --git a/src/vs/workbench/api/common/extHost.protocol.ts b/src/vs/workbench/api/common/extHost.protocol.ts index 99af61c1e7e..e09f81490e8 100644 --- a/src/vs/workbench/api/common/extHost.protocol.ts +++ b/src/vs/workbench/api/common/extHost.protocol.ts @@ -723,7 +723,7 @@ export interface MainThreadNotebookShape extends IDisposable { $unregisterNotebookKernelProvider(handle: number): Promise; $onNotebookKernelChange(handle: number): void; $unregisterNotebookKernel(id: string): Promise; - $tryApplyEdits(viewType: string, resource: UriComponents, modelVersionId: number, edits: ICellEditOperation[], renderers: number[]): Promise; + $tryApplyEdits(viewType: string, resource: UriComponents, modelVersionId: number, edits: ICellEditOperation[]): Promise; $updateNotebookLanguages(viewType: string, resource: UriComponents, languages: string[]): Promise; $updateNotebookMetadata(viewType: string, resource: UriComponents, metadata: NotebookDocumentMetadata): Promise; $updateNotebookCellMetadata(viewType: string, resource: UriComponents, handle: number, metadata: NotebookCellMetadata | undefined): Promise; diff --git a/src/vs/workbench/api/common/extHostNotebook.ts b/src/vs/workbench/api/common/extHostNotebook.ts index e013ab39e75..22c52d2e7ed 100644 --- a/src/vs/workbench/api/common/extHostNotebook.ts +++ b/src/vs/workbench/api/common/extHostNotebook.ts @@ -22,7 +22,7 @@ import { IExtensionStoragePaths } from 'vs/workbench/api/common/extHostStoragePa import * as typeConverters from 'vs/workbench/api/common/extHostTypeConverters'; import * as extHostTypes from 'vs/workbench/api/common/extHostTypes'; import { asWebviewUri, WebviewInitData } from 'vs/workbench/api/common/shared/webview'; -import { CellEditType, CellOutputKind, diff, ICellDeleteEdit, ICellEditOperation, ICellInsertEdit, IMainCellDto, INotebookDisplayOrder, INotebookEditData, INotebookKernelInfoDto2, IProcessedOutput, IRawOutput, NotebookCellMetadata, NotebookCellsChangedEvent, NotebookCellsChangeType, NotebookCellsSplice2, NotebookDataDto, notebookDocumentMetadataDefaults } from 'vs/workbench/contrib/notebook/common/notebookCommon'; +import { CellEditType, CellOutputKind, diff, ICellDeleteEdit, ICellDto2, ICellEditOperation, ICellInsertEdit, IMainCellDto, INotebookDisplayOrder, INotebookEditData, INotebookKernelInfoDto2, IProcessedOutput, IRawOutput, NotebookCellMetadata, NotebookCellsChangedEvent, NotebookCellsChangeType, NotebookCellsSplice2, NotebookDataDto, notebookDocumentMetadataDefaults } from 'vs/workbench/contrib/notebook/common/notebookCommon'; import * as vscode from 'vscode'; import { Cache } from './cache'; import { ResourceMap } from 'vs/base/common/map'; @@ -488,15 +488,13 @@ export class ExtHostNotebookDocument extends Disposable { } export class NotebookEditorCellEditBuilder implements vscode.NotebookEditorCellEdit { - private _finalized: boolean = false; - private readonly _documentVersionId: number; - private _collectedEdits: ICellEditOperation[] = []; - private _renderers = new Set(); - constructor( - readonly editor: ExtHostNotebookEditor - ) { - this._documentVersionId = editor.notebookData.notebookDocument.version; + private readonly _documentVersionId: number; + private readonly _collectedEdits: ICellEditOperation[] = []; + private _finalized: boolean = false; + + constructor(documentVersionId: number) { + this._documentVersionId = documentVersionId; } finalize(): INotebookEditData { @@ -504,7 +502,6 @@ export class NotebookEditorCellEditBuilder implements vscode.NotebookEditorCellE return { documentVersionId: this._documentVersionId, edits: this._collectedEdits, - renderers: Array.from(this._renderers) }; } @@ -514,33 +511,48 @@ export class NotebookEditorCellEditBuilder implements vscode.NotebookEditorCellE } } - insert(index: number, content: string | string[], language: string, type: CellKind, outputs: vscode.CellOutput[], metadata: vscode.NotebookCellMetadata | undefined): void { + replaceCells(from: number, to: number, cells: vscode.NotebookCellData[]): void { this._throwIfFinalized(); - const sourceArr = Array.isArray(content) ? content : content.split(/\r|\n|\r\n/g); - const cell = { - source: sourceArr, - language, - cellKind: type, - outputs: outputs.map(o => addIdToOutput(o)), - metadata, - }; + // deletion + if (to > from) { + this._collectedEdits.push({ + editType: CellEditType.Delete, + index: from, + count: to - from + }); + } + // insert + if (cells.length > 0) { + this._collectedEdits.push({ + editType: CellEditType.Insert, + index: from, + cells: cells.map(data => { + return { + cellKind: data.cellKind, + language: data.language, + outputs: data.outputs.map(output => addIdToOutput(output)), + source: data.source + }; + }) + }); + } + } - this._collectedEdits.push({ - editType: CellEditType.Insert, - index, - cells: [cell] - }); + insert(index: number, content: string | string[], language: string, type: CellKind, outputs: vscode.CellOutput[], metadata: vscode.NotebookCellMetadata | undefined): void { + this._throwIfFinalized(); + this.replaceCells(index, index, [{ + language, + outputs, + metadata, + cellKind: type, + source: Array.isArray(content) ? content.join('\n') : content, + }]); } delete(index: number): void { this._throwIfFinalized(); - - this._collectedEdits.push({ - editType: CellEditType.Delete, - index, - count: 1 - }); + this.replaceCells(index, 1, []); } } @@ -654,13 +666,12 @@ export class ExtHostNotebookEditor extends Disposable implements vscode.Notebook } edit(callback: (editBuilder: NotebookEditorCellEditBuilder) => void): Thenable { - const edit = new NotebookEditorCellEditBuilder(this); + const edit = new NotebookEditorCellEditBuilder(this.document.version); callback(edit); - return this._applyEdit(edit); + return this._applyEdit(edit.finalize()); } - private _applyEdit(editBuilder: NotebookEditorCellEditBuilder): Promise { - const editData = editBuilder.finalize(); + private _applyEdit(editData: INotebookEditData): Promise { // return when there is nothing to do if (editData.edits.length === 0) { @@ -698,7 +709,7 @@ export class ExtHostNotebookEditor extends Disposable implements vscode.Notebook compressedEditsIndex++; } - return this._proxy.$tryApplyEdits(this.viewType, this.uri, editData.documentVersionId, compressedEdits, editData.renderers); + return this._proxy.$tryApplyEdits(this.viewType, this.uri, editData.documentVersionId, compressedEdits); } get viewColumn(): vscode.ViewColumn | undefined { diff --git a/src/vs/workbench/contrib/notebook/browser/contrib/fold/test/notebookFolding.test.ts b/src/vs/workbench/contrib/notebook/browser/contrib/fold/test/notebookFolding.test.ts index 75400be17fb..3dbd7eadc7b 100644 --- a/src/vs/workbench/contrib/notebook/browser/contrib/fold/test/notebookFolding.test.ts +++ b/src/vs/workbench/contrib/notebook/browser/contrib/fold/test/notebookFolding.test.ts @@ -28,13 +28,13 @@ suite('Notebook Folding', () => { blukEditService, undoRedoService, [ - [['# header 1'], 'markdown', CellKind.Markdown, [], {}], - [['body'], 'markdown', CellKind.Markdown, [], {}], - [['## header 2.1'], 'markdown', CellKind.Markdown, [], {}], - [['body 2'], 'markdown', CellKind.Markdown, [], {}], - [['body 3'], 'markdown', CellKind.Markdown, [], {}], - [['## header 2.2'], 'markdown', CellKind.Markdown, [], {}], - [['var e = 7;'], 'markdown', CellKind.Markdown, [], {}], + ['# header 1', 'markdown', CellKind.Markdown, [], {}], + ['body', 'markdown', CellKind.Markdown, [], {}], + ['## header 2.1', 'markdown', CellKind.Markdown, [], {}], + ['body 2', 'markdown', CellKind.Markdown, [], {}], + ['body 3', 'markdown', CellKind.Markdown, [], {}], + ['## header 2.2', 'markdown', CellKind.Markdown, [], {}], + ['var e = 7;', 'markdown', CellKind.Markdown, [], {}], ], (editor, viewModel) => { const foldingController = new FoldingModel(); @@ -57,13 +57,13 @@ suite('Notebook Folding', () => { blukEditService, undoRedoService, [ - [['# header 1'], 'markdown', CellKind.Markdown, [], {}], - [['body'], 'markdown', CellKind.Markdown, [], {}], - [['## header 2.1\n# header3'], 'markdown', CellKind.Markdown, [], {}], - [['body 2'], 'markdown', CellKind.Markdown, [], {}], - [['body 3'], 'markdown', CellKind.Markdown, [], {}], - [['## header 2.2'], 'markdown', CellKind.Markdown, [], {}], - [['var e = 7;'], 'markdown', CellKind.Markdown, [], {}], + ['# header 1', 'markdown', CellKind.Markdown, [], {}], + ['body', 'markdown', CellKind.Markdown, [], {}], + ['## header 2.1\n# header3', 'markdown', CellKind.Markdown, [], {}], + ['body 2', 'markdown', CellKind.Markdown, [], {}], + ['body 3', 'markdown', CellKind.Markdown, [], {}], + ['## header 2.2', 'markdown', CellKind.Markdown, [], {}], + ['var e = 7;', 'markdown', CellKind.Markdown, [], {}], ], (editor, viewModel) => { const foldingController = new FoldingModel(); @@ -91,13 +91,13 @@ suite('Notebook Folding', () => { blukEditService, undoRedoService, [ - [['# header 1'], 'markdown', CellKind.Markdown, [], {}], - [['body'], 'markdown', CellKind.Markdown, [], {}], - [['## header 2.1'], 'markdown', CellKind.Markdown, [], {}], - [['body 2'], 'markdown', CellKind.Markdown, [], {}], - [['body 3'], 'markdown', CellKind.Markdown, [], {}], - [['## header 2.2'], 'markdown', CellKind.Markdown, [], {}], - [['var e = 7;'], 'markdown', CellKind.Markdown, [], {}], + ['# header 1', 'markdown', CellKind.Markdown, [], {}], + ['body', 'markdown', CellKind.Markdown, [], {}], + ['## header 2.1', 'markdown', CellKind.Markdown, [], {}], + ['body 2', 'markdown', CellKind.Markdown, [], {}], + ['body 3', 'markdown', CellKind.Markdown, [], {}], + ['## header 2.2', 'markdown', CellKind.Markdown, [], {}], + ['var e = 7;', 'markdown', CellKind.Markdown, [], {}], ], (editor, viewModel) => { const foldingModel = new FoldingModel(); @@ -115,13 +115,13 @@ suite('Notebook Folding', () => { blukEditService, undoRedoService, [ - [['# header 1'], 'markdown', CellKind.Markdown, [], {}], - [['body'], 'markdown', CellKind.Markdown, [], {}], - [['## header 2.1\n'], 'markdown', CellKind.Markdown, [], {}], - [['body 2'], 'markdown', CellKind.Markdown, [], {}], - [['body 3'], 'markdown', CellKind.Markdown, [], {}], - [['## header 2.2'], 'markdown', CellKind.Markdown, [], {}], - [['var e = 7;'], 'markdown', CellKind.Markdown, [], {}], + ['# header 1', 'markdown', CellKind.Markdown, [], {}], + ['body', 'markdown', CellKind.Markdown, [], {}], + ['## header 2.1\n', 'markdown', CellKind.Markdown, [], {}], + ['body 2', 'markdown', CellKind.Markdown, [], {}], + ['body 3', 'markdown', CellKind.Markdown, [], {}], + ['## header 2.2', 'markdown', CellKind.Markdown, [], {}], + ['var e = 7;', 'markdown', CellKind.Markdown, [], {}], ], (editor, viewModel) => { const foldingModel = new FoldingModel(); @@ -140,13 +140,13 @@ suite('Notebook Folding', () => { blukEditService, undoRedoService, [ - [['# header 1'], 'markdown', CellKind.Markdown, [], {}], - [['body'], 'markdown', CellKind.Markdown, [], {}], - [['# header 2.1\n'], 'markdown', CellKind.Markdown, [], {}], - [['body 2'], 'markdown', CellKind.Markdown, [], {}], - [['body 3'], 'markdown', CellKind.Markdown, [], {}], - [['## header 2.2'], 'markdown', CellKind.Markdown, [], {}], - [['var e = 7;'], 'markdown', CellKind.Markdown, [], {}], + ['# header 1', 'markdown', CellKind.Markdown, [], {}], + ['body', 'markdown', CellKind.Markdown, [], {}], + ['# header 2.1\n', 'markdown', CellKind.Markdown, [], {}], + ['body 2', 'markdown', CellKind.Markdown, [], {}], + ['body 3', 'markdown', CellKind.Markdown, [], {}], + ['## header 2.2', 'markdown', CellKind.Markdown, [], {}], + ['var e = 7;', 'markdown', CellKind.Markdown, [], {}], ], (editor, viewModel) => { const foldingModel = new FoldingModel(); @@ -167,13 +167,13 @@ suite('Notebook Folding', () => { blukEditService, undoRedoService, [ - [['# header 1'], 'markdown', CellKind.Markdown, [], {}], - [['body'], 'markdown', CellKind.Markdown, [], {}], - [['# header 2.1\n'], 'markdown', CellKind.Markdown, [], {}], - [['body 2'], 'markdown', CellKind.Markdown, [], {}], - [['body 3'], 'markdown', CellKind.Markdown, [], {}], - [['## header 2.2'], 'markdown', CellKind.Markdown, [], {}], - [['var e = 7;'], 'markdown', CellKind.Markdown, [], {}], + ['# header 1', 'markdown', CellKind.Markdown, [], {}], + ['body', 'markdown', CellKind.Markdown, [], {}], + ['# header 2.1\n', 'markdown', CellKind.Markdown, [], {}], + ['body 2', 'markdown', CellKind.Markdown, [], {}], + ['body 3', 'markdown', CellKind.Markdown, [], {}], + ['## header 2.2', 'markdown', CellKind.Markdown, [], {}], + ['var e = 7;', 'markdown', CellKind.Markdown, [], {}], ], (editor, viewModel) => { const foldingModel = new FoldingModel(); @@ -224,18 +224,18 @@ suite('Notebook Folding', () => { blukEditService, undoRedoService, [ - [['# header 1'], 'markdown', CellKind.Markdown, [], {}], - [['body'], 'markdown', CellKind.Markdown, [], {}], - [['# header 2.1\n'], 'markdown', CellKind.Markdown, [], {}], - [['body 2'], 'markdown', CellKind.Markdown, [], {}], - [['body 3'], 'markdown', CellKind.Markdown, [], {}], - [['## header 2.2'], 'markdown', CellKind.Markdown, [], {}], - [['var e = 7;'], 'markdown', CellKind.Markdown, [], {}], - [['# header 2.1\n'], 'markdown', CellKind.Markdown, [], {}], - [['body 2'], 'markdown', CellKind.Markdown, [], {}], - [['body 3'], 'markdown', CellKind.Markdown, [], {}], - [['## header 2.2'], 'markdown', CellKind.Markdown, [], {}], - [['var e = 7;'], 'markdown', CellKind.Markdown, [], {}], + ['# header 1', 'markdown', CellKind.Markdown, [], {}], + ['body', 'markdown', CellKind.Markdown, [], {}], + ['# header 2.1\n', 'markdown', CellKind.Markdown, [], {}], + ['body 2', 'markdown', CellKind.Markdown, [], {}], + ['body 3', 'markdown', CellKind.Markdown, [], {}], + ['## header 2.2', 'markdown', CellKind.Markdown, [], {}], + ['var e = 7;', 'markdown', CellKind.Markdown, [], {}], + ['# header 2.1\n', 'markdown', CellKind.Markdown, [], {}], + ['body 2', 'markdown', CellKind.Markdown, [], {}], + ['body 3', 'markdown', CellKind.Markdown, [], {}], + ['## header 2.2', 'markdown', CellKind.Markdown, [], {}], + ['var e = 7;', 'markdown', CellKind.Markdown, [], {}], ], (editor, viewModel) => { const foldingModel = new FoldingModel(); @@ -255,18 +255,18 @@ suite('Notebook Folding', () => { blukEditService, undoRedoService, [ - [['# header 1'], 'markdown', CellKind.Markdown, [], {}], - [['body'], 'markdown', CellKind.Markdown, [], {}], - [['# header 2.1\n'], 'markdown', CellKind.Markdown, [], {}], - [['body 2'], 'markdown', CellKind.Markdown, [], {}], - [['body 3'], 'markdown', CellKind.Markdown, [], {}], - [['## header 2.2'], 'markdown', CellKind.Markdown, [], {}], - [['var e = 7;'], 'markdown', CellKind.Markdown, [], {}], - [['# header 2.1\n'], 'markdown', CellKind.Markdown, [], {}], - [['body 2'], 'markdown', CellKind.Markdown, [], {}], - [['body 3'], 'markdown', CellKind.Markdown, [], {}], - [['## header 2.2'], 'markdown', CellKind.Markdown, [], {}], - [['var e = 7;'], 'markdown', CellKind.Markdown, [], {}], + ['# header 1', 'markdown', CellKind.Markdown, [], {}], + ['body', 'markdown', CellKind.Markdown, [], {}], + ['# header 2.1\n', 'markdown', CellKind.Markdown, [], {}], + ['body 2', 'markdown', CellKind.Markdown, [], {}], + ['body 3', 'markdown', CellKind.Markdown, [], {}], + ['## header 2.2', 'markdown', CellKind.Markdown, [], {}], + ['var e = 7;', 'markdown', CellKind.Markdown, [], {}], + ['# header 2.1\n', 'markdown', CellKind.Markdown, [], {}], + ['body 2', 'markdown', CellKind.Markdown, [], {}], + ['body 3', 'markdown', CellKind.Markdown, [], {}], + ['## header 2.2', 'markdown', CellKind.Markdown, [], {}], + ['var e = 7;', 'markdown', CellKind.Markdown, [], {}], ], (editor, viewModel) => { const foldingModel = new FoldingModel(); @@ -290,18 +290,18 @@ suite('Notebook Folding', () => { blukEditService, undoRedoService, [ - [['# header 1'], 'markdown', CellKind.Markdown, [], {}], - [['body'], 'markdown', CellKind.Markdown, [], {}], - [['# header 2.1\n'], 'markdown', CellKind.Markdown, [], {}], - [['body 2'], 'markdown', CellKind.Markdown, [], {}], - [['body 3'], 'markdown', CellKind.Markdown, [], {}], - [['## header 2.2'], 'markdown', CellKind.Markdown, [], {}], - [['var e = 7;'], 'markdown', CellKind.Markdown, [], {}], - [['# header 2.1\n'], 'markdown', CellKind.Markdown, [], {}], - [['body 2'], 'markdown', CellKind.Markdown, [], {}], - [['body 3'], 'markdown', CellKind.Markdown, [], {}], - [['## header 2.2'], 'markdown', CellKind.Markdown, [], {}], - [['var e = 7;'], 'markdown', CellKind.Markdown, [], {}], + ['# header 1', 'markdown', CellKind.Markdown, [], {}], + ['body', 'markdown', CellKind.Markdown, [], {}], + ['# header 2.1\n', 'markdown', CellKind.Markdown, [], {}], + ['body 2', 'markdown', CellKind.Markdown, [], {}], + ['body 3', 'markdown', CellKind.Markdown, [], {}], + ['## header 2.2', 'markdown', CellKind.Markdown, [], {}], + ['var e = 7;', 'markdown', CellKind.Markdown, [], {}], + ['# header 2.1\n', 'markdown', CellKind.Markdown, [], {}], + ['body 2', 'markdown', CellKind.Markdown, [], {}], + ['body 3', 'markdown', CellKind.Markdown, [], {}], + ['## header 2.2', 'markdown', CellKind.Markdown, [], {}], + ['var e = 7;', 'markdown', CellKind.Markdown, [], {}], ], (editor, viewModel) => { const foldingModel = new FoldingModel(); @@ -327,18 +327,18 @@ suite('Notebook Folding', () => { blukEditService, undoRedoService, [ - [['# header 1'], 'markdown', CellKind.Markdown, [], {}], - [['body'], 'markdown', CellKind.Markdown, [], {}], - [['# header 2.1\n'], 'markdown', CellKind.Markdown, [], {}], - [['body 2'], 'markdown', CellKind.Markdown, [], {}], - [['body 3'], 'markdown', CellKind.Markdown, [], {}], - [['## header 2.2'], 'markdown', CellKind.Markdown, [], {}], - [['var e = 7;'], 'markdown', CellKind.Markdown, [], {}], - [['# header 2.1\n'], 'markdown', CellKind.Markdown, [], {}], - [['body 2'], 'markdown', CellKind.Markdown, [], {}], - [['body 3'], 'markdown', CellKind.Markdown, [], {}], - [['## header 2.2'], 'markdown', CellKind.Markdown, [], {}], - [['var e = 7;'], 'markdown', CellKind.Markdown, [], {}], + ['# header 1', 'markdown', CellKind.Markdown, [], {}], + ['body', 'markdown', CellKind.Markdown, [], {}], + ['# header 2.1\n', 'markdown', CellKind.Markdown, [], {}], + ['body 2', 'markdown', CellKind.Markdown, [], {}], + ['body 3', 'markdown', CellKind.Markdown, [], {}], + ['## header 2.2', 'markdown', CellKind.Markdown, [], {}], + ['var e = 7;', 'markdown', CellKind.Markdown, [], {}], + ['# header 2.1\n', 'markdown', CellKind.Markdown, [], {}], + ['body 2', 'markdown', CellKind.Markdown, [], {}], + ['body 3', 'markdown', CellKind.Markdown, [], {}], + ['## header 2.2', 'markdown', CellKind.Markdown, [], {}], + ['var e = 7;', 'markdown', CellKind.Markdown, [], {}], ], (editor, viewModel) => { const foldingModel = new FoldingModel(); @@ -366,18 +366,18 @@ suite('Notebook Folding', () => { blukEditService, undoRedoService, [ - [['# header 1'], 'markdown', CellKind.Markdown, [], {}], - [['body'], 'markdown', CellKind.Markdown, [], {}], - [['# header 2.1\n'], 'markdown', CellKind.Markdown, [], {}], - [['body 2'], 'markdown', CellKind.Markdown, [], {}], - [['body 3'], 'markdown', CellKind.Markdown, [], {}], - [['## header 2.2'], 'markdown', CellKind.Markdown, [], {}], - [['var e = 7;'], 'markdown', CellKind.Markdown, [], {}], - [['# header 2.1\n'], 'markdown', CellKind.Markdown, [], {}], - [['body 2'], 'markdown', CellKind.Markdown, [], {}], - [['body 3'], 'markdown', CellKind.Markdown, [], {}], - [['## header 2.2'], 'markdown', CellKind.Markdown, [], {}], - [['var e = 7;'], 'markdown', CellKind.Markdown, [], {}], + ['# header 1', 'markdown', CellKind.Markdown, [], {}], + ['body', 'markdown', CellKind.Markdown, [], {}], + ['# header 2.1\n', 'markdown', CellKind.Markdown, [], {}], + ['body 2', 'markdown', CellKind.Markdown, [], {}], + ['body 3', 'markdown', CellKind.Markdown, [], {}], + ['## header 2.2', 'markdown', CellKind.Markdown, [], {}], + ['var e = 7;', 'markdown', CellKind.Markdown, [], {}], + ['# header 2.1\n', 'markdown', CellKind.Markdown, [], {}], + ['body 2', 'markdown', CellKind.Markdown, [], {}], + ['body 3', 'markdown', CellKind.Markdown, [], {}], + ['## header 2.2', 'markdown', CellKind.Markdown, [], {}], + ['var e = 7;', 'markdown', CellKind.Markdown, [], {}], ], (editor, viewModel) => { const foldingModel = new FoldingModel(); diff --git a/src/vs/workbench/contrib/notebook/browser/notebookEditorWidget.ts b/src/vs/workbench/contrib/notebook/browser/notebookEditorWidget.ts index e7befc90545..44f506a46e5 100644 --- a/src/vs/workbench/contrib/notebook/browser/notebookEditorWidget.ts +++ b/src/vs/workbench/contrib/notebook/browser/notebookEditorWidget.ts @@ -1245,7 +1245,7 @@ export class NotebookEditorWidget extends Disposable implements INotebookEditor const insertIndex = cell ? (direction === 'above' ? index : nextIndex) : index; - const newCell = this._notebookViewModel!.createCell(insertIndex, initialText.split(/\r?\n/g), language, type, undefined, true); + const newCell = this._notebookViewModel!.createCell(insertIndex, initialText, language, type, undefined, true); return newCell as CellViewModel; } diff --git a/src/vs/workbench/contrib/notebook/browser/viewModel/notebookViewModel.ts b/src/vs/workbench/contrib/notebook/browser/viewModel/notebookViewModel.ts index 3c26621a682..033f378e21c 100644 --- a/src/vs/workbench/contrib/notebook/browser/viewModel/notebookViewModel.ts +++ b/src/vs/workbench/contrib/notebook/browser/viewModel/notebookViewModel.ts @@ -609,7 +609,7 @@ export class NotebookViewModel extends Disposable implements EditorFoldingStateD return result; } - createCell(index: number, source: string | string[], language: string, type: CellKind, metadata: NotebookCellMetadata | undefined, synchronous: boolean, pushUndoStop: boolean = true) { + createCell(index: number, source: string, language: string, type: CellKind, metadata: NotebookCellMetadata | undefined, synchronous: boolean, pushUndoStop: boolean = true) { this._notebook.createCell2(index, source, language, type, metadata, synchronous, pushUndoStop, undefined, undefined); // TODO, rely on createCell to be sync return this.viewCells[index]; @@ -755,7 +755,7 @@ export class NotebookViewModel extends Disposable implements EditorFoldingStateD language, kind, { - createCell: (index: number, source: string | string[], language: string, type: CellKind) => { + createCell: (index: number, source: string, language: string, type: CellKind) => { return this.createCell(index, source, language, type, undefined, true, false) as BaseCellViewModel; }, deleteCell: (index: number) => { diff --git a/src/vs/workbench/contrib/notebook/common/model/notebookCellTextModel.ts b/src/vs/workbench/contrib/notebook/common/model/notebookCellTextModel.ts index 015f62a96e3..c52f4f5be2a 100644 --- a/src/vs/workbench/contrib/notebook/common/model/notebookCellTextModel.ts +++ b/src/vs/workbench/contrib/notebook/common/model/notebookCellTextModel.ts @@ -59,7 +59,7 @@ export class NotebookCellTextModel extends Disposable implements ICell { } const builder = new PieceTreeTextBufferBuilder(); - builder.acceptChunk(Array.isArray(this._source) ? this._source.join('\n') : this._source); + builder.acceptChunk(this._source); const bufferFactory = builder.finish(true); this._textBuffer = bufferFactory.create(model.DefaultEndOfLine.LF); @@ -74,7 +74,7 @@ export class NotebookCellTextModel extends Disposable implements ICell { constructor( readonly uri: URI, public handle: number, - private _source: string | string[], + private _source: string, private _language: string, public cellKind: CellKind, outputs: IProcessedOutput[], diff --git a/src/vs/workbench/contrib/notebook/common/model/notebookTextModel.ts b/src/vs/workbench/contrib/notebook/common/model/notebookTextModel.ts index 920d34f6f70..8c669ea4487 100644 --- a/src/vs/workbench/contrib/notebook/common/model/notebookTextModel.ts +++ b/src/vs/workbench/contrib/notebook/common/model/notebookTextModel.ts @@ -186,7 +186,7 @@ export class NotebookTextModel extends Disposable implements INotebookTextModel } createCellTextModel( - source: string | string[], + source: string, language: string, cellKind: CellKind, outputs: IProcessedOutput[], @@ -559,7 +559,7 @@ export class NotebookTextModel extends Disposable implements INotebookTextModel this._emitSelections.fire(selections); } - createCell2(index: number, source: string | string[], language: string, type: CellKind, metadata: NotebookCellMetadata | undefined, synchronous: boolean, pushUndoStop: boolean, beforeSelections: number[] | undefined, endSelections: number[] | undefined) { + createCell2(index: number, source: string, language: string, type: CellKind, metadata: NotebookCellMetadata | undefined, synchronous: boolean, pushUndoStop: boolean, beforeSelections: number[] | undefined, endSelections: number[] | undefined) { const cell = this.createCellTextModel(source, language, type, [], metadata); if (pushUndoStop) { diff --git a/src/vs/workbench/contrib/notebook/common/notebookCommon.ts b/src/vs/workbench/contrib/notebook/common/notebookCommon.ts index 4ae28b0e979..bd981a009b3 100644 --- a/src/vs/workbench/contrib/notebook/common/notebookCommon.ts +++ b/src/vs/workbench/contrib/notebook/common/notebookCommon.ts @@ -404,7 +404,7 @@ export enum CellEditType { } export interface ICellDto2 { - source: string | string[]; + source: string; language: string; cellKind: CellKind; outputs: IProcessedOutput[]; @@ -428,7 +428,6 @@ export type ICellEditOperation = ICellInsertEdit | ICellDeleteEdit; export interface INotebookEditData { documentVersionId: number; edits: ICellEditOperation[]; - renderers: number[]; } export interface NotebookDataDto { diff --git a/src/vs/workbench/contrib/notebook/test/notebookCommon.test.ts b/src/vs/workbench/contrib/notebook/test/notebookCommon.test.ts index d092389a66e..38a91a236ce 100644 --- a/src/vs/workbench/contrib/notebook/test/notebookCommon.test.ts +++ b/src/vs/workbench/contrib/notebook/test/notebookCommon.test.ts @@ -269,7 +269,7 @@ suite('NotebookCommon', () => { for (let i = 0; i < 5; i++) { cells.push( - new TestCell('notebook', i, [`var a = ${i};`], 'javascript', CellKind.Code, [], textModelService) + new TestCell('notebook', i, `var a = ${i};`, 'javascript', CellKind.Code, [], textModelService) ); } @@ -295,8 +295,8 @@ suite('NotebookCommon', () => { ] ); - const cellA = new TestCell('notebook', 6, ['var a = 6;'], 'javascript', CellKind.Code, [], textModelService); - const cellB = new TestCell('notebook', 7, ['var a = 7;'], 'javascript', CellKind.Code, [], textModelService); + const cellA = new TestCell('notebook', 6, 'var a = 6;', 'javascript', CellKind.Code, [], textModelService); + const cellB = new TestCell('notebook', 7, 'var a = 7;', 'javascript', CellKind.Code, [], textModelService); const modifiedCells = [ cells[0], diff --git a/src/vs/workbench/contrib/notebook/test/notebookTextModel.test.ts b/src/vs/workbench/contrib/notebook/test/notebookTextModel.test.ts index 23ffd1fb439..892e9677c2f 100644 --- a/src/vs/workbench/contrib/notebook/test/notebookTextModel.test.ts +++ b/src/vs/workbench/contrib/notebook/test/notebookTextModel.test.ts @@ -23,15 +23,15 @@ suite('NotebookTextModel', () => { blukEditService, undoRedoService, [ - [['var a = 1;'], 'javascript', CellKind.Code, [], { editable: true }], - [['var b = 2;'], 'javascript', CellKind.Code, [], { editable: false }], - [['var c = 3;'], 'javascript', CellKind.Code, [], { editable: false }], - [['var d = 4;'], 'javascript', CellKind.Code, [], { editable: false }] + ['var a = 1;', 'javascript', CellKind.Code, [], { editable: true }], + ['var b = 2;', 'javascript', CellKind.Code, [], { editable: false }], + ['var c = 3;', 'javascript', CellKind.Code, [], { editable: false }], + ['var d = 4;', 'javascript', CellKind.Code, [], { editable: false }] ], (editor, viewModel, textModel) => { textModel.$applyEdit(textModel.versionId, [ - { editType: CellEditType.Insert, index: 1, cells: [new TestCell(viewModel.viewType, 5, ['var e = 5;'], 'javascript', CellKind.Code, [], textModelService)] }, - { editType: CellEditType.Insert, index: 3, cells: [new TestCell(viewModel.viewType, 6, ['var f = 6;'], 'javascript', CellKind.Code, [], textModelService)] }, + { editType: CellEditType.Insert, index: 1, cells: [new TestCell(viewModel.viewType, 5, 'var e = 5;', 'javascript', CellKind.Code, [], textModelService)] }, + { editType: CellEditType.Insert, index: 3, cells: [new TestCell(viewModel.viewType, 6, 'var f = 6;', 'javascript', CellKind.Code, [], textModelService)] }, ], true); assert.equal(textModel.cells.length, 6); @@ -48,15 +48,15 @@ suite('NotebookTextModel', () => { blukEditService, undoRedoService, [ - [['var a = 1;'], 'javascript', CellKind.Code, [], { editable: true }], - [['var b = 2;'], 'javascript', CellKind.Code, [], { editable: false }], - [['var c = 3;'], 'javascript', CellKind.Code, [], { editable: false }], - [['var d = 4;'], 'javascript', CellKind.Code, [], { editable: false }] + ['var a = 1;', 'javascript', CellKind.Code, [], { editable: true }], + ['var b = 2;', 'javascript', CellKind.Code, [], { editable: false }], + ['var c = 3;', 'javascript', CellKind.Code, [], { editable: false }], + ['var d = 4;', 'javascript', CellKind.Code, [], { editable: false }] ], (editor, viewModel, textModel) => { textModel.$applyEdit(textModel.versionId, [ - { editType: CellEditType.Insert, index: 1, cells: [new TestCell(viewModel.viewType, 5, ['var e = 5;'], 'javascript', CellKind.Code, [], textModelService)] }, - { editType: CellEditType.Insert, index: 1, cells: [new TestCell(viewModel.viewType, 6, ['var f = 6;'], 'javascript', CellKind.Code, [], textModelService)] }, + { editType: CellEditType.Insert, index: 1, cells: [new TestCell(viewModel.viewType, 5, 'var e = 5;', 'javascript', CellKind.Code, [], textModelService)] }, + { editType: CellEditType.Insert, index: 1, cells: [new TestCell(viewModel.viewType, 6, 'var f = 6;', 'javascript', CellKind.Code, [], textModelService)] }, ], true); assert.equal(textModel.cells.length, 6); @@ -73,10 +73,10 @@ suite('NotebookTextModel', () => { blukEditService, undoRedoService, [ - [['var a = 1;'], 'javascript', CellKind.Code, [], { editable: true }], - [['var b = 2;'], 'javascript', CellKind.Code, [], { editable: false }], - [['var c = 3;'], 'javascript', CellKind.Code, [], { editable: false }], - [['var d = 4;'], 'javascript', CellKind.Code, [], { editable: false }] + ['var a = 1;', 'javascript', CellKind.Code, [], { editable: true }], + ['var b = 2;', 'javascript', CellKind.Code, [], { editable: false }], + ['var c = 3;', 'javascript', CellKind.Code, [], { editable: false }], + ['var d = 4;', 'javascript', CellKind.Code, [], { editable: false }] ], (editor, viewModel, textModel) => { textModel.$applyEdit(textModel.versionId, [ @@ -96,15 +96,15 @@ suite('NotebookTextModel', () => { blukEditService, undoRedoService, [ - [['var a = 1;'], 'javascript', CellKind.Code, [], { editable: true }], - [['var b = 2;'], 'javascript', CellKind.Code, [], { editable: false }], - [['var c = 3;'], 'javascript', CellKind.Code, [], { editable: false }], - [['var d = 4;'], 'javascript', CellKind.Code, [], { editable: false }] + ['var a = 1;', 'javascript', CellKind.Code, [], { editable: true }], + ['var b = 2;', 'javascript', CellKind.Code, [], { editable: false }], + ['var c = 3;', 'javascript', CellKind.Code, [], { editable: false }], + ['var d = 4;', 'javascript', CellKind.Code, [], { editable: false }] ], (editor, viewModel, textModel) => { textModel.$applyEdit(textModel.versionId, [ { editType: CellEditType.Delete, index: 1, count: 1 }, - { editType: CellEditType.Insert, index: 3, cells: [new TestCell(viewModel.viewType, 5, ['var e = 5;'], 'javascript', CellKind.Code, [], textModelService)] }, + { editType: CellEditType.Insert, index: 3, cells: [new TestCell(viewModel.viewType, 5, 'var e = 5;', 'javascript', CellKind.Code, [], textModelService)] }, ], true); assert.equal(textModel.cells.length, 4); @@ -121,15 +121,15 @@ suite('NotebookTextModel', () => { blukEditService, undoRedoService, [ - [['var a = 1;'], 'javascript', CellKind.Code, [], { editable: true }], - [['var b = 2;'], 'javascript', CellKind.Code, [], { editable: false }], - [['var c = 3;'], 'javascript', CellKind.Code, [], { editable: false }], - [['var d = 4;'], 'javascript', CellKind.Code, [], { editable: false }] + ['var a = 1;', 'javascript', CellKind.Code, [], { editable: true }], + ['var b = 2;', 'javascript', CellKind.Code, [], { editable: false }], + ['var c = 3;', 'javascript', CellKind.Code, [], { editable: false }], + ['var d = 4;', 'javascript', CellKind.Code, [], { editable: false }] ], (editor, viewModel, textModel) => { textModel.$applyEdit(textModel.versionId, [ { editType: CellEditType.Delete, index: 1, count: 1 }, - { editType: CellEditType.Insert, index: 1, cells: [new TestCell(viewModel.viewType, 5, ['var e = 5;'], 'javascript', CellKind.Code, [], textModelService)] }, + { editType: CellEditType.Insert, index: 1, cells: [new TestCell(viewModel.viewType, 5, 'var e = 5;', 'javascript', CellKind.Code, [], textModelService)] }, ], true); assert.equal(textModel.cells.length, 4); @@ -140,4 +140,3 @@ suite('NotebookTextModel', () => { ); }); }); - diff --git a/src/vs/workbench/contrib/notebook/test/notebookViewModel.test.ts b/src/vs/workbench/contrib/notebook/test/notebookViewModel.test.ts index 052842994fa..70d9b950c3f 100644 --- a/src/vs/workbench/contrib/notebook/test/notebookViewModel.test.ts +++ b/src/vs/workbench/contrib/notebook/test/notebookViewModel.test.ts @@ -36,14 +36,14 @@ suite('NotebookViewModel', () => { blukEditService, undoRedoService, [ - [['var a = 1;'], 'javascript', CellKind.Code, [], { editable: true }], - [['var b = 2;'], 'javascript', CellKind.Code, [], { editable: false }] + ['var a = 1;', 'javascript', CellKind.Code, [], { editable: true }], + ['var b = 2;', 'javascript', CellKind.Code, [], { editable: false }] ], (editor, viewModel) => { assert.equal(viewModel.viewCells[0].metadata?.editable, true); assert.equal(viewModel.viewCells[1].metadata?.editable, false); - const cell = viewModel.insertCell(1, new TestCell(viewModel.viewType, 0, ['var c = 3;'], 'javascript', CellKind.Code, [], textModelService), true); + const cell = viewModel.insertCell(1, new TestCell(viewModel.viewType, 0, 'var c = 3;', 'javascript', CellKind.Code, [], textModelService), true); assert.equal(viewModel.viewCells.length, 3); assert.equal(viewModel.notebookDocument.cells.length, 3); assert.equal(viewModel.getCellIndex(cell), 1); @@ -62,9 +62,9 @@ suite('NotebookViewModel', () => { blukEditService, undoRedoService, [ - [['//a'], 'javascript', CellKind.Code, [], { editable: true }], - [['//b'], 'javascript', CellKind.Code, [], { editable: true }], - [['//c'], 'javascript', CellKind.Code, [], { editable: true }], + ['//a', 'javascript', CellKind.Code, [], { editable: true }], + ['//b', 'javascript', CellKind.Code, [], { editable: true }], + ['//c', 'javascript', CellKind.Code, [], { editable: true }], ], (editor, viewModel) => { viewModel.moveCellToIdx(0, 1, 0, false); @@ -93,9 +93,9 @@ suite('NotebookViewModel', () => { blukEditService, undoRedoService, [ - [['//a'], 'javascript', CellKind.Code, [], { editable: true }], - [['//b'], 'javascript', CellKind.Code, [], { editable: true }], - [['//c'], 'javascript', CellKind.Code, [], { editable: true }], + ['//a', 'javascript', CellKind.Code, [], { editable: true }], + ['//b', 'javascript', CellKind.Code, [], { editable: true }], + ['//c', 'javascript', CellKind.Code, [], { editable: true }], ], (editor, viewModel) => { viewModel.moveCellToIdx(1, 1, 0, false); @@ -118,21 +118,21 @@ suite('NotebookViewModel', () => { blukEditService, undoRedoService, [ - [['var a = 1;'], 'javascript', CellKind.Code, [], { editable: true }], - [['var b = 2;'], 'javascript', CellKind.Code, [], { editable: true }] + ['var a = 1;', 'javascript', CellKind.Code, [], { editable: true }], + ['var b = 2;', 'javascript', CellKind.Code, [], { editable: true }] ], (editor, viewModel) => { const firstViewCell = viewModel.viewCells[0]; const lastViewCell = viewModel.viewCells[viewModel.viewCells.length - 1]; const insertIndex = viewModel.getCellIndex(firstViewCell) + 1; - const cell = viewModel.insertCell(insertIndex, new TestCell(viewModel.viewType, 3, ['var c = 3;'], 'javascript', CellKind.Code, [], textModelService), true); + const cell = viewModel.insertCell(insertIndex, new TestCell(viewModel.viewType, 3, 'var c = 3;', 'javascript', CellKind.Code, [], textModelService), true); const addedCellIndex = viewModel.getCellIndex(cell); viewModel.deleteCell(addedCellIndex, true); const secondInsertIndex = viewModel.getCellIndex(lastViewCell) + 1; - const cell2 = viewModel.insertCell(secondInsertIndex, new TestCell(viewModel.viewType, 4, ['var d = 4;'], 'javascript', CellKind.Code, [], textModelService), true); + const cell2 = viewModel.insertCell(secondInsertIndex, new TestCell(viewModel.viewType, 4, 'var d = 4;', 'javascript', CellKind.Code, [], textModelService), true); assert.equal(viewModel.viewCells.length, 3); assert.equal(viewModel.notebookDocument.cells.length, 3); @@ -147,11 +147,11 @@ suite('NotebookViewModel', () => { blukEditService, undoRedoService, [ - [['var a = 1;'], 'javascript', CellKind.Code, [], {}], - [['var b = 2;'], 'javascript', CellKind.Code, [], { editable: true, runnable: true }], - [['var c = 3;'], 'javascript', CellKind.Code, [], { editable: true, runnable: false }], - [['var d = 4;'], 'javascript', CellKind.Code, [], { editable: false, runnable: true }], - [['var e = 5;'], 'javascript', CellKind.Code, [], { editable: false, runnable: false }], + ['var a = 1;', 'javascript', CellKind.Code, [], {}], + ['var b = 2;', 'javascript', CellKind.Code, [], { editable: true, runnable: true }], + ['var c = 3;', 'javascript', CellKind.Code, [], { editable: true, runnable: false }], + ['var d = 4;', 'javascript', CellKind.Code, [], { editable: false, runnable: true }], + ['var e = 5;', 'javascript', CellKind.Code, [], { editable: false, runnable: false }], ], (editor, viewModel) => { viewModel.notebookDocument.metadata = { editable: true, runnable: true, cellRunnable: true, cellEditable: true, cellHasExecutionOrder: true }; @@ -269,11 +269,11 @@ suite('NotebookViewModel Decorations', () => { blukEditService, undoRedoService, [ - [['var a = 1;'], 'javascript', CellKind.Code, [], {}], - [['var b = 2;'], 'javascript', CellKind.Code, [], { editable: true, runnable: true }], - [['var c = 3;'], 'javascript', CellKind.Code, [], { editable: true, runnable: false }], - [['var d = 4;'], 'javascript', CellKind.Code, [], { editable: false, runnable: true }], - [['var e = 5;'], 'javascript', CellKind.Code, [], { editable: false, runnable: false }], + ['var a = 1;', 'javascript', CellKind.Code, [], {}], + ['var b = 2;', 'javascript', CellKind.Code, [], { editable: true, runnable: true }], + ['var c = 3;', 'javascript', CellKind.Code, [], { editable: true, runnable: false }], + ['var d = 4;', 'javascript', CellKind.Code, [], { editable: false, runnable: true }], + ['var e = 5;', 'javascript', CellKind.Code, [], { editable: false, runnable: false }], ], (editor, viewModel) => { const trackedId = viewModel.setTrackedRange('test', { start: 1, end: 2 }, TrackedRangeStickiness.GrowsOnlyWhenTypingAfter); @@ -283,7 +283,7 @@ suite('NotebookViewModel Decorations', () => { end: 2, }); - viewModel.insertCell(0, new TestCell(viewModel.viewType, 5, ['var d = 6;'], 'javascript', CellKind.Code, [], textModelService), true); + viewModel.insertCell(0, new TestCell(viewModel.viewType, 5, 'var d = 6;', 'javascript', CellKind.Code, [], textModelService), true); assert.deepEqual(viewModel.getTrackedRange(trackedId!), { start: 2, @@ -297,7 +297,7 @@ suite('NotebookViewModel Decorations', () => { end: 2 }); - viewModel.insertCell(3, new TestCell(viewModel.viewType, 6, ['var d = 7;'], 'javascript', CellKind.Code, [], textModelService), true); + viewModel.insertCell(3, new TestCell(viewModel.viewType, 6, 'var d = 7;', 'javascript', CellKind.Code, [], textModelService), true); assert.deepEqual(viewModel.getTrackedRange(trackedId!), { start: 1, @@ -327,13 +327,13 @@ suite('NotebookViewModel Decorations', () => { blukEditService, undoRedoService, [ - [['var a = 1;'], 'javascript', CellKind.Code, [], {}], - [['var b = 2;'], 'javascript', CellKind.Code, [], { editable: true, runnable: true }], - [['var c = 3;'], 'javascript', CellKind.Code, [], { editable: true, runnable: false }], - [['var d = 4;'], 'javascript', CellKind.Code, [], { editable: false, runnable: true }], - [['var e = 5;'], 'javascript', CellKind.Code, [], { editable: false, runnable: false }], - [['var e = 6;'], 'javascript', CellKind.Code, [], { editable: false, runnable: false }], - [['var e = 7;'], 'javascript', CellKind.Code, [], { editable: false, runnable: false }], + ['var a = 1;', 'javascript', CellKind.Code, [], {}], + ['var b = 2;', 'javascript', CellKind.Code, [], { editable: true, runnable: true }], + ['var c = 3;', 'javascript', CellKind.Code, [], { editable: true, runnable: false }], + ['var d = 4;', 'javascript', CellKind.Code, [], { editable: false, runnable: true }], + ['var e = 5;', 'javascript', CellKind.Code, [], { editable: false, runnable: false }], + ['var e = 6;', 'javascript', CellKind.Code, [], { editable: false, runnable: false }], + ['var e = 7;', 'javascript', CellKind.Code, [], { editable: false, runnable: false }], ], (editor, viewModel) => { const trackedId = viewModel.setTrackedRange('test', { start: 1, end: 3 }, TrackedRangeStickiness.GrowsOnlyWhenTypingAfter); @@ -343,14 +343,14 @@ suite('NotebookViewModel Decorations', () => { end: 3 }); - viewModel.insertCell(5, new TestCell(viewModel.viewType, 8, ['var d = 9;'], 'javascript', CellKind.Code, [], textModelService), true); + viewModel.insertCell(5, new TestCell(viewModel.viewType, 8, 'var d = 9;', 'javascript', CellKind.Code, [], textModelService), true); assert.deepEqual(viewModel.getTrackedRange(trackedId!), { start: 1, end: 3 }); - viewModel.insertCell(4, new TestCell(viewModel.viewType, 9, ['var d = 10;'], 'javascript', CellKind.Code, [], textModelService), true); + viewModel.insertCell(4, new TestCell(viewModel.viewType, 9, 'var d = 10;', 'javascript', CellKind.Code, [], textModelService), true); assert.deepEqual(viewModel.getTrackedRange(trackedId!), { start: 1, diff --git a/src/vs/workbench/contrib/notebook/test/testNotebookEditor.ts b/src/vs/workbench/contrib/notebook/test/testNotebookEditor.ts index 98d72f689d3..eebd1a26cf0 100644 --- a/src/vs/workbench/contrib/notebook/test/testNotebookEditor.ts +++ b/src/vs/workbench/contrib/notebook/test/testNotebookEditor.ts @@ -39,7 +39,7 @@ export class TestCell extends NotebookCellTextModel { constructor( public viewType: string, handle: number, - public source: string[], + public source: string, language: string, cellKind: CellKind, outputs: IProcessedOutput[], @@ -375,7 +375,7 @@ export function setupInstantiationService() { return instantiationService; } -export function withTestNotebook(instantiationService: TestInstantiationService, blukEditService: IBulkEditService, undoRedoService: IUndoRedoService, cells: [string[], string, CellKind, IProcessedOutput[], NotebookCellMetadata][], callback: (editor: TestNotebookEditor, viewModel: NotebookViewModel, textModel: NotebookTextModel) => void) { +export function withTestNotebook(instantiationService: TestInstantiationService, blukEditService: IBulkEditService, undoRedoService: IUndoRedoService, cells: [string, string, CellKind, IProcessedOutput[], NotebookCellMetadata][], callback: (editor: TestNotebookEditor, viewModel: NotebookViewModel, textModel: NotebookTextModel) => void) { const textModelService = instantiationService.get(ITextModelService); const viewType = 'notebook';