Implement cancellation for notebook cell execution

This commit is contained in:
Rob Lourens
2020-03-29 18:08:40 -05:00
parent e0685110a2
commit d661f7b2d1
12 changed files with 138 additions and 79 deletions

View File

@@ -15,6 +15,7 @@ import { ExtHostCommands } from 'vs/workbench/api/common/extHostCommands';
import { ExtHostDocumentsAndEditors } from 'vs/workbench/api/common/extHostDocumentsAndEditors';
import { CellEditType, CellUri, diff, ICellEditOperation, ICellInsertEdit, IErrorOutput, INotebookDisplayOrder, INotebookEditData, IOrderedMimeType, IStreamOutput, ITransformedDisplayOutputDto, mimeTypeSupportedByCore, NotebookCellsChangedEvent, NotebookCellsSplice2, sortMimeTypes, ICellDeleteEdit } from 'vs/workbench/contrib/notebook/common/notebookCommon';
import { Disposable as VSCodeDisposable } from './extHostTypes';
import { CancellationToken } from 'vs/base/common/cancellation';
interface IObservable<T> {
proxy: T;
@@ -686,7 +687,7 @@ export class ExtHostNotebookController implements ExtHostNotebookShape, ExtHostN
return Promise.resolve(undefined);
}
async $executeNotebook(viewType: string, uri: UriComponents, cellHandle: number | undefined): Promise<void> {
async $executeNotebook(viewType: string, uri: UriComponents, cellHandle: number | undefined, token: CancellationToken): Promise<void> {
let provider = this._notebookProviders.get(viewType);
if (!provider) {
@@ -700,7 +701,7 @@ export class ExtHostNotebookController implements ExtHostNotebookShape, ExtHostN
}
let cell = cellHandle !== undefined ? document.getCell(cellHandle) : undefined;
return provider.provider.executeCell(document!, cell);
return provider.provider.executeCell(document!, cell, token);
}
async $saveNotebook(viewType: string, uri: UriComponents): Promise<boolean> {