Skip to content

Commit

Permalink
Split keys into seperate languages
Browse files Browse the repository at this point in the history
  • Loading branch information
CEbbinghaus committed Oct 19, 2021
1 parent 92cb2ae commit 423f89b
Show file tree
Hide file tree
Showing 5 changed files with 42 additions and 23 deletions.
15 changes: 11 additions & 4 deletions src/vs/platform/configuration/common/configuration.ts
Original file line number Diff line number Diff line change
Expand Up @@ -189,15 +189,19 @@ export function compare(from: IConfigurationModel | undefined, to: IConfiguratio
for (const key of added) {
const override = toOverridesByIdentifier[key];
if (override) {
overrides.push([overrideIdentifierFromKey(key), override.keys]);
for (let identifier of overrideIdentifierFromKey(key)) {
overrides.push([identifier, override.keys]);
}
}
}
}
if (Object.keys(fromOverridesByIdentifier).length) {
for (const key of removed) {
const override = fromOverridesByIdentifier[key];
if (override) {
overrides.push([overrideIdentifierFromKey(key), override.keys]);
for (let identifier of overrideIdentifierFromKey(key)) {
overrides.push([identifier, override.keys]);
}
}
}
}
Expand All @@ -208,7 +212,10 @@ export function compare(from: IConfigurationModel | undefined, to: IConfiguratio
const toOverride = toOverridesByIdentifier[key];
if (fromOverride && toOverride) {
const result = compare({ contents: fromOverride.contents, keys: fromOverride.keys, overrides: [] }, { contents: toOverride.contents, keys: toOverride.keys, overrides: [] });
overrides.push([overrideIdentifierFromKey(key), [...result.added, ...result.removed, ...result.updated]]);

for (let identifier of overrideIdentifierFromKey(key)) {
overrides.push([identifier, [...result.added, ...result.removed, ...result.updated]]);
}
}
}
}
Expand All @@ -225,7 +232,7 @@ export function toOverrides(raw: any, conflictReporter: (message: string) => voi
overrideRaw[keyInOverrideRaw] = raw[key][keyInOverrideRaw];
}
overrides.push({
identifiers: [overrideIdentifierFromKey(key).trim()],
identifiers: overrideIdentifierFromKey(key),
keys: Object.keys(overrideRaw),
contents: toValuesTree(overrideRaw, conflictReporter)
});
Expand Down
29 changes: 18 additions & 11 deletions src/vs/platform/configuration/common/configurationModels.ts
Original file line number Diff line number Diff line change
Expand Up @@ -214,7 +214,7 @@ export class DefaultConfigurationModel extends ConfigurationModel {
for (const key of Object.keys(contents)) {
if (OVERRIDE_PROPERTY_PATTERN.test(key)) {
overrides.push({
identifiers: [overrideIdentifierFromKey(key).trim()],
identifiers: overrideIdentifierFromKey(key),
keys: Object.keys(contents[key]),
contents: toValuesTree(contents[key], message => console.error(`Conflict in default settings file: ${message}`)),
});
Expand Down Expand Up @@ -543,19 +543,26 @@ export class Configuration {
}

compareAndUpdateDefaultConfiguration(defaults: ConfigurationModel, keys: string[]): IConfigurationChange {

const overrides: [string, string[]][] = keys
.filter(key => OVERRIDE_PROPERTY_PATTERN.test(key))
.map(key => {
const overrideIdentifier = overrideIdentifierFromKey(key);
const fromKeys = this._defaultConfiguration.getKeysForOverrideIdentifier(overrideIdentifier);
const toKeys = defaults.getKeysForOverrideIdentifier(overrideIdentifier);
const keys = [
...toKeys.filter(key => fromKeys.indexOf(key) === -1),
...fromKeys.filter(key => toKeys.indexOf(key) === -1),
...fromKeys.filter(key => !objects.equals(this._defaultConfiguration.override(overrideIdentifier).getValue(key), defaults.override(overrideIdentifier).getValue(key)))
];
return [overrideIdentifier, keys];
});
const result: [string, string[]][] = [];
const overrideIdentifiers = overrideIdentifierFromKey(key);

for (let overrideIdentifier of overrideIdentifiers) {
const fromKeys = this._defaultConfiguration.getKeysForOverrideIdentifier(overrideIdentifier);
const toKeys = defaults.getKeysForOverrideIdentifier(overrideIdentifier);
const keys = [
...toKeys.filter(key => fromKeys.indexOf(key) === -1),
...fromKeys.filter(key => toKeys.indexOf(key) === -1),
...fromKeys.filter(key => !objects.equals(this._defaultConfiguration.override(overrideIdentifier).getValue(key), defaults.override(overrideIdentifier).getValue(key)))
];
result.push([overrideIdentifier, keys]);
}
return result;
}).flat();

this.updateDefaultConfiguration(defaults);
return { keys, overrides };
}
Expand Down
6 changes: 3 additions & 3 deletions src/vs/platform/configuration/common/configurationRegistry.ts
Original file line number Diff line number Diff line change
Expand Up @@ -259,7 +259,7 @@ class ConfigurationRegistry implements IConfigurationRegistry {
description: nls.localize('defaultLanguageConfiguration.description', "Configure settings to be overridden for {0} language.", key),
$ref: resourceLanguageSettingsSchemaId
};
overrideIdentifiers.push(overrideIdentifierFromKey(key));
overrideIdentifiers.push.apply(overrideIdentifiers, overrideIdentifierFromKey(key));
this.configurationProperties[key] = property;
this.defaultLanguageConfigurationOverridesNode.properties![key] = property;
} else {
Expand Down Expand Up @@ -508,8 +508,8 @@ class ConfigurationRegistry implements IConfigurationRegistry {
const OVERRIDE_PROPERTY = '\\[.*\\]$';
export const OVERRIDE_PROPERTY_PATTERN = new RegExp(OVERRIDE_PROPERTY);

export function overrideIdentifierFromKey(key: string): string {
return key.substring(1, key.length - 1);
export function overrideIdentifierFromKey(key: string): string[] {
return key.replace(/\[|\]|\s/g, '').split(',');
}

export function getDefaultValue(type: string | string[] | undefined): any {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -76,10 +76,12 @@ export class UserSettingsRenderer extends Disposable implements IPreferencesRend
}

updatePreference(key: string, value: any, source: IIndexedSetting): void {
const overrideIdentifier = source.overrideOf ? overrideIdentifierFromKey(source.overrideOf.key) : null;
const overrideIdentifiers = source.overrideOf ? overrideIdentifierFromKey(source.overrideOf.key) : [];
const resource = this.preferencesModel.uri;
this.configurationService.updateValue(key, value, { overrideIdentifier, resource }, this.preferencesModel.configurationTarget)
.then(() => this.onSettingUpdated(source));

for (let overrideIdentifier of overrideIdentifiers)
this.configurationService.updateValue(key, value, { overrideIdentifier, resource }, this.preferencesModel.configurationTarget)
.then(() => this.onSettingUpdated(source));
}

private onModelChanged(): void {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -156,8 +156,11 @@ export class Configuration extends BaseConfiguration {
const overrides: [string, string[]][] = [];
for (const key of keys) {
if (OVERRIDE_PROPERTY_PATTERN.test(key)) {
const overrideIdentifier = overrideIdentifierFromKey(key);
overrides.push([overrideIdentifier, compare(this.getAllKeysForOverrideIdentifier(overrideIdentifier), other.getAllKeysForOverrideIdentifier(overrideIdentifier), overrideIdentifier)]);
const overrideIdentifiesr = overrideIdentifierFromKey(key);

for (let overrideIdentifier of overrideIdentifiesr) {
overrides.push([overrideIdentifier, compare(this.getAllKeysForOverrideIdentifier(overrideIdentifier), other.getAllKeysForOverrideIdentifier(overrideIdentifier), overrideIdentifier)]);
}
}
}
return { keys, overrides };
Expand Down

0 comments on commit 423f89b

Please sign in to comment.