Skip to content

Commit 9753398

Browse files
committed
debt - invoke resolve notebook when opening a notebook in an editor, not when loading a notebook from source
1 parent e40d854 commit 9753398

7 files changed

+30
-24
lines changed

src/vs/workbench/contrib/notebook/browser/notebookDiffEditorInput.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -193,14 +193,14 @@ ${patterns}
193193
return;
194194
}
195195

196-
async resolve(editorId?: string): Promise<INotebookDiffEditorModel | null> {
196+
async resolve(): Promise<INotebookDiffEditorModel | null> {
197197
if (!await this._notebookService.canResolve(this.viewType!)) {
198198
return null;
199199
}
200200

201201
if (!this._textModel) {
202-
this._textModel = await this._notebookModelResolverService.resolve(this.resource, this.viewType!, editorId);
203-
this._originalTextModel = await this._notebookModelResolverService.resolve(this.originalResource, this.viewType!, editorId);
202+
this._textModel = await this._notebookModelResolverService.resolve(this.resource, this.viewType!);
203+
this._originalTextModel = await this._notebookModelResolverService.resolve(this.originalResource, this.viewType!);
204204
}
205205

206206
return new NotebookDiffEditorModel(this._originalTextModel!.object as NotebookEditorModel, this._textModel.object as NotebookEditorModel);

src/vs/workbench/contrib/notebook/browser/notebookEditor.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ import { IEditorDropService } from 'vs/workbench/services/editor/browser/editorD
2525
import { IEditorGroup, IEditorGroupsService, GroupsOrder } from 'vs/workbench/services/editor/common/editorGroupsService';
2626
import { IEditorService } from 'vs/workbench/services/editor/common/editorService';
2727
import { NotebookEditorOptions } from 'vs/workbench/contrib/notebook/browser/notebookBrowser';
28+
import { INotebookService } from 'vs/workbench/contrib/notebook/common/notebookService';
2829

2930
const NOTEBOOK_EDITOR_VIEW_STATE_PREFERENCE_KEY = 'NotebookEditorViewState';
3031

@@ -54,6 +55,7 @@ export class NotebookEditor extends EditorPane {
5455
@IEditorGroupsService private readonly _editorGroupService: IEditorGroupsService,
5556
@IEditorDropService private readonly _editorDropService: IEditorDropService,
5657
@INotificationService private readonly _notificationService: INotificationService,
58+
@INotebookService private readonly _notebookService: INotebookService,
5759
@INotebookEditorWidgetService private readonly _notebookWidgetService: INotebookEditorWidgetService,
5860
) {
5961
super(NotebookEditor.ID, telemetryService, themeService, storageService);
@@ -152,7 +154,7 @@ export class NotebookEditor extends EditorPane {
152154
this._widget.value!.layout(this._dimension, this._rootElement);
153155
}
154156

155-
const model = await input.resolve(this._widget.value!.getId());
157+
const model = await input.resolve();
156158
// Check for cancellation
157159
if (token.isCancellationRequested) {
158160
return undefined;
@@ -174,6 +176,8 @@ export class NotebookEditor extends EditorPane {
174176
return;
175177
}
176178

179+
await this._notebookService.resolveNotebookEditor(model.viewType, model.resource, this._widget.value!.getId());
180+
177181
const viewState = this._loadNotebookEditorViewState(input);
178182

179183
await this._widget.value!.setModel(model.notebook, viewState);

src/vs/workbench/contrib/notebook/browser/notebookEditorInput.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -168,13 +168,13 @@ ${patterns}
168168
return;
169169
}
170170

171-
async resolve(editorId?: string): Promise<INotebookEditorModel | null> {
171+
async resolve(): Promise<INotebookEditorModel | null> {
172172
if (!await this._notebookService.canResolve(this.viewType!)) {
173173
return null;
174174
}
175175

176176
if (!this._textModel) {
177-
this._textModel = await this._notebookModelResolverService.resolve(this.resource, this.viewType!, editorId);
177+
this._textModel = await this._notebookModelResolverService.resolve(this.resource, this.viewType!);
178178

179179
this._register(this._textModel.object.onDidChangeDirty(() => {
180180
this._onDidChangeDirty.fire();

src/vs/workbench/contrib/notebook/browser/notebookServiceImpl.ts

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -605,7 +605,7 @@ export class NotebookService extends Disposable implements INotebookService, ICu
605605
return this.notebookRenderersInfoStore.get(id);
606606
}
607607

608-
async resolveNotebook(viewType: string, uri: URI, forceReload: boolean, editorId?: string, backupId?: string): Promise<NotebookTextModel> {
608+
async resolveNotebook(viewType: string, uri: URI, forceReload: boolean, backupId?: string): Promise<NotebookTextModel> {
609609

610610
if (!await this.canResolve(viewType)) {
611611
throw new Error(`CANNOT load notebook, no provider for '${viewType}'`);
@@ -637,10 +637,6 @@ export class NotebookService extends Disposable implements INotebookService, ICu
637637
// after the document is added to the store and sent to ext host, we transform the ouputs
638638
await this.transformTextModelOutputs(notebookModel);
639639

640-
if (editorId) {
641-
await provider.controller.resolveNotebookEditor(viewType, uri, editorId);
642-
}
643-
644640
return modelData.model;
645641
}
646642

@@ -786,6 +782,13 @@ export class NotebookService extends Disposable implements INotebookService, ICu
786782
return ret;
787783
}
788784

785+
async resolveNotebookEditor(viewType: string, uri: URI, editorId: string): Promise<void> {
786+
const entry = this._notebookProviders.get(viewType);
787+
if (entry) {
788+
entry.controller.resolveNotebookEditor(viewType, uri, editorId);
789+
}
790+
}
791+
789792
removeNotebookEditor(editor: INotebookEditor) {
790793
const editorCache = this._notebookEditors.get(editor.getId());
791794

src/vs/workbench/contrib/notebook/common/notebookEditorModel.ts

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,6 @@ export interface INotebookLoadOptions {
2424
* Go to disk bypassing any cache of the model if any.
2525
*/
2626
forceReadFromDisk?: boolean;
27-
28-
editorId?: string;
2927
}
3028

3129

@@ -124,7 +122,7 @@ export class NotebookEditorModel extends EditorModel implements INotebookEditorM
124122

125123
async load(options?: INotebookLoadOptions): Promise<NotebookEditorModel> {
126124
if (options?.forceReadFromDisk) {
127-
return this._loadFromProvider(true, undefined, undefined);
125+
return this._loadFromProvider(true, undefined);
128126
}
129127

130128
if (this.isResolved()) {
@@ -137,11 +135,11 @@ export class NotebookEditorModel extends EditorModel implements INotebookEditorM
137135
return this; // Make sure meanwhile someone else did not succeed in loading
138136
}
139137

140-
return this._loadFromProvider(false, options?.editorId, backup?.meta?.backupId);
138+
return this._loadFromProvider(false, backup?.meta?.backupId);
141139
}
142140

143-
private async _loadFromProvider(forceReloadFromDisk: boolean, editorId: string | undefined, backupId: string | undefined) {
144-
this._notebook = await this._notebookService.resolveNotebook(this.viewType!, this.resource, forceReloadFromDisk, editorId, backupId);
141+
private async _loadFromProvider(forceReloadFromDisk: boolean, backupId: string | undefined) {
142+
this._notebook = await this._notebookService.resolveNotebook(this.viewType!, this.resource, forceReloadFromDisk, backupId);
145143

146144
const newStats = await this._resolveStats(this.resource);
147145
this._lastResolvedFileStat = newStats;

src/vs/workbench/contrib/notebook/common/notebookEditorModelResolverService.ts

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ export const INotebookEditorModelResolverService = createDecorator<INotebookEdit
1616

1717
export interface INotebookEditorModelResolverService {
1818
readonly _serviceBrand: undefined;
19-
resolve(resource: URI, viewType?: string, editorId?: string): Promise<IReference<INotebookEditorModel>>;
19+
resolve(resource: URI, viewType?: string): Promise<IReference<INotebookEditorModel>>;
2020
}
2121

2222

@@ -33,7 +33,7 @@ export class NotebookModelReferenceCollection extends ReferenceCollection<Promis
3333
protected createReferencedObject(key: string, ...args: any[]): Promise<INotebookEditorModel> {
3434
const resource = URI.parse(key);
3535

36-
let [viewType, editorId] = args as [string | undefined, string | undefined];
36+
let [viewType] = args as [string | undefined];
3737
if (!viewType) {
3838
viewType = this._notebookService.getContributedNotebookProviders(resource)[0]?.id;
3939
}
@@ -42,7 +42,7 @@ export class NotebookModelReferenceCollection extends ReferenceCollection<Promis
4242
}
4343

4444
const model = this._instantiationService.createInstance(NotebookEditorModel, resource, viewType);
45-
const promise = model.load({ editorId });
45+
const promise = model.load();
4646
return promise;
4747
}
4848

@@ -68,10 +68,10 @@ export class NotebookModelResolverService implements INotebookEditorModelResolve
6868
this._data = instantiationService.createInstance(NotebookModelReferenceCollection);
6969
}
7070

71-
async resolve(resource: URI, viewType?: string, editorId?: string | undefined): Promise<IReference<INotebookEditorModel>> {
72-
const reference = this._data.acquire(resource.toString(), viewType, editorId);
71+
async resolve(resource: URI, viewType?: string): Promise<IReference<INotebookEditorModel>> {
72+
const reference = this._data.acquire(resource.toString(), viewType);
7373
const model = await reference.object;
74-
NotebookModelResolverService._autoReferenceDirtyModel(model, () => this._data.acquire(resource.toString(), viewType, editorId));
74+
NotebookModelResolverService._autoReferenceDirtyModel(model, () => this._data.acquire(resource.toString(), viewType));
7575
return {
7676
object: model,
7777
dispose() { reference.dispose(); }

src/vs/workbench/contrib/notebook/common/notebookService.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ export interface INotebookService {
5454
getContributedNotebookOutputRenderers(id: string): NotebookOutputRendererInfo | undefined;
5555
getRendererInfo(id: string): INotebookRendererInfo | undefined;
5656

57-
resolveNotebook(viewType: string, uri: URI, forceReload: boolean, editorId?: string, backupId?: string): Promise<NotebookTextModel>;
57+
resolveNotebook(viewType: string, uri: URI, forceReload: boolean, backupId?: string): Promise<NotebookTextModel>;
5858
getNotebookTextModel(uri: URI): NotebookTextModel | undefined;
5959
getNotebookTextModels(): Iterable<NotebookTextModel>;
6060
getContributedNotebookProviders(resource: URI): readonly NotebookProviderInfo[];
@@ -71,6 +71,7 @@ export interface INotebookService {
7171
getToCopy(): { items: NotebookCellTextModel[], isCopy: boolean; } | undefined;
7272

7373
// editor events
74+
resolveNotebookEditor(viewType: string, uri: URI, editorId: string): Promise<void>;
7475
addNotebookEditor(editor: IEditor): void;
7576
removeNotebookEditor(editor: IEditor): void;
7677
getNotebookEditor(editorId: string): IEditor | undefined;

0 commit comments

Comments
 (0)