Rework how we handle custom editors (#5696)

* update how we handle editors

* small edit

* handle changing languages

* implement generic language association

* implement notebook serializers

* fix tests

* formatting

* update how we handle editors

* small edit

* handle changing languages

* implement generic language association

* implement notebook serializers

* fix tests

* formatting

* fix broken

* fix compile

* fix tests

* add back in removed note book contributions

* fix layering

* fix compile errors

* fix workbench

* fix hanging promises

* idk why these changed

* fix change

* add comments to language change code

* fix a few bugs

* add query plan association
This commit is contained in:
Anthony Dresser
2019-11-24 19:22:11 -08:00
committed by GitHub
parent f3a6fc6f88
commit 43387f0d0b
50 changed files with 988 additions and 873 deletions

View File

@@ -29,6 +29,9 @@ import { Deferred } from 'sql/base/common/promise';
import { NotebookTextFileModel } from 'sql/workbench/contrib/notebook/browser/models/notebookTextFileModel';
import { ITextResourcePropertiesService } from 'vs/editor/common/services/resourceConfiguration';
import { ResourceEditorModel } from 'vs/workbench/common/editor/resourceEditorModel';
import { ResourceEditorInput } from 'vs/workbench/common/editor/resourceEditorInput';
import { FileEditorInput } from 'vs/workbench/contrib/files/common/editors/fileEditorInput';
import { BinaryEditorModel } from 'vs/workbench/common/editor/binaryEditorModel';
export type ModeViewSaveHandler = (handle: number) => Thenable<boolean>;
@@ -195,8 +198,9 @@ export class NotebookEditorModel extends EditorModel {
}
}
export class NotebookInput extends EditorInput {
public static ID: string = 'workbench.editorinputs.notebookInput';
type TextInput = ResourceEditorInput | UntitledEditorInput | FileEditorInput;
export abstract class NotebookInput extends EditorInput {
private _providerId: string;
private _providers: string[];
private _standardKernels: IStandardKernelWithProvider[];
@@ -217,7 +221,7 @@ export class NotebookInput extends EditorInput {
constructor(private _title: string,
private resource: URI,
private _textInput: UntitledEditorInput,
private _textInput: TextInput,
@ITextModelService private textModelService: ITextModelService,
@IInstantiationService private instantiationService: IInstantiationService,
@INotebookService private notebookService: INotebookService,
@@ -233,7 +237,7 @@ export class NotebookInput extends EditorInput {
}
}
public get textInput(): UntitledEditorInput {
public get textInput(): TextInput {
return this._textInput;
}
@@ -319,9 +323,7 @@ export class NotebookInput extends EditorInput {
this._layoutChanged.fire();
}
public getTypeId(): string {
return NotebookInput.ID;
}
public abstract getTypeId(): string;
getResource(): URI {
return this.resource;
@@ -352,7 +354,9 @@ export class NotebookInput extends EditorInput {
textOrUntitledEditorModel = this._untitledEditorModel;
} else {
let resolvedInput = await this._textInput.resolve();
resolvedInput.textEditorModel.onBeforeAttached();
if (!(resolvedInput instanceof BinaryEditorModel)) {
resolvedInput.textEditorModel.onBeforeAttached();
}
textOrUntitledEditorModel = resolvedInput;
}
} else {