Skip to content

Commit 2cbd162

Browse files
committed
remove inspectValue and use inspect
Add override information to inspect
1 parent 6bd03bf commit 2cbd162

27 files changed

Lines changed: 271 additions & 423 deletions

File tree

src/vs/editor/common/services/resourceConfigurationImpl.ts

Lines changed: 49 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ import { IPosition, Position } from 'vs/editor/common/core/position';
1010
import { IModeService } from 'vs/editor/common/services/modeService';
1111
import { IModelService } from 'vs/editor/common/services/modelService';
1212
import { ITextResourceConfigurationService } from 'vs/editor/common/services/resourceConfiguration';
13-
import { IConfigurationChangeEvent, IConfigurationService, ConfigurationTarget, IConfigurationTargetValue } from 'vs/platform/configuration/common/configuration';
13+
import { IConfigurationChangeEvent, IConfigurationService, ConfigurationTarget, IConfigurationValue } from 'vs/platform/configuration/common/configuration';
1414

1515
export class TextResourceConfigurationService extends Disposable implements ITextResourceConfigurationService {
1616

@@ -37,61 +37,65 @@ export class TextResourceConfigurationService extends Disposable implements ITex
3737
return this._getValue(resource, null, typeof arg2 === 'string' ? arg2 : undefined);
3838
}
3939

40-
updateValue<T>(resource: URI, key: string, value: any, configurationTarget?: ConfigurationTarget): Promise<void> {
40+
updateValue(resource: URI, key: string, value: any, configurationTarget?: ConfigurationTarget): Promise<void> {
4141
const language = this.getLanguage(resource, null);
42-
43-
if (!language) {
44-
if (configurationTarget !== undefined) {
45-
return this.configurationService.updateValue(key, value, configurationTarget);
46-
}
47-
return this.configurationService.updateValue(key, value);
42+
const configurationValue = this.configurationService.inspect(key, { resource, overrideIdentifier: language });
43+
if (configurationTarget === undefined) {
44+
configurationTarget = this.deriveConfigurationTarget(configurationValue, language);
4845
}
46+
switch (configurationTarget) {
47+
case ConfigurationTarget.MEMORY:
48+
return this._updateValue(key, value, configurationTarget, configurationValue.memory?.override, resource, language);
49+
case ConfigurationTarget.WORKSPACE_FOLDER:
50+
return this._updateValue(key, value, configurationTarget, configurationValue.workspaceFolder?.override, resource, language);
51+
case ConfigurationTarget.WORKSPACE:
52+
return this._updateValue(key, value, configurationTarget, configurationValue.workspace?.override, resource, language);
53+
case ConfigurationTarget.USER_REMOTE:
54+
return this._updateValue(key, value, configurationTarget, configurationValue.userRemote?.override, resource, language);
55+
default:
56+
return this._updateValue(key, value, configurationTarget, configurationValue.userLocal?.override, resource, language);
57+
}
58+
}
4959

50-
const configurationValue = this.configurationService.inspectValue(key);
51-
52-
if (configurationTarget !== undefined) {
53-
switch (configurationTarget) {
54-
case ConfigurationTarget.MEMORY:
55-
return this.configurationService.updateValue(key, value, configurationTarget);
56-
case ConfigurationTarget.WORKSPACE_FOLDER:
57-
return this._updateValue(key, value, configurationTarget, configurationValue.getWorkspaceFolderValue(resource), resource, language);
58-
case ConfigurationTarget.WORKSPACE:
59-
return this._updateValue(key, value, configurationTarget, configurationValue.workspace, resource, language);
60-
case ConfigurationTarget.USER_REMOTE:
61-
return this._updateValue(key, value, configurationTarget, configurationValue.userRemote, resource, language);
62-
case ConfigurationTarget.USER_LOCAL:
63-
case ConfigurationTarget.USER:
64-
return this._updateValue(key, value, configurationTarget, configurationValue.userLocal, resource, language);
65-
}
60+
private _updateValue(key: string, value: any, configurationTarget: ConfigurationTarget, overriddenValue: any | undefined, resource: URI, language: string | null): Promise<void> {
61+
if (language && overriddenValue !== undefined) {
62+
return this.configurationService.updateValue(key, value, { resource, overrideIdentifier: language }, configurationTarget);
63+
} else {
64+
return this.configurationService.updateValue(key, value, { resource }, configurationTarget);
6665
}
66+
}
6767

68-
if (configurationValue.workspaceFolders) {
69-
const workspaceFolderValue = configurationValue.getWorkspaceFolderValue(resource);
70-
if (workspaceFolderValue) {
71-
return this._updateValue(key, value, ConfigurationTarget.WORKSPACE_FOLDER, workspaceFolderValue, resource, language);
68+
private deriveConfigurationTarget(configurationValue: IConfigurationValue<any>, language: string | null): ConfigurationTarget {
69+
if (language) {
70+
if (configurationValue.memory?.override !== undefined) {
71+
return ConfigurationTarget.MEMORY;
72+
}
73+
if (configurationValue.workspaceFolder?.override !== undefined) {
74+
return ConfigurationTarget.WORKSPACE_FOLDER;
75+
}
76+
if (configurationValue.workspace?.override !== undefined) {
77+
return ConfigurationTarget.WORKSPACE;
78+
}
79+
if (configurationValue.userRemote?.override !== undefined) {
80+
return ConfigurationTarget.USER_REMOTE;
81+
}
82+
if (configurationValue.userLocal?.override !== undefined) {
83+
return ConfigurationTarget.USER_LOCAL;
7284
}
7385
}
74-
75-
if (configurationValue.workspace) {
76-
return this._updateValue(key, value, ConfigurationTarget.WORKSPACE, configurationValue.workspace, resource, language);
86+
if (configurationValue.memory?.value !== undefined) {
87+
return ConfigurationTarget.MEMORY;
7788
}
78-
79-
if (configurationValue.userRemote) {
80-
return this._updateValue(key, value, ConfigurationTarget.USER_REMOTE, configurationValue.userRemote, resource, language);
89+
if (configurationValue.workspaceFolder?.value !== undefined) {
90+
return ConfigurationTarget.WORKSPACE_FOLDER;
8191
}
82-
83-
return this._updateValue(key, value, ConfigurationTarget.USER_LOCAL, configurationValue.userLocal, resource, language);
84-
}
85-
86-
private _updateValue(key: string, value: any, configurationTarget: ConfigurationTarget, configurationTargetValue: IConfigurationTargetValue<any> | undefined, resource: URI, language: string): Promise<void> {
87-
if (!configurationTargetValue) {
88-
return this.configurationService.updateValue(key, value, configurationTarget);
92+
if (configurationValue.workspace?.value !== undefined) {
93+
return ConfigurationTarget.WORKSPACE;
8994
}
90-
if (configurationTargetValue.overrides.some(({ overrideIdentifier }) => overrideIdentifier === language)) {
91-
return this.configurationService.updateValue(key, value, { resource, overrideIdentifier: language }, configurationTarget);
92-
} else {
93-
return this.configurationService.updateValue(key, value, { resource }, configurationTarget);
95+
if (configurationValue.userRemote?.value !== undefined) {
96+
return ConfigurationTarget.USER_REMOTE;
9497
}
98+
return ConfigurationTarget.USER_LOCAL;
9599
}
96100

97101
private _getValue<T>(resource: URI, position: IPosition | null, section: string | undefined): T {

src/vs/editor/standalone/browser/simpleServices.ts

Lines changed: 1 addition & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -460,17 +460,7 @@ export class SimpleConfigurationService implements IConfigurationService {
460460
return Promise.resolve();
461461
}
462462

463-
public inspectValue<T>(key: string): IConfigurationValue<T> {
464-
return this.configuration().inspectValue(key, undefined);
465-
}
466-
467-
public inspect<C>(key: string, options: IConfigurationOverrides = {}): {
468-
default: C,
469-
user: C,
470-
workspace?: C,
471-
workspaceFolder?: C
472-
value: C,
473-
} {
463+
public inspect<C>(key: string, options: IConfigurationOverrides = {}): IConfigurationValue<C> {
474464
return this.configuration().inspect<C>(key, options, undefined);
475465
}
476466

src/vs/editor/test/common/services/resourceConfigurationService.test.ts

Lines changed: 50 additions & 91 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ suite('TextResourceConfigurationService - Update', () => {
1818
let configurationValue: IConfigurationValue<any>;
1919
let updateArgs: any[];
2020
let configurationService = new class extends TestConfigurationService {
21-
inspectValue(key: string) {
21+
inspect() {
2222
return configurationValue;
2323
}
2424
updateValue() {
@@ -50,12 +50,9 @@ suite('TextResourceConfigurationService - Update', () => {
5050
test('updateValue writes into given memory target without overrides', async () => {
5151
language = 'a';
5252
configurationValue = {
53-
default: { value: '1', overrides: [] },
54-
userLocal: { value: '2', overrides: [] },
55-
userRemote: undefined,
56-
workspace: undefined,
57-
workspaceFolders: [],
58-
getWorkspaceFolderValue() { return { value: '2', overrides: [] }; },
53+
defaultValue: '1',
54+
userLocalValue: '2',
55+
workspaceFolderValue: '2'
5956
};
6057
const resource = URI.file('someFile');
6158

@@ -66,12 +63,9 @@ suite('TextResourceConfigurationService - Update', () => {
6663
test('updateValue writes into given workspace target without overrides', async () => {
6764
language = 'a';
6865
configurationValue = {
69-
default: { value: '1', overrides: [] },
70-
userLocal: { value: '2', overrides: [] },
71-
userRemote: undefined,
72-
workspace: undefined,
73-
workspaceFolders: [],
74-
getWorkspaceFolderValue() { return { value: '2', overrides: [] }; },
66+
defaultValue: '1',
67+
userLocalValue: '2',
68+
workspaceFolderValue: '2'
7569
};
7670
const resource = URI.file('someFile');
7771

@@ -82,12 +76,9 @@ suite('TextResourceConfigurationService - Update', () => {
8276
test('updateValue writes into given user target without overrides', async () => {
8377
language = 'a';
8478
configurationValue = {
85-
default: { value: '1', overrides: [] },
86-
userLocal: { value: '2', overrides: [] },
87-
userRemote: undefined,
88-
workspace: undefined,
89-
workspaceFolders: [],
90-
getWorkspaceFolderValue() { return { value: '2', overrides: [{ overrideIdentifier: 'b', value: '1' }] }; },
79+
defaultValue: '1',
80+
userLocalValue: '2',
81+
workspaceFolderValue: '2'
9182
};
9283
const resource = URI.file('someFile');
9384

@@ -98,12 +89,10 @@ suite('TextResourceConfigurationService - Update', () => {
9889
test('updateValue writes into given workspace folder target with overrides', async () => {
9990
language = 'a';
10091
configurationValue = {
101-
default: { value: '1', overrides: [] },
102-
userLocal: { value: '2', overrides: [] },
103-
userRemote: undefined,
104-
workspace: undefined,
105-
workspaceFolders: [],
106-
getWorkspaceFolderValue() { return { value: '2', overrides: [{ overrideIdentifier: 'a', value: '1' }] }; },
92+
defaultValue: '1',
93+
userLocalValue: '2',
94+
workspaceFolderValue: '2',
95+
workspaceFolderOverridden: '1'
10796
};
10897
const resource = URI.file('someFile');
10998

@@ -114,12 +103,9 @@ suite('TextResourceConfigurationService - Update', () => {
114103
test('updateValue writes into derived workspace folder target without overrides', async () => {
115104
language = 'a';
116105
configurationValue = {
117-
default: { value: '1', overrides: [] },
118-
userLocal: { value: '2', overrides: [] },
119-
userRemote: undefined,
120-
workspace: undefined,
121-
workspaceFolders: [],
122-
getWorkspaceFolderValue() { return { value: '2', overrides: [] }; },
106+
defaultValue: '1',
107+
userLocalValue: '2',
108+
workspaceFolderValue: '2',
123109
};
124110
const resource = URI.file('someFile');
125111

@@ -130,12 +116,12 @@ suite('TextResourceConfigurationService - Update', () => {
130116
test('updateValue writes into derived workspace folder target with overrides', async () => {
131117
language = 'a';
132118
configurationValue = {
133-
default: { value: '1', overrides: [] },
134-
userLocal: { value: '2', overrides: [] },
135-
userRemote: undefined,
136-
workspace: { value: '2', overrides: [{ overrideIdentifier: 'a', value: '3' }] },
137-
workspaceFolders: [],
138-
getWorkspaceFolderValue() { return { value: '2', overrides: [{ overrideIdentifier: 'a', value: '1' }] }; },
119+
defaultValue: '1',
120+
userLocalValue: '2',
121+
workspaceValue: '2',
122+
workspaceFolderValue: '2',
123+
workspaceOverridden: '3',
124+
workspaceFolderOverridden: '1'
139125
};
140126
const resource = URI.file('someFile');
141127

@@ -146,12 +132,9 @@ suite('TextResourceConfigurationService - Update', () => {
146132
test('updateValue writes into derived workspace target without overrides', async () => {
147133
language = 'a';
148134
configurationValue = {
149-
default: { value: '1', overrides: [] },
150-
userLocal: { value: '2', overrides: [] },
151-
userRemote: undefined,
152-
workspace: { value: '2', overrides: [{ overrideIdentifier: 'c', value: '3' }] },
153-
workspaceFolders: undefined,
154-
getWorkspaceFolderValue() { return undefined; },
135+
defaultValue: '1',
136+
userLocalValue: '2',
137+
workspaceValue: '2',
155138
};
156139
const resource = URI.file('someFile');
157140

@@ -162,12 +145,10 @@ suite('TextResourceConfigurationService - Update', () => {
162145
test('updateValue writes into derived workspace target with overrides', async () => {
163146
language = 'a';
164147
configurationValue = {
165-
default: { value: '1', overrides: [] },
166-
userLocal: { value: '2', overrides: [] },
167-
userRemote: undefined,
168-
workspace: { value: '2', overrides: [{ overrideIdentifier: 'a', value: '3' }] },
169-
workspaceFolders: undefined,
170-
getWorkspaceFolderValue() { return undefined; },
148+
defaultValue: '1',
149+
userLocalValue: '2',
150+
workspaceValue: '2',
151+
workspaceOverridden: 3
171152
};
172153
const resource = URI.file('someFile');
173154

@@ -178,12 +159,9 @@ suite('TextResourceConfigurationService - Update', () => {
178159
test('updateValue writes into derived user remote target without overrides', async () => {
179160
language = 'a';
180161
configurationValue = {
181-
default: { value: '1', overrides: [] },
182-
userLocal: { value: '2', overrides: [] },
183-
userRemote: { value: '3', overrides: [] },
184-
workspace: undefined,
185-
workspaceFolders: undefined,
186-
getWorkspaceFolderValue() { return undefined; },
162+
defaultValue: '1',
163+
userLocalValue: '2',
164+
userRemoteValue: '3',
187165
};
188166
const resource = URI.file('someFile');
189167

@@ -194,12 +172,10 @@ suite('TextResourceConfigurationService - Update', () => {
194172
test('updateValue writes into derived user remote target with overrides', async () => {
195173
language = 'a';
196174
configurationValue = {
197-
default: { value: '1', overrides: [] },
198-
userLocal: { value: '2', overrides: [] },
199-
userRemote: { value: '3', overrides: [{ overrideIdentifier: 'a', value: '3' }] },
200-
workspace: undefined,
201-
workspaceFolders: undefined,
202-
getWorkspaceFolderValue() { return undefined; },
175+
defaultValue: '1',
176+
userLocalValue: '2',
177+
userRemoteValue: '3',
178+
userRemoteOverridden: '3',
203179
};
204180
const resource = URI.file('someFile');
205181

@@ -209,12 +185,9 @@ suite('TextResourceConfigurationService - Update', () => {
209185
test('updateValue writes into derived user remote target without overrides', async () => {
210186
language = 'a';
211187
configurationValue = {
212-
default: { value: '1', overrides: [] },
213-
userLocal: { value: '2', overrides: [] },
214-
userRemote: { value: '3', overrides: [] },
215-
workspace: undefined,
216-
workspaceFolders: undefined,
217-
getWorkspaceFolderValue() { return undefined; },
188+
defaultValue: '1',
189+
userLocalValue: '2',
190+
userRemoteValue: '3',
218191
};
219192
const resource = URI.file('someFile');
220193

@@ -225,12 +198,10 @@ suite('TextResourceConfigurationService - Update', () => {
225198
test('updateValue writes into derived user remote target with overrides', async () => {
226199
language = 'a';
227200
configurationValue = {
228-
default: { value: '1', overrides: [] },
229-
userLocal: { value: '2', overrides: [] },
230-
userRemote: { value: '3', overrides: [{ overrideIdentifier: 'a', value: '3' }] },
231-
workspace: undefined,
232-
workspaceFolders: undefined,
233-
getWorkspaceFolderValue() { return undefined; },
201+
defaultValue: '1',
202+
userLocalValue: '2',
203+
userRemoteValue: '3',
204+
userRemoteOverridden: '3',
234205
};
235206
const resource = URI.file('someFile');
236207

@@ -241,12 +212,8 @@ suite('TextResourceConfigurationService - Update', () => {
241212
test('updateValue writes into derived user target without overrides', async () => {
242213
language = 'a';
243214
configurationValue = {
244-
default: { value: '1', overrides: [] },
245-
userLocal: { value: '2', overrides: [{ overrideIdentifier: 'b', value: '3' }] },
246-
userRemote: undefined,
247-
workspace: undefined,
248-
workspaceFolders: undefined,
249-
getWorkspaceFolderValue() { return undefined; },
215+
defaultValue: '1',
216+
userLocalValue: '2',
250217
};
251218
const resource = URI.file('someFile');
252219

@@ -257,12 +224,9 @@ suite('TextResourceConfigurationService - Update', () => {
257224
test('updateValue writes into derived user target with overrides', async () => {
258225
language = 'a';
259226
configurationValue = {
260-
default: { value: '1', overrides: [] },
261-
userLocal: { value: '2', overrides: [{ overrideIdentifier: 'a', value: '3' }] },
262-
userRemote: undefined,
263-
workspace: undefined,
264-
workspaceFolders: undefined,
265-
getWorkspaceFolderValue() { return undefined; },
227+
defaultValue: '1',
228+
userLocalValue: '2',
229+
userLocalOverridden: '3'
266230
};
267231
const resource = URI.file('someFile');
268232

@@ -273,12 +237,7 @@ suite('TextResourceConfigurationService - Update', () => {
273237
test('updateValue when not changed', async () => {
274238
language = 'a';
275239
configurationValue = {
276-
default: { value: '1', overrides: [] },
277-
userLocal: undefined,
278-
userRemote: undefined,
279-
workspace: undefined,
280-
workspaceFolders: undefined,
281-
getWorkspaceFolderValue() { return undefined; },
240+
defaultValue: '1',
282241
};
283242
const resource = URI.file('someFile');
284243

0 commit comments

Comments
 (0)