Skip to content

Commit

Permalink
Enable hot exit for saved files (#469)
Browse files Browse the repository at this point in the history
  • Loading branch information
MattIrv authored Jan 11, 2018
1 parent 7cf0847 commit 6d3995a
Show file tree
Hide file tree
Showing 6 changed files with 29 additions and 26 deletions.
3 changes: 1 addition & 2 deletions src/sql/parts/dashboard/dashboardInput.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@

import { TPromise } from 'vs/base/common/winjs.base';
import { EditorInput, EditorModel } from 'vs/workbench/common/editor';
import { UntitledEditorInput } from 'vs/workbench/common/editor/untitledEditorInput';
import { IDisposable } from 'vs/base/common/lifecycle';
import URI from 'vs/base/common/uri';
import { IModelService } from 'vs/editor/common/services/modelService';
Expand Down Expand Up @@ -70,7 +69,7 @@ export class DashboardInput extends EditorInput {
}

public getTypeId(): string {
return UntitledEditorInput.ID;
return DashboardInput.ID;
}

public getResource(): URI {
Expand Down
2 changes: 1 addition & 1 deletion src/sql/parts/query/common/queryInput.ts
Original file line number Diff line number Diff line change
Expand Up @@ -116,7 +116,7 @@ export class QueryInput extends EditorInput implements IEncodingSupport, IConnec
public getQueryResultsInputResource(): string { return this._results.uri; }
public showQueryResultsEditor(): void { this._showQueryResultsEditor.fire(); }
public updateSelection(selection: ISelectionData): void { this._updateSelection.fire(selection); }
public getTypeId(): string { return UntitledEditorInput.ID; }
public getTypeId(): string { return QueryInput.ID; }
public getDescription(): string { return this._description; }
public supportsSplitEditor(): boolean { return false; }
public getModeId(): string { return QueryInput.SCHEMA; }
Expand Down
18 changes: 3 additions & 15 deletions src/vs/workbench/browser/parts/editor/editor.contribution.ts
Original file line number Diff line number Diff line change
Expand Up @@ -42,10 +42,6 @@ import { ContextKeyExpr } from 'vs/platform/contextkey/common/contextkey';
import { isMacintosh } from 'vs/base/common/platform';
import { GroupOnePicker, GroupTwoPicker, GroupThreePicker, AllEditorsPicker } from 'vs/workbench/browser/parts/editor/editorPicker';

// {{SQL CARBON EDIT}}
import { QueryResultsInput } from 'sql/parts/query/common/queryResultsInput';
import { QueryInput } from 'sql/parts/query/common/queryInput';

// Register String Editor
Registry.as<IEditorRegistry>(EditorExtensions.Editors).registerEditor(
new EditorDescriptor(
Expand Down Expand Up @@ -136,23 +132,15 @@ class UntitledEditorInputFactory implements IEditorInputFactory {
return JSON.stringify(serialized);
}

// {{SQL CARBON EDIT}}
public deserialize(instantiationService: IInstantiationService, serializedEditorInput: string): EditorInput {
return instantiationService.invokeFunction<EditorInput>(accessor => {
public deserialize(instantiationService: IInstantiationService, serializedEditorInput: string): UntitledEditorInput {
return instantiationService.invokeFunction<UntitledEditorInput>(accessor => {
const deserialized: ISerializedUntitledEditorInput = JSON.parse(serializedEditorInput);
const resource = !!deserialized.resourceJSON ? URI.revive(deserialized.resourceJSON) : URI.parse(deserialized.resource);
const filePath = resource.scheme === 'file' ? resource.fsPath : void 0;
const language = deserialized.modeId;
const encoding = deserialized.encoding;

// {{SQL CARBON EDIT}}
let input = accessor.get(IWorkbenchEditorService).createInput({ resource, filePath, language, encoding }) as UntitledEditorInput;
if (deserialized.modeId === QueryInput.SCHEMA) {
const queryResultsInput: QueryResultsInput = instantiationService.createInstance(QueryResultsInput, resource.toString());
return instantiationService.createInstance(QueryInput, input.getName(), '', input, queryResultsInput, undefined);
} else {
return input;
}
return accessor.get(IWorkbenchEditorService).createInput({ resource, filePath, language, encoding }) as UntitledEditorInput;
});
}
}
Expand Down
25 changes: 22 additions & 3 deletions src/vs/workbench/common/editor/editorStacksModel.ts
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,10 @@ import { Registry } from 'vs/platform/registry/common/platform';
import { Position, Direction } from 'vs/platform/editor/common/editor';
import { ResourceMap } from 'vs/base/common/map';

// {{SQL CARBON EDIT}}
import { QueryInput } from 'sql/parts/query/common/queryInput';
import * as CustomInputConverter from 'sql/parts/common/customInputConverter';

export interface EditorCloseEvent extends IEditorCloseEvent {
editor: EditorInput;
}
Expand Down Expand Up @@ -643,7 +647,14 @@ export class EditorGroup implements IEditorGroup {
let serializableEditors: EditorInput[] = [];
let serializedEditors: ISerializedEditorInput[] = [];
let serializablePreviewIndex: number;
this.editors.forEach(e => {
// {{SQL CARBON EDIT}}
let editors = this.editors.map(e => {
if (e instanceof QueryInput) {
return e.sql;
}
return e;
});
editors.forEach(e => {
let factory = registry.getEditorInputFactory(e.getTypeId());
if (factory) {
let value = factory.serialize(e);
Expand All @@ -658,7 +669,14 @@ export class EditorGroup implements IEditorGroup {
}
});

const serializableMru = this.mru.map(e => this.indexOf(e, serializableEditors)).filter(i => i >= 0);
// {{SQL CARBON EDIT}}
let mru = this.mru.map(e => {
if (e instanceof QueryInput) {
return e.sql;
}
return e;
});
const serializableMru = mru.map(e => this.indexOf(e, serializableEditors)).filter(i => i >= 0);

return {
label: this.label,
Expand All @@ -680,7 +698,8 @@ export class EditorGroup implements IEditorGroup {
this.hookEditorListeners(editor);
this.updateResourceMap(editor, false /* add */);

return editor;
// {{SQL CARBON EDIT}}
return CustomInputConverter.convertEditorInput(editor, undefined, this.instantiationService);
}

return null;
Expand Down
2 changes: 1 addition & 1 deletion src/vs/workbench/parts/files/browser/files.contribution.ts
Original file line number Diff line number Diff line change
Expand Up @@ -267,7 +267,7 @@ configurationRegistry.registerConfiguration({
'files.hotExit': {
'type': 'string',
'enum': [HotExitConfiguration.OFF, HotExitConfiguration.ON_EXIT, HotExitConfiguration.ON_EXIT_AND_WINDOW_CLOSE],
'default': HotExitConfiguration.ON_EXIT,
'default': HotExitConfiguration.OFF,
'enumDescriptions': [
nls.localize('hotExit.off', 'Disable hot exit.'),
nls.localize('hotExit.onExit', 'Hot exit will be triggered when the application is closed, that is when the last window is closed on Windows/Linux or when the workbench.action.quit command is triggered (command palette, keybinding, menu). All windows with backups will be restored upon next launch.'),
Expand Down
5 changes: 1 addition & 4 deletions src/vs/workbench/services/textfile/common/textFileService.ts
Original file line number Diff line number Diff line change
Expand Up @@ -366,10 +366,7 @@ export abstract class TextFileService implements ITextFileService {
}

// Hot exit
// {{SQL CARBON EDIT}}

// const hotExitMode = configuration && configuration.files ? configuration.files.hotExit : HotExitConfiguration.ON_EXIT;
const hotExitMode = HotExitConfiguration.OFF;
const hotExitMode = configuration && configuration.files ? configuration.files.hotExit : HotExitConfiguration.ON_EXIT;
if (hotExitMode === HotExitConfiguration.OFF || hotExitMode === HotExitConfiguration.ON_EXIT_AND_WINDOW_CLOSE) {
this.configuredHotExit = hotExitMode;
} else {
Expand Down

0 comments on commit 6d3995a

Please sign in to comment.