Avoid group conflicts by title between extensions/core

Fix #104442
This commit is contained in:
Rob Lourens 2020-08-19 11:36:26 -07:00
parent 24b55a196a
commit 67243326c1
3 changed files with 6 additions and 6 deletions

View file

@ -943,7 +943,7 @@ export class SettingsEditor2 extends BaseEditor {
}
const groups = this.defaultSettingsEditorModel.settingsGroups.slice(1); // Without commonlyUsed
const dividedGroups = collections.groupBy(groups, g => g.contributedByExtension ? 'extension' : 'core');
const dividedGroups = collections.groupBy(groups, g => g.extensionInfo ? 'extension' : 'core');
const settingsResult = resolveSettingsTree(tocData, dividedGroups.core);
const resolvedSettingsRoot = settingsResult.tree;

View file

@ -40,7 +40,7 @@ export interface ISettingsGroup {
title: string;
titleRange: IRange;
sections: ISettingsSection[];
contributedByExtension: boolean;
extensionInfo?: IConfigurationExtensionInfo;
}
export interface ISettingsSection {

View file

@ -197,7 +197,7 @@ export class SettingsEditorModel extends AbstractSettingsModel implements ISetti
}],
title: modelGroup.title,
titleRange: modelGroup.titleRange,
contributedByExtension: !!modelGroup.contributedByExtension
extensionInfo: modelGroup.extensionInfo
};
}
@ -564,9 +564,9 @@ export class DefaultSettings extends Disposable {
}
if (title) {
if (!settingsGroup) {
settingsGroup = result.find(g => g.title === title && g.contributedByExtension);
settingsGroup = result.find(g => g.title === title && g.extensionInfo?.id === config.extensionInfo?.id);
if (!settingsGroup) {
settingsGroup = { sections: [{ settings: [] }], id: config.id || '', title: title || '', titleRange: nullRange, range: nullRange, contributedByExtension: !!config.extensionInfo };
settingsGroup = { sections: [{ settings: [] }], id: config.id || '', title: title || '', titleRange: nullRange, range: nullRange, extensionInfo: config.extensionInfo };
result.push(settingsGroup);
}
} else {
@ -575,7 +575,7 @@ export class DefaultSettings extends Disposable {
}
if (config.properties) {
if (!settingsGroup) {
settingsGroup = { sections: [{ settings: [] }], id: config.id || '', title: config.id || '', titleRange: nullRange, range: nullRange, contributedByExtension: !!config.extensionInfo };
settingsGroup = { sections: [{ settings: [] }], id: config.id || '', title: config.id || '', titleRange: nullRange, range: nullRange, extensionInfo: config.extensionInfo };
result.push(settingsGroup);
}
const configurationSettings: ISetting[] = [];