提交 424d032a 编写于 作者: S Sandeep Somavarapu

Dispose default settings model.

Single instance of default settings model.
上级 6e987a8f
......@@ -160,7 +160,7 @@ export class PreferencesEditor extends BaseTextEditor {
setInput(input: PreferencesEditorInput, options: EditorOptions): TPromise<void> {
this.listenToInput(input);
return super.setInput(input, options)
.then(() => this.createModel(input)
.then(() => this.getOrCreateModel(input)
.then(model => this.setDefaultPreferencesEditorInput(model, input)));
}
......@@ -186,11 +186,15 @@ export class PreferencesEditor extends BaseTextEditor {
}
}
private createModel(input: PreferencesEditorInput): TPromise<editorCommon.IModel> {
private getOrCreateModel(input: PreferencesEditorInput): TPromise<editorCommon.IModel> {
return this.preferencesService.createDefaultPreferencesEditorModel(input.getResource())
.then(preferencesEditorModel => {
let mode = this.modeService.getOrCreateMode('json');
return this.modelService.createModel(preferencesEditorModel.content, mode, preferencesEditorModel.uri);
let model = this.modelService.getModel(input.getResource());
if (!model) {
let mode = this.modeService.getOrCreateMode('json');
model = this.modelService.createModel(preferencesEditorModel.content, mode, preferencesEditorModel.uri);
}
return model;
});
}
......@@ -211,7 +215,7 @@ export class PreferencesEditor extends BaseTextEditor {
}
public clearInput(): void {
this.defaultPreferencesEditor.getModel().dispose();
this.disposeModel();
this.saveState(<PreferencesEditorInput>this.input);
if (this.inputDisposeListener) {
this.inputDisposeListener.dispose();
......@@ -255,6 +259,13 @@ export class PreferencesEditor extends BaseTextEditor {
this.inputDisposeListener = (<PreferencesEditorInput>input).willDispose(() => this.saveState(<PreferencesEditorInput>input));
}
}
private disposeModel() {
const model = this.defaultPreferencesEditor.getModel();
if (model) {
model.dispose();
}
}
}
class DefaultPreferencesEditor extends CodeEditor {
......
......@@ -85,7 +85,6 @@ export class PreferencesService extends Disposable implements IPreferencesServic
if (PreferencesService.DEFAULT_SETTINGS_URI.fsPath === uri.fsPath) {
return this.fetchMostCommonlyUsedSettings()
.then(mostCommonSettings => {
const uri = URI.from({ scheme: PreferencesService.DEFAULT_SETTINGS_URI.scheme, authority: PreferencesService.DEFAULT_SETTINGS_URI.authority, path: PreferencesService.DEFAULT_SETTINGS_URI.path, fragment: '' + this.defaultEditorModels.size });
const model = this.instantiationService.createInstance(DefaultSettingsEditorModel, uri, mostCommonSettings);
this.defaultEditorModels.set(uri, model);
return model;
......@@ -93,7 +92,6 @@ export class PreferencesService extends Disposable implements IPreferencesServic
}
if (PreferencesService.DEFAULT_KEY_BINDINGS_URI.fsPath === uri.fsPath) {
const uri = URI.from({ scheme: PreferencesService.DEFAULT_KEY_BINDINGS_URI.scheme, authority: PreferencesService.DEFAULT_KEY_BINDINGS_URI.authority, path: PreferencesService.DEFAULT_KEY_BINDINGS_URI.path, fragment: '' + this.defaultEditorModels.size });
const model = this.instantiationService.createInstance(DefaultKeybindingsEditorModel, uri);
this.defaultEditorModels.set(uri, model);
return TPromise.wrap(model);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册