diff --git a/src/vs/workbench/contrib/interactive/browser/interactive.contribution.ts b/src/vs/workbench/contrib/interactive/browser/interactive.contribution.ts index cedf455a287..cb3332a8abb 100644 --- a/src/vs/workbench/contrib/interactive/browser/interactive.contribution.ts +++ b/src/vs/workbench/contrib/interactive/browser/interactive.contribution.ts @@ -386,7 +386,7 @@ registerAction2(class extends Action2 { const allKernels = kernelService.getMatchingKernel({ uri: notebookUri, viewType: 'interactive' }).all; const preferredKernel = allKernels.find(kernel => kernel.id === id); if (preferredKernel) { - kernelService.selectKernelForNotebook(preferredKernel, { uri: notebookUri, viewType: 'interactive' }); + kernelService.preselectKernelForNotebook(preferredKernel, { uri: notebookUri, viewType: 'interactive' }); } } diff --git a/src/vs/workbench/contrib/notebook/browser/notebookKernelServiceImpl.ts b/src/vs/workbench/contrib/notebook/browser/notebookKernelServiceImpl.ts index 250e502801f..1f2e2e72032 100644 --- a/src/vs/workbench/contrib/notebook/browser/notebookKernelServiceImpl.ts +++ b/src/vs/workbench/contrib/notebook/browser/notebookKernelServiceImpl.ts @@ -225,6 +225,15 @@ export class NotebookKernelService extends Disposable implements INotebookKernel } } + preselectKernelForNotebook(kernel: INotebookKernel, notebook: INotebookTextModelLike): void { + const key = NotebookTextModelLikeId.str(notebook); + const oldKernel = this._notebookBindings.get(key); + if (oldKernel !== kernel?.id) { + this._notebookBindings.set(key, kernel.id); + this._persistMementos(); + } + } + updateKernelNotebookAffinity(kernel: INotebookKernel, notebook: URI, preference: number | undefined): void { const info = this._kernels.get(kernel.id); if (!info) { diff --git a/src/vs/workbench/contrib/notebook/common/notebookKernelService.ts b/src/vs/workbench/contrib/notebook/common/notebookKernelService.ts index 2ca0bbd0ac9..6610fe7177d 100644 --- a/src/vs/workbench/contrib/notebook/common/notebookKernelService.ts +++ b/src/vs/workbench/contrib/notebook/common/notebookKernelService.ts @@ -81,6 +81,11 @@ export interface INotebookKernelService { */ selectKernelForNotebook(kernel: INotebookKernel, notebook: INotebookTextModelLike): void; + /** + * Set the kernel that a notebook should use when it starts up + */ + preselectKernelForNotebook(kernel: INotebookKernel, notebook: INotebookTextModelLike): void; + /** * Bind a notebook type to a kernel. * @param viewType