提交 d69d21c6 编写于 作者: B Benjamin Pasero

first cut of preventing untitled from reopening when hot exit is turned off (for #17080)

上级 a9b517fb
......@@ -22,6 +22,7 @@ import { ResourceEditorInput } from 'vs/workbench/common/editor/resourceEditorIn
import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation';
import { KeybindingsRegistry } from 'vs/platform/keybinding/common/keybindingsRegistry';
import { TextDiffEditor } from 'vs/workbench/browser/parts/editor/textDiffEditor';
import { ITextFileService } from 'vs/workbench/services/textfile/common/textfiles';
import { IWorkbenchEditorService } from 'vs/workbench/services/editor/common/editorService';
import { BinaryResourceDiffEditor } from 'vs/workbench/browser/parts/editor/binaryDiffEditor';
import { IEditorGroupService } from 'vs/workbench/services/group/common/groupService';
......@@ -97,16 +98,20 @@ interface ISerializedUntitledEditorInput {
resource: string;
}
let untitledEditorServiceAccessor: UntitledEditorServiceAccessor;
class UntitledEditorServiceAccessor {
constructor( @IUntitledEditorService public untitledEditorService: IUntitledEditorService) {
}
}
// Register Editor Input Factory
class UntitledEditorInputFactory implements IEditorInputFactory {
constructor(
@IUntitledEditorService private untitledEditorService: IUntitledEditorService,
@ITextFileService private textFileService: ITextFileService
) {
}
public serialize(editorInput: EditorInput): string {
if (!this.textFileService.isHotExitEnabled) {
return null; // never restore untitled unless hot exit is enabled
}
const untitledEditorInput = <UntitledEditorInput>editorInput;
let resource = untitledEditorInput.getResource();
......@@ -122,11 +127,7 @@ class UntitledEditorInputFactory implements IEditorInputFactory {
public deserialize(instantiationService: IInstantiationService, serializedEditorInput: string): EditorInput {
const deserialized: ISerializedUntitledEditorInput = JSON.parse(serializedEditorInput);
if (!untitledEditorServiceAccessor) {
untitledEditorServiceAccessor = instantiationService.createInstance(UntitledEditorServiceAccessor);
}
return untitledEditorServiceAccessor.untitledEditorService.createOrGet(URI.parse(deserialized.resource));
return this.untitledEditorService.createOrGet(URI.parse(deserialized.resource));
}
}
......
......@@ -141,7 +141,7 @@ export abstract class TextFileService implements ITextFileService {
if (dirty.length) {
// If hot exit is enabled, backup dirty files and allow to exit without confirmation
if (this.configuredHotExit) {
if (this.isHotExitEnabled) {
this.showHotExitMessage();
return this.backupBeforeShutdown(dirty, this.models, reason).then(result => {
......@@ -671,6 +671,10 @@ export abstract class TextFileService implements ITextFileService {
};
}
public get isHotExitEnabled(): boolean {
return !this.environmentService.isExtensionDevelopment && this.configuredHotExit;
}
public dispose(): void {
this.toUnbind = dispose(this.toUnbind);
......
......@@ -339,4 +339,9 @@ export interface ITextFileService extends IDisposable {
* Convinient fast access to the raw configured auto save settings.
*/
getAutoSaveConfiguration(): IAutoSaveConfiguration;
/**
* Convinient fast access to the hot exit file setting.
*/
isHotExitEnabled: boolean;
}
\ No newline at end of file
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册