mirror of
https://github.com/Microsoft/vscode
synced 2024-08-28 05:19:39 +00:00
save kernel selection to memento if there is no isPreferred.
This commit is contained in:
parent
3bd820b15c
commit
52dfde3e21
|
@ -69,6 +69,8 @@ export class NotebookEditorOptions extends EditorOptions {
|
|||
}
|
||||
}
|
||||
|
||||
const NotebookEditorActiveKernelCache = 'workbench.editor.notebook.activeKernel';
|
||||
|
||||
export class NotebookEditorWidget extends Disposable implements INotebookEditor {
|
||||
static readonly ID: string = 'workbench.editor.notebook';
|
||||
private static readonly EDITOR_MEMENTOS = new Map<string, EditorMemento<unknown>>();
|
||||
|
@ -98,6 +100,7 @@ export class NotebookEditorWidget extends Disposable implements INotebookEditor
|
|||
protected readonly _contributions: { [key: string]: INotebookEditorContribution; };
|
||||
private _scrollBeyondLastLine: boolean;
|
||||
private readonly _memento: Memento;
|
||||
private readonly _activeKernelMemento: Memento;
|
||||
private readonly _onDidFocusEmitter = this._register(new Emitter<void>());
|
||||
public readonly onDidFocus = this._onDidFocusEmitter.event;
|
||||
private _cellContextKeyManager: CellContextKeyManager | null = null;
|
||||
|
@ -150,6 +153,10 @@ export class NotebookEditorWidget extends Disposable implements INotebookEditor
|
|||
}
|
||||
|
||||
this._activeKernel = kernel;
|
||||
|
||||
const memento = this._activeKernelMemento.getMemento(StorageScope.GLOBAL);
|
||||
memento[this.viewModel!.viewType] = this._activeKernel?.id;
|
||||
this._activeKernelMemento.saveMemento();
|
||||
this._onDidChangeKernel.fire();
|
||||
}
|
||||
|
||||
|
@ -196,6 +203,7 @@ export class NotebookEditorWidget extends Disposable implements INotebookEditor
|
|||
) {
|
||||
super();
|
||||
this._memento = new Memento(NotebookEditorWidget.ID, storageService);
|
||||
this._activeKernelMemento = new Memento(NotebookEditorActiveKernelCache, storageService);
|
||||
|
||||
this._outputRenderer = new OutputRenderer(this, this.instantiationService);
|
||||
this._contributions = {};
|
||||
|
@ -612,12 +620,17 @@ export class NotebookEditorWidget extends Disposable implements INotebookEditor
|
|||
private async _setKernelsFromProviders(provider: NotebookProviderInfo, kernels: INotebookKernelInfo2[], tokenSource: CancellationTokenSource) {
|
||||
const rawAssociations = this.configurationService.getValue<NotebookKernelProviderAssociations>(notebookKernelProviderAssociationsSettingId) || [];
|
||||
const userSetKernelProvider = rawAssociations.filter(e => e.viewType === this.viewModel?.viewType)[0]?.kernelProvider;
|
||||
const memento = this._activeKernelMemento.getMemento(StorageScope.GLOBAL);
|
||||
|
||||
if (userSetKernelProvider) {
|
||||
const filteredKernels = kernels.filter(kernel => kernel.extension.value === userSetKernelProvider);
|
||||
|
||||
if (filteredKernels.length) {
|
||||
this.activeKernel = filteredKernels.find(kernel => kernel.isPreferred) || filteredKernels[0];
|
||||
const cachedKernelId = memento[provider.id];
|
||||
this.activeKernel =
|
||||
filteredKernels.find(kernel => kernel.isPreferred)
|
||||
|| filteredKernels.find(kernel => kernel.id === cachedKernelId)
|
||||
|| filteredKernels[0];
|
||||
} else {
|
||||
this.activeKernel = undefined;
|
||||
}
|
||||
|
@ -627,6 +640,9 @@ export class NotebookEditorWidget extends Disposable implements INotebookEditor
|
|||
await this.activeKernel.resolve(this.viewModel!.uri, this.getId(), tokenSource.token);
|
||||
}
|
||||
|
||||
memento[provider.id] = this._activeKernel?.id;
|
||||
this._activeKernelMemento.saveMemento();
|
||||
|
||||
tokenSource.dispose();
|
||||
return;
|
||||
}
|
||||
|
@ -634,10 +650,17 @@ export class NotebookEditorWidget extends Disposable implements INotebookEditor
|
|||
// choose a preferred kernel
|
||||
const kernelsFromSameExtension = kernels.filter(kernel => kernel.extension.value === provider.providerExtensionId);
|
||||
if (kernelsFromSameExtension.length) {
|
||||
const preferedKernel = kernelsFromSameExtension.find(kernel => kernel.isPreferred) || kernelsFromSameExtension[0];
|
||||
const cachedKernelId = memento[provider.id];
|
||||
|
||||
const preferedKernel = kernelsFromSameExtension.find(kernel => kernel.isPreferred)
|
||||
|| kernelsFromSameExtension.find(kernel => kernel.id === cachedKernelId)
|
||||
|| kernelsFromSameExtension[0];
|
||||
this.activeKernel = preferedKernel;
|
||||
await this._loadKernelPreloads(this.activeKernel.extensionLocation, this.activeKernel);
|
||||
await preferedKernel.resolve(this.viewModel!.uri, this.getId(), tokenSource.token);
|
||||
|
||||
memento[provider.id] = this._activeKernel?.id;
|
||||
this._activeKernelMemento.saveMemento();
|
||||
tokenSource.dispose();
|
||||
return;
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue