142
143
compare(other: Configuration): IConfigurationChange {
144
>
const compare = (fromKeys: string[], toKeys: string[], overrideIdentifier?: string): string[] => {
configurationModels.ts
145
>
const keys: string[] = [];
146
>
keys.push(...toKeys.filter(key => fromKeys.indexOf(key) === -1));
147
>
keys.push(...fromKeys.filter(key => toKeys.indexOf(key) === -1));
148
>
keys.push(...fromKeys.filter(key => {
149
>
// Ignore if the key does not exist in both models
150
>
if (toKeys.indexOf(key) === -1) {
151
return false;
152
}
154
>
if (!equals(this.getValue(key, { overrideIdentifier }), other.getValue(key, { overrideIdentifier }))) {
155
return true;
156
}
158
>
return this._workspace && this._workspace.folders.some(folder => !equals(this.getValue(key, { resource: folder.uri, overrideIdentifier }), other.getValue(key, { resource: folder.uri, overrideIdentifier })));
159
>
}));
160
>
return keys;
161
>
};
162
>
const keys = compare(this.allKeys(), other.allKeys());
163
>
const overrides: [string, string[]][] = [];
164
>
const allOverrideIdentifiers = distinct([...this.allOverrideIdentifiers(), ...other.allOverrideIdentifiers()]);
165
>
for (const overrideIdentifier of allOverrideIdentifiers) {
166
>
const keys = compare(this.getAllKeysForOverrideIdentifier(overrideIdentifier), other.getAllKeysForOverrideIdentifier(overrideIdentifier), overrideIdentifier);
167
>
if (keys.length) {
168
overrides.push([overrideIdentifier, keys]);
169
}
171
>
return { keys, overrides };
172
>
}
173
174
}