From dfeef6fb3c756ea43e756a32f59dad29a8765e57 Mon Sep 17 00:00:00 2001 From: Sandeep Somavarapu Date: Wed, 13 Jun 2018 10:40:26 +0200 Subject: [PATCH] Fix #51668 --- .../preferences/browser/preferencesService.ts | 84 +++++++++---------- 1 file changed, 42 insertions(+), 42 deletions(-) diff --git a/src/vs/workbench/services/preferences/browser/preferencesService.ts b/src/vs/workbench/services/preferences/browser/preferencesService.ts index cae7a459e36..f963de4c85d 100644 --- a/src/vs/workbench/services/preferences/browser/preferencesService.ts +++ b/src/vs/workbench/services/preferences/browser/preferencesService.ts @@ -238,16 +238,19 @@ export class PreferencesService extends Disposable implements IPreferencesServic configureSettingsForLanguage(language: string): void { this.openGlobalSettings() - .then(editor => { - const codeEditor = getCodeEditor(editor.getControl()); - if (codeEditor) { - this.getPosition(language, codeEditor) - .then(position => { - codeEditor.setPosition(position); - codeEditor.focus(); - }); - } - }); + .then(editor => this.createPreferencesEditorModel(this.userSettingsResource) + .then((settingsModel: IPreferencesEditorModel) => { + const codeEditor = getCodeEditor(editor.getControl()); + if (codeEditor) { + this.getPosition(language, settingsModel, codeEditor) + .then(position => { + if (codeEditor) { + codeEditor.setPosition(position); + codeEditor.focus(); + } + }); + } + })); } private openOrSwitchSettings(configurationTarget: ConfigurationTarget, resource: URI, options?: IEditorOptions, group: IEditorGroup = this.editorGroupService.activeGroup): TPromise { @@ -456,39 +459,36 @@ export class PreferencesService extends Disposable implements IPreferencesServic ]; } - private getPosition(language: string, codeEditor: ICodeEditor): TPromise { - return this.createPreferencesEditorModel(this.userSettingsResource) - .then((settingsModel: IPreferencesEditorModel) => { - const languageKey = `[${language}]`; - let setting = settingsModel.getPreference(languageKey); - const model = codeEditor.getModel(); - const configuration = this.configurationService.getValue<{ editor: { tabSize: number; insertSpaces: boolean }, files: { eol: string } }>(); - const eol = configuration.files && configuration.files.eol; - if (setting) { - if (setting.overrides.length) { - const lastSetting = setting.overrides[setting.overrides.length - 1]; - let content; - if (lastSetting.valueRange.endLineNumber === setting.range.endLineNumber) { - content = ',' + eol + this.spaces(2, configuration.editor) + eol + this.spaces(1, configuration.editor); - } else { - content = ',' + eol + this.spaces(2, configuration.editor); - } - const editOperation = EditOperation.insert(new Position(lastSetting.valueRange.endLineNumber, lastSetting.valueRange.endColumn), content); - model.pushEditOperations([], [editOperation], () => []); - return { lineNumber: lastSetting.valueRange.endLineNumber + 1, column: model.getLineMaxColumn(lastSetting.valueRange.endLineNumber + 1) }; - } - return { lineNumber: setting.valueRange.startLineNumber, column: setting.valueRange.startColumn + 1 }; + private getPosition(language: string, settingsModel: IPreferencesEditorModel, codeEditor: ICodeEditor): TPromise { + const languageKey = `[${language}]`; + let setting = settingsModel.getPreference(languageKey); + const model = codeEditor.getModel(); + const configuration = this.configurationService.getValue<{ editor: { tabSize: number; insertSpaces: boolean }, files: { eol: string } }>(); + const eol = configuration.files && configuration.files.eol; + if (setting) { + if (setting.overrides.length) { + const lastSetting = setting.overrides[setting.overrides.length - 1]; + let content; + if (lastSetting.valueRange.endLineNumber === setting.range.endLineNumber) { + content = ',' + eol + this.spaces(2, configuration.editor) + eol + this.spaces(1, configuration.editor); + } else { + content = ',' + eol + this.spaces(2, configuration.editor); } - return this.configurationService.updateValue(languageKey, {}, ConfigurationTarget.USER) - .then(() => { - setting = settingsModel.getPreference(languageKey); - let content = eol + this.spaces(2, configuration.editor) + eol + this.spaces(1, configuration.editor); - let editOperation = EditOperation.insert(new Position(setting.valueRange.endLineNumber, setting.valueRange.endColumn - 1), content); - model.pushEditOperations([], [editOperation], () => []); - let lineNumber = setting.valueRange.endLineNumber + 1; - settingsModel.dispose(); - return { lineNumber, column: model.getLineMaxColumn(lineNumber) }; - }); + const editOperation = EditOperation.insert(new Position(lastSetting.valueRange.endLineNumber, lastSetting.valueRange.endColumn), content); + model.pushEditOperations([], [editOperation], () => []); + return TPromise.as({ lineNumber: lastSetting.valueRange.endLineNumber + 1, column: model.getLineMaxColumn(lastSetting.valueRange.endLineNumber + 1) }); + } + return TPromise.as({ lineNumber: setting.valueRange.startLineNumber, column: setting.valueRange.startColumn + 1 }); + } + return this.configurationService.updateValue(languageKey, {}, ConfigurationTarget.USER) + .then(() => { + setting = settingsModel.getPreference(languageKey); + let content = eol + this.spaces(2, configuration.editor) + eol + this.spaces(1, configuration.editor); + let editOperation = EditOperation.insert(new Position(setting.valueRange.endLineNumber, setting.valueRange.endColumn - 1), content); + model.pushEditOperations([], [editOperation], () => []); + let lineNumber = setting.valueRange.endLineNumber + 1; + settingsModel.dispose(); + return { lineNumber, column: model.getLineMaxColumn(lineNumber) }; }); } -- GitLab