eae5d8c807
These conflicts will be resolved in the following commits. We do it this way so that PR review is possible.
188 lines
4.9 KiB
TypeScript
188 lines
4.9 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 * as vscode from 'vscode';
|
|
import { smokeTestActivate } from './notebookSmokeTestMain';
|
|
|
|
export function activate(context: vscode.ExtensionContext): any {
|
|
smokeTestActivate(context);
|
|
|
|
const _onDidChangeNotebook = new vscode.EventEmitter<vscode.NotebookDocumentEditEvent | vscode.NotebookDocumentContentChangeEvent>();
|
|
context.subscriptions.push(_onDidChangeNotebook);
|
|
context.subscriptions.push(vscode.notebook.registerNotebookContentProvider('notebookCoreTest', {
|
|
onDidChangeNotebook: _onDidChangeNotebook.event,
|
|
openNotebook: async (_resource: vscode.Uri) => {
|
|
if (/.*empty\-.*\.vsctestnb$/.test(_resource.path)) {
|
|
return {
|
|
languages: ['typescript'],
|
|
metadata: {},
|
|
cells: []
|
|
};
|
|
}
|
|
|
|
const dto: vscode.NotebookData = {
|
|
languages: ['typescript'],
|
|
metadata: {
|
|
custom: { testMetadata: false }
|
|
},
|
|
cells: [
|
|
{
|
|
source: 'test',
|
|
language: 'typescript',
|
|
cellKind: vscode.CellKind.Code,
|
|
outputs: [],
|
|
metadata: {
|
|
custom: { testCellMetadata: 123 }
|
|
}
|
|
}
|
|
]
|
|
};
|
|
|
|
return dto;
|
|
},
|
|
resolveNotebook: async (_document: vscode.NotebookDocument) => {
|
|
return;
|
|
},
|
|
saveNotebook: async (_document: vscode.NotebookDocument, _cancellation: vscode.CancellationToken) => {
|
|
return;
|
|
},
|
|
saveNotebookAs: async (_targetResource: vscode.Uri, _document: vscode.NotebookDocument, _cancellation: vscode.CancellationToken) => {
|
|
return;
|
|
},
|
|
backupNotebook: async (_document: vscode.NotebookDocument, _context: vscode.NotebookDocumentBackupContext, _cancellation: vscode.CancellationToken) => {
|
|
return {
|
|
id: '1',
|
|
delete: () => { }
|
|
};
|
|
}
|
|
}));
|
|
|
|
const kernel: vscode.NotebookKernel = {
|
|
id: 'mainKernel',
|
|
label: 'Notebook Test Kernel',
|
|
isPreferred: true,
|
|
executeAllCells: async (_document: vscode.NotebookDocument) => {
|
|
const cell = _document.cells[0];
|
|
|
|
cell.outputs = [{
|
|
outputKind: vscode.CellOutputKind.Rich,
|
|
data: {
|
|
'text/plain': ['my output']
|
|
}
|
|
}];
|
|
return;
|
|
},
|
|
cancelAllCellsExecution: async (_document: vscode.NotebookDocument) => { },
|
|
executeCell: async (document: vscode.NotebookDocument, cell: vscode.NotebookCell | undefined) => {
|
|
if (!cell) {
|
|
cell = document.cells[0];
|
|
}
|
|
|
|
if (document.uri.path.endsWith('customRenderer.vsctestnb')) {
|
|
cell.outputs = [{
|
|
outputKind: vscode.CellOutputKind.Rich,
|
|
data: {
|
|
'text/custom': 'test'
|
|
}
|
|
}];
|
|
|
|
return;
|
|
}
|
|
|
|
const previousOutputs = cell.outputs;
|
|
const newOutputs: vscode.CellOutput[] = [{
|
|
outputKind: vscode.CellOutputKind.Rich,
|
|
data: {
|
|
'text/plain': ['my output']
|
|
}
|
|
}];
|
|
|
|
cell.outputs = newOutputs;
|
|
|
|
_onDidChangeNotebook.fire({
|
|
document: document,
|
|
undo: () => {
|
|
if (cell) {
|
|
cell.outputs = previousOutputs;
|
|
}
|
|
},
|
|
redo: () => {
|
|
if (cell) {
|
|
cell.outputs = newOutputs;
|
|
}
|
|
}
|
|
});
|
|
return;
|
|
},
|
|
cancelCellExecution: async (_document: vscode.NotebookDocument, _cell: vscode.NotebookCell) => { }
|
|
};
|
|
|
|
const kernel2: vscode.NotebookKernel = {
|
|
id: 'secondaryKernel',
|
|
label: 'Notebook Secondary Test Kernel',
|
|
isPreferred: false,
|
|
executeAllCells: async (_document: vscode.NotebookDocument) => {
|
|
const cell = _document.cells[0];
|
|
|
|
cell.outputs = [{
|
|
outputKind: vscode.CellOutputKind.Rich,
|
|
data: {
|
|
'text/plain': ['my second output']
|
|
}
|
|
}];
|
|
return;
|
|
},
|
|
cancelAllCellsExecution: async (_document: vscode.NotebookDocument) => { },
|
|
executeCell: async (document: vscode.NotebookDocument, cell: vscode.NotebookCell | undefined) => {
|
|
if (!cell) {
|
|
cell = document.cells[0];
|
|
}
|
|
|
|
if (document.uri.path.endsWith('customRenderer.vsctestnb')) {
|
|
cell.outputs = [{
|
|
outputKind: vscode.CellOutputKind.Rich,
|
|
data: {
|
|
'text/custom': 'test 2'
|
|
}
|
|
}];
|
|
|
|
return;
|
|
}
|
|
|
|
const previousOutputs = cell.outputs;
|
|
const newOutputs: vscode.CellOutput[] = [{
|
|
outputKind: vscode.CellOutputKind.Rich,
|
|
data: {
|
|
'text/plain': ['my second output']
|
|
}
|
|
}];
|
|
|
|
cell.outputs = newOutputs;
|
|
|
|
_onDidChangeNotebook.fire({
|
|
document: document,
|
|
undo: () => {
|
|
if (cell) {
|
|
cell.outputs = previousOutputs;
|
|
}
|
|
},
|
|
redo: () => {
|
|
if (cell) {
|
|
cell.outputs = newOutputs;
|
|
}
|
|
}
|
|
});
|
|
return;
|
|
},
|
|
cancelCellExecution: async (_document: vscode.NotebookDocument, _cell: vscode.NotebookCell) => { }
|
|
};
|
|
|
|
context.subscriptions.push(vscode.notebook.registerNotebookKernelProvider({ filenamePattern: '*.vsctestnb' }, {
|
|
provideKernels: async () => {
|
|
return [kernel, kernel2];
|
|
}
|
|
}));
|
|
}
|