diff --git a/src/vs/vscode.proposed.d.ts b/src/vs/vscode.proposed.d.ts index dfcaefa1ada..68f9669759c 100644 --- a/src/vs/vscode.proposed.d.ts +++ b/src/vs/vscode.proposed.d.ts @@ -1593,6 +1593,11 @@ declare module 'vscode' { */ readonly onDidDispose: Event; + /** + * Active kernel used in the editor + */ + readonly kernel?: NotebookKernel; + /** * Fired when the output hosting webview posts a message. */ diff --git a/src/vs/workbench/api/common/extHostNotebook.ts b/src/vs/workbench/api/common/extHostNotebook.ts index 515262f4cc4..2f9a49f0283 100644 --- a/src/vs/workbench/api/common/extHostNotebook.ts +++ b/src/vs/workbench/api/common/extHostNotebook.ts @@ -617,6 +617,16 @@ export class ExtHostNotebookEditor extends Disposable implements vscode.Notebook this._active = value; } + private _kernel?: vscode.NotebookKernel; + + get kernel() { + return this._kernel; + } + + set kernel(_kernel: vscode.NotebookKernel | undefined) { + throw readonly('kernel'); + } + private _onDidDispose = new Emitter(); readonly onDidDispose: Event = this._onDidDispose.event; private _onDidReceiveMessage = new Emitter(); @@ -692,6 +702,9 @@ export class ExtHostNotebookEditor extends Disposable implements vscode.Notebook throw readonly('viewColumn'); } + updateActiveKernel(kernel?: vscode.NotebookKernel) { + this._kernel = kernel; + } async postMessage(message: any): Promise { return this._webComm.postMessage(message); } @@ -1327,6 +1340,11 @@ export class ExtHostNotebookController implements ExtHostNotebookShape, ExtHostN if (event.providerHandle !== undefined) { this._withAdapter(event.providerHandle, event.uri, async (adapter, document) => { const kernel = event.kernelId ? adapter.getKernel(event.kernelId) : undefined; + this._editors.forEach(editor => { + if (editor.editor.document === document) { + editor.editor.updateActiveKernel(kernel); + } + }); this._onDidChangeActiveNotebookKernel.fire({ document, kernel }); }); }