提交 dfeef6fb 编写于 作者: S Sandeep Somavarapu

Fix #51668

上级 8b5824e5
...@@ -238,16 +238,19 @@ export class PreferencesService extends Disposable implements IPreferencesServic ...@@ -238,16 +238,19 @@ export class PreferencesService extends Disposable implements IPreferencesServic
configureSettingsForLanguage(language: string): void { configureSettingsForLanguage(language: string): void {
this.openGlobalSettings() this.openGlobalSettings()
.then(editor => { .then(editor => this.createPreferencesEditorModel(this.userSettingsResource)
const codeEditor = getCodeEditor(editor.getControl()); .then((settingsModel: IPreferencesEditorModel<ISetting>) => {
if (codeEditor) { const codeEditor = getCodeEditor(editor.getControl());
this.getPosition(language, codeEditor) if (codeEditor) {
.then(position => { this.getPosition(language, settingsModel, codeEditor)
codeEditor.setPosition(position); .then(position => {
codeEditor.focus(); if (codeEditor) {
}); codeEditor.setPosition(position);
} codeEditor.focus();
}); }
});
}
}));
} }
private openOrSwitchSettings(configurationTarget: ConfigurationTarget, resource: URI, options?: IEditorOptions, group: IEditorGroup = this.editorGroupService.activeGroup): TPromise<IEditor> { private openOrSwitchSettings(configurationTarget: ConfigurationTarget, resource: URI, options?: IEditorOptions, group: IEditorGroup = this.editorGroupService.activeGroup): TPromise<IEditor> {
...@@ -456,39 +459,36 @@ export class PreferencesService extends Disposable implements IPreferencesServic ...@@ -456,39 +459,36 @@ export class PreferencesService extends Disposable implements IPreferencesServic
]; ];
} }
private getPosition(language: string, codeEditor: ICodeEditor): TPromise<IPosition> { private getPosition(language: string, settingsModel: IPreferencesEditorModel<ISetting>, codeEditor: ICodeEditor): TPromise<IPosition> {
return this.createPreferencesEditorModel(this.userSettingsResource) const languageKey = `[${language}]`;
.then((settingsModel: IPreferencesEditorModel<ISetting>) => { let setting = settingsModel.getPreference(languageKey);
const languageKey = `[${language}]`; const model = codeEditor.getModel();
let setting = settingsModel.getPreference(languageKey); const configuration = this.configurationService.getValue<{ editor: { tabSize: number; insertSpaces: boolean }, files: { eol: string } }>();
const model = codeEditor.getModel(); const eol = configuration.files && configuration.files.eol;
const configuration = this.configurationService.getValue<{ editor: { tabSize: number; insertSpaces: boolean }, files: { eol: string } }>(); if (setting) {
const eol = configuration.files && configuration.files.eol; if (setting.overrides.length) {
if (setting) { const lastSetting = setting.overrides[setting.overrides.length - 1];
if (setting.overrides.length) { let content;
const lastSetting = setting.overrides[setting.overrides.length - 1]; if (lastSetting.valueRange.endLineNumber === setting.range.endLineNumber) {
let content; content = ',' + eol + this.spaces(2, configuration.editor) + eol + this.spaces(1, configuration.editor);
if (lastSetting.valueRange.endLineNumber === setting.range.endLineNumber) { } else {
content = ',' + eol + this.spaces(2, configuration.editor) + eol + this.spaces(1, configuration.editor); content = ',' + eol + this.spaces(2, 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 };
} }
return this.configurationService.updateValue(languageKey, {}, ConfigurationTarget.USER) const editOperation = EditOperation.insert(new Position(lastSetting.valueRange.endLineNumber, lastSetting.valueRange.endColumn), content);
.then(() => { model.pushEditOperations([], [editOperation], () => []);
setting = settingsModel.getPreference(languageKey); return TPromise.as({ lineNumber: lastSetting.valueRange.endLineNumber + 1, column: model.getLineMaxColumn(lastSetting.valueRange.endLineNumber + 1) });
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); return TPromise.as({ lineNumber: setting.valueRange.startLineNumber, column: setting.valueRange.startColumn + 1 });
model.pushEditOperations([], [editOperation], () => []); }
let lineNumber = setting.valueRange.endLineNumber + 1; return this.configurationService.updateValue(languageKey, {}, ConfigurationTarget.USER)
settingsModel.dispose(); .then(() => {
return { lineNumber, column: model.getLineMaxColumn(lineNumber) }; 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) };
}); });
} }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册