@codingame/monaco-vscode-configuration-service-override 19.1.3 → 20.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +8 -8
- package/vscode/src/vs/platform/assignment/common/assignment.d.ts +33 -0
- package/vscode/src/vs/platform/assignment/common/assignment.js +24 -0
- package/vscode/src/vs/workbench/api/common/configurationExtensionPoint.js +52 -47
- package/vscode/src/vs/workbench/contrib/workspaces/browser/workspaces.contribution.js +7 -7
- package/vscode/src/vs/workbench/services/configuration/browser/configurationService.js +18 -10
- package/vscode/src/vs/workbench/services/configuration/common/configurationEditing.js +46 -46
- package/vscode/src/vs/workbench/services/configurationResolver/browser/baseConfigurationResolverService.js +7 -7
- package/vscode/src/vs/workbench/services/workspaces/browser/abstractWorkspaceEditingService.js +4 -4
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@codingame/monaco-vscode-configuration-service-override",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "20.0.0",
|
|
4
4
|
"private": false,
|
|
5
5
|
"description": "VSCode public API plugged on the monaco editor - configuration service-override",
|
|
6
6
|
"keywords": [],
|
|
@@ -15,13 +15,13 @@
|
|
|
15
15
|
},
|
|
16
16
|
"type": "module",
|
|
17
17
|
"dependencies": {
|
|
18
|
-
"@codingame/monaco-vscode-158b9837-fc78-5d9c-86f5-9134e4358643-common": "
|
|
19
|
-
"@codingame/monaco-vscode-422642f2-7e3a-5c1c-9e1e-1d3ef1817346-common": "
|
|
20
|
-
"@codingame/monaco-vscode-api": "
|
|
21
|
-
"@codingame/monaco-vscode-ce7c734f-7712-563c-9335-d7acb43306af-common": "
|
|
22
|
-
"@codingame/monaco-vscode-d987325e-3e05-53aa-b9ff-6f97476f64db-common": "
|
|
23
|
-
"@codingame/monaco-vscode-f24e325c-2ce0-5bba-8236-bfc4f53180ab-common": "
|
|
24
|
-
"@codingame/monaco-vscode-files-service-override": "
|
|
18
|
+
"@codingame/monaco-vscode-158b9837-fc78-5d9c-86f5-9134e4358643-common": "20.0.0",
|
|
19
|
+
"@codingame/monaco-vscode-422642f2-7e3a-5c1c-9e1e-1d3ef1817346-common": "20.0.0",
|
|
20
|
+
"@codingame/monaco-vscode-api": "20.0.0",
|
|
21
|
+
"@codingame/monaco-vscode-ce7c734f-7712-563c-9335-d7acb43306af-common": "20.0.0",
|
|
22
|
+
"@codingame/monaco-vscode-d987325e-3e05-53aa-b9ff-6f97476f64db-common": "20.0.0",
|
|
23
|
+
"@codingame/monaco-vscode-f24e325c-2ce0-5bba-8236-bfc4f53180ab-common": "20.0.0",
|
|
24
|
+
"@codingame/monaco-vscode-files-service-override": "20.0.0"
|
|
25
25
|
},
|
|
26
26
|
"main": "index.js",
|
|
27
27
|
"module": "index.js",
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import type { IExperimentationFilterProvider } from "tas-client-umd";
|
|
2
|
+
export declare const ASSIGNMENT_STORAGE_KEY = "VSCode.ABExp.FeatureData";
|
|
3
|
+
export declare const ASSIGNMENT_REFETCH_INTERVAL = 0;
|
|
4
|
+
export interface IAssignmentService {
|
|
5
|
+
readonly _serviceBrand: undefined;
|
|
6
|
+
getTreatment<T extends string | number | boolean>(name: string): Promise<T | undefined>;
|
|
7
|
+
}
|
|
8
|
+
export declare enum TargetPopulation {
|
|
9
|
+
Insiders = "insider",
|
|
10
|
+
Public = "public",
|
|
11
|
+
Exploration = "exploration"
|
|
12
|
+
}
|
|
13
|
+
export declare enum Filters {
|
|
14
|
+
Market = "X-MSEdge-Market",
|
|
15
|
+
CorpNet = "X-FD-Corpnet",
|
|
16
|
+
ApplicationVersion = "X-VSCode-AppVersion",
|
|
17
|
+
Build = "X-VSCode-Build",
|
|
18
|
+
ClientId = "X-MSEdge-ClientId",
|
|
19
|
+
ExtensionName = "X-VSCode-ExtensionName",
|
|
20
|
+
ExtensionVersion = "X-VSCode-ExtensionVersion",
|
|
21
|
+
Language = "X-VSCode-Language",
|
|
22
|
+
TargetPopulation = "X-VSCode-TargetPopulation"
|
|
23
|
+
}
|
|
24
|
+
export declare class AssignmentFilterProvider implements IExperimentationFilterProvider {
|
|
25
|
+
private version;
|
|
26
|
+
private appName;
|
|
27
|
+
private machineId;
|
|
28
|
+
private targetPopulation;
|
|
29
|
+
constructor(version: string, appName: string, machineId: string, targetPopulation: TargetPopulation);
|
|
30
|
+
private static trimVersionSuffix;
|
|
31
|
+
getFilterValue(filter: string): string | null;
|
|
32
|
+
getFilters(): Map<string, any>;
|
|
33
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
|
|
2
|
+
import '@codingame/monaco-vscode-api/vscode/vs/base/common/platform';
|
|
3
|
+
|
|
4
|
+
const ASSIGNMENT_REFETCH_INTERVAL = 0;
|
|
5
|
+
var TargetPopulation;
|
|
6
|
+
(function (TargetPopulation) {
|
|
7
|
+
TargetPopulation["Insiders"] = "insider";
|
|
8
|
+
TargetPopulation["Public"] = "public";
|
|
9
|
+
TargetPopulation["Exploration"] = "exploration";
|
|
10
|
+
})(TargetPopulation || (TargetPopulation = {}));
|
|
11
|
+
var Filters;
|
|
12
|
+
(function (Filters) {
|
|
13
|
+
Filters["Market"] = "X-MSEdge-Market";
|
|
14
|
+
Filters["CorpNet"] = "X-FD-Corpnet";
|
|
15
|
+
Filters["ApplicationVersion"] = "X-VSCode-AppVersion";
|
|
16
|
+
Filters["Build"] = "X-VSCode-Build";
|
|
17
|
+
Filters["ClientId"] = "X-MSEdge-ClientId";
|
|
18
|
+
Filters["ExtensionName"] = "X-VSCode-ExtensionName";
|
|
19
|
+
Filters["ExtensionVersion"] = "X-VSCode-ExtensionVersion";
|
|
20
|
+
Filters["Language"] = "X-VSCode-Language";
|
|
21
|
+
Filters["TargetPopulation"] = "X-VSCode-TargetPopulation";
|
|
22
|
+
})(Filters || (Filters = {}));
|
|
23
|
+
|
|
24
|
+
export { ASSIGNMENT_REFETCH_INTERVAL, Filters, TargetPopulation };
|
|
@@ -22,29 +22,29 @@ const configurationEntrySchema = {
|
|
|
22
22
|
properties: {
|
|
23
23
|
title: {
|
|
24
24
|
description: ( localize(
|
|
25
|
-
|
|
25
|
+
2569,
|
|
26
26
|
'A title for the current category of settings. This label will be rendered in the Settings editor as a subheading. If the title is the same as the extension display name, then the category will be grouped under the main extension heading.'
|
|
27
27
|
)),
|
|
28
28
|
type: 'string'
|
|
29
29
|
},
|
|
30
30
|
order: {
|
|
31
31
|
description: ( localize(
|
|
32
|
-
|
|
32
|
+
2570,
|
|
33
33
|
'When specified, gives the order of this category of settings relative to other categories.'
|
|
34
34
|
)),
|
|
35
35
|
type: 'integer'
|
|
36
36
|
},
|
|
37
37
|
properties: {
|
|
38
|
-
description: ( localize(
|
|
38
|
+
description: ( localize(2571, 'Description of the configuration properties.')),
|
|
39
39
|
type: 'object',
|
|
40
40
|
propertyNames: {
|
|
41
41
|
pattern: '\\S+',
|
|
42
|
-
patternErrorMessage: ( localize(
|
|
42
|
+
patternErrorMessage: ( localize(2572, 'Property should not be empty.')),
|
|
43
43
|
},
|
|
44
44
|
additionalProperties: {
|
|
45
45
|
anyOf: [
|
|
46
46
|
{
|
|
47
|
-
title: ( localize(
|
|
47
|
+
title: ( localize(2573, 'Schema of the configuration property.')),
|
|
48
48
|
$ref: 'http://json-schema.org/draft-07/schema#'
|
|
49
49
|
},
|
|
50
50
|
{
|
|
@@ -55,30 +55,30 @@ const configurationEntrySchema = {
|
|
|
55
55
|
enum: ['application', 'machine', 'window', 'resource', 'language-overridable', 'machine-overridable'],
|
|
56
56
|
default: 'window',
|
|
57
57
|
enumDescriptions: [
|
|
58
|
-
( localize(
|
|
58
|
+
( localize(2574, "Configuration that can be configured only in the user settings.")),
|
|
59
59
|
( localize(
|
|
60
|
-
|
|
60
|
+
2575,
|
|
61
61
|
"Configuration that can be configured only in the user settings or only in the remote settings."
|
|
62
62
|
)),
|
|
63
63
|
( localize(
|
|
64
|
-
|
|
64
|
+
2576,
|
|
65
65
|
"Configuration that can be configured in the user, remote or workspace settings."
|
|
66
66
|
)),
|
|
67
67
|
( localize(
|
|
68
|
-
|
|
68
|
+
2577,
|
|
69
69
|
"Configuration that can be configured in the user, remote, workspace or folder settings."
|
|
70
70
|
)),
|
|
71
71
|
( localize(
|
|
72
|
-
|
|
72
|
+
2578,
|
|
73
73
|
"Resource configuration that can be configured in language specific settings."
|
|
74
74
|
)),
|
|
75
75
|
( localize(
|
|
76
|
-
|
|
76
|
+
2579,
|
|
77
77
|
"Machine configuration that can be configured also in workspace or folder settings."
|
|
78
78
|
))
|
|
79
79
|
],
|
|
80
80
|
markdownDescription: ( localize(
|
|
81
|
-
|
|
81
|
+
2580,
|
|
82
82
|
"Scope in which the configuration is applicable. Available scopes are `application`, `machine`, `window`, `resource`, and `machine-overridable`."
|
|
83
83
|
))
|
|
84
84
|
},
|
|
@@ -87,14 +87,14 @@ const configurationEntrySchema = {
|
|
|
87
87
|
items: {
|
|
88
88
|
type: 'string',
|
|
89
89
|
},
|
|
90
|
-
description: ( localize(
|
|
90
|
+
description: ( localize(2581, 'Descriptions for enum values'))
|
|
91
91
|
},
|
|
92
92
|
markdownEnumDescriptions: {
|
|
93
93
|
type: 'array',
|
|
94
94
|
items: {
|
|
95
95
|
type: 'string',
|
|
96
96
|
},
|
|
97
|
-
description: ( localize(
|
|
97
|
+
description: ( localize(2582, 'Descriptions for enum values in the markdown format.'))
|
|
98
98
|
},
|
|
99
99
|
enumItemLabels: {
|
|
100
100
|
type: 'array',
|
|
@@ -102,26 +102,26 @@ const configurationEntrySchema = {
|
|
|
102
102
|
type: 'string'
|
|
103
103
|
},
|
|
104
104
|
markdownDescription: ( localize(
|
|
105
|
-
|
|
105
|
+
2583,
|
|
106
106
|
'Labels for enum values to be displayed in the Settings editor. When specified, the {0} values still show after the labels, but less prominently.',
|
|
107
107
|
'`enum`'
|
|
108
108
|
))
|
|
109
109
|
},
|
|
110
110
|
markdownDescription: {
|
|
111
111
|
type: 'string',
|
|
112
|
-
description: ( localize(
|
|
112
|
+
description: ( localize(2584, 'The description in the markdown format.'))
|
|
113
113
|
},
|
|
114
114
|
deprecationMessage: {
|
|
115
115
|
type: 'string',
|
|
116
116
|
description: ( localize(
|
|
117
|
-
|
|
117
|
+
2585,
|
|
118
118
|
'If set, the property is marked as deprecated and the given message is shown as an explanation.'
|
|
119
119
|
))
|
|
120
120
|
},
|
|
121
121
|
markdownDeprecationMessage: {
|
|
122
122
|
type: 'string',
|
|
123
123
|
description: ( localize(
|
|
124
|
-
|
|
124
|
+
2586,
|
|
125
125
|
'If set, the property is marked as deprecated and the given message is shown as an explanation in the markdown format.'
|
|
126
126
|
))
|
|
127
127
|
},
|
|
@@ -129,26 +129,26 @@ const configurationEntrySchema = {
|
|
|
129
129
|
type: 'string',
|
|
130
130
|
enum: ['singlelineText', 'multilineText'],
|
|
131
131
|
enumDescriptions: [
|
|
132
|
-
( localize(
|
|
133
|
-
( localize(
|
|
132
|
+
( localize(2587, 'The value will be shown in an inputbox.')),
|
|
133
|
+
( localize(2588, 'The value will be shown in a textarea.'))
|
|
134
134
|
],
|
|
135
135
|
default: 'singlelineText',
|
|
136
136
|
description: ( localize(
|
|
137
|
-
|
|
137
|
+
2589,
|
|
138
138
|
'When specified, controls the presentation format of the string setting.'
|
|
139
139
|
))
|
|
140
140
|
},
|
|
141
141
|
order: {
|
|
142
142
|
type: 'integer',
|
|
143
143
|
description: ( localize(
|
|
144
|
-
|
|
144
|
+
2590,
|
|
145
145
|
'When specified, gives the order of this setting relative to other settings within the same category. Settings with an order property will be placed before settings without this property set.'
|
|
146
146
|
))
|
|
147
147
|
},
|
|
148
148
|
ignoreSync: {
|
|
149
149
|
type: 'boolean',
|
|
150
150
|
description: ( localize(
|
|
151
|
-
|
|
151
|
+
2591,
|
|
152
152
|
'When enabled, Settings Sync will not sync the user value of this configuration by default.'
|
|
153
153
|
))
|
|
154
154
|
},
|
|
@@ -158,7 +158,7 @@ const configurationEntrySchema = {
|
|
|
158
158
|
type: 'string'
|
|
159
159
|
},
|
|
160
160
|
markdownDescription: ( localize(
|
|
161
|
-
|
|
161
|
+
2592,
|
|
162
162
|
'A list of categories under which to place the setting. The category can then be searched up in the Settings editor. For example, specifying the `experimental` tag allows one to find the setting by searching `@tag:experimental`.'
|
|
163
163
|
)),
|
|
164
164
|
}
|
|
@@ -203,7 +203,7 @@ defaultConfigurationExtPoint.setHandler((extensions, { added, removed }) => {
|
|
|
203
203
|
const registeredPropertyScheme = registeredProperties[key];
|
|
204
204
|
if (registeredPropertyScheme?.disallowConfigurationDefault) {
|
|
205
205
|
extension.collector.warn(( localize(
|
|
206
|
-
|
|
206
|
+
2593,
|
|
207
207
|
"Cannot register configuration defaults for '{0}'. This setting does not allow contributing configuration defaults.",
|
|
208
208
|
key
|
|
209
209
|
)));
|
|
@@ -213,7 +213,7 @@ defaultConfigurationExtPoint.setHandler((extensions, { added, removed }) => {
|
|
|
213
213
|
if (!OVERRIDE_PROPERTY_REGEX.test(key)) {
|
|
214
214
|
if (registeredPropertyScheme?.scope && !allowedScopes.includes(registeredPropertyScheme.scope)) {
|
|
215
215
|
extension.collector.warn(( localize(
|
|
216
|
-
|
|
216
|
+
2594,
|
|
217
217
|
"Cannot register configuration defaults for '{0}'. Only defaults for machine-overridable, window, resource and language overridable scoped settings are supported.",
|
|
218
218
|
key
|
|
219
219
|
)));
|
|
@@ -231,7 +231,7 @@ const configurationExtPoint = ExtensionsRegistry.registerExtensionPoint({
|
|
|
231
231
|
extensionPoint: 'configuration',
|
|
232
232
|
deps: [defaultConfigurationExtPoint],
|
|
233
233
|
jsonSchema: {
|
|
234
|
-
description: ( localize(
|
|
234
|
+
description: ( localize(2595, 'Contributes configuration settings.')),
|
|
235
235
|
oneOf: [
|
|
236
236
|
configurationEntrySchema,
|
|
237
237
|
{
|
|
@@ -257,7 +257,7 @@ configurationExtPoint.setHandler((extensions, { added, removed }) => {
|
|
|
257
257
|
function handleConfiguration(node, extension) {
|
|
258
258
|
const configuration = deepClone(node);
|
|
259
259
|
if (configuration.title && (typeof configuration.title !== 'string')) {
|
|
260
|
-
extension.collector.error(( localize(
|
|
260
|
+
extension.collector.error(( localize(2596, "'configuration.title' must be a string")));
|
|
261
261
|
}
|
|
262
262
|
validateProperties(configuration, extension);
|
|
263
263
|
configuration.id = node.id || extension.description.identifier.value;
|
|
@@ -271,7 +271,7 @@ configurationExtPoint.setHandler((extensions, { added, removed }) => {
|
|
|
271
271
|
const extensionConfigurationPolicy = product.extensionConfigurationPolicy;
|
|
272
272
|
if (properties) {
|
|
273
273
|
if (typeof properties !== 'object') {
|
|
274
|
-
extension.collector.error(( localize(
|
|
274
|
+
extension.collector.error(( localize(2597, "'configuration.properties' must be an object")));
|
|
275
275
|
configuration.properties = {};
|
|
276
276
|
}
|
|
277
277
|
for (const key in properties) {
|
|
@@ -284,17 +284,22 @@ configurationExtPoint.setHandler((extensions, { added, removed }) => {
|
|
|
284
284
|
}
|
|
285
285
|
if (( seenProperties.has(key))) {
|
|
286
286
|
delete properties[key];
|
|
287
|
-
extension.collector.warn(( localize(
|
|
287
|
+
extension.collector.warn(( localize(2598, "Cannot register '{0}'. This property is already registered.", key)));
|
|
288
288
|
continue;
|
|
289
289
|
}
|
|
290
290
|
if (!isObject(propertyConfiguration)) {
|
|
291
291
|
delete properties[key];
|
|
292
|
-
extension.collector.error(( localize(
|
|
292
|
+
extension.collector.error(( localize(2599, "configuration.properties property '{0}' must be an object", key)));
|
|
293
293
|
continue;
|
|
294
294
|
}
|
|
295
295
|
if (extensionConfigurationPolicy?.[key]) {
|
|
296
296
|
propertyConfiguration.policy = extensionConfigurationPolicy?.[key];
|
|
297
297
|
}
|
|
298
|
+
if (propertyConfiguration.tags?.some(tag => tag.toLowerCase() === 'onexp')) {
|
|
299
|
+
propertyConfiguration.experiment = {
|
|
300
|
+
mode: 'startup'
|
|
301
|
+
};
|
|
302
|
+
}
|
|
298
303
|
seenProperties.add(key);
|
|
299
304
|
propertyConfiguration.scope = propertyConfiguration.scope ? parseScope(( propertyConfiguration.scope.toString())) : ConfigurationScope.WINDOW;
|
|
300
305
|
}
|
|
@@ -302,7 +307,7 @@ configurationExtPoint.setHandler((extensions, { added, removed }) => {
|
|
|
302
307
|
const subNodes = configuration.allOf;
|
|
303
308
|
if (subNodes) {
|
|
304
309
|
extension.collector.error(( localize(
|
|
305
|
-
|
|
310
|
+
2600,
|
|
306
311
|
"'configuration.allOf' is deprecated and should no longer be used. Instead, pass multiple configuration sections as an array to the 'configuration' contribution point."
|
|
307
312
|
)));
|
|
308
313
|
for (const node of subNodes) {
|
|
@@ -345,7 +350,7 @@ jsonRegistry.registerSchema('vscode://schemas/workspaceConfig', {
|
|
|
345
350
|
'folders': {
|
|
346
351
|
minItems: 0,
|
|
347
352
|
uniqueItems: true,
|
|
348
|
-
description: ( localize(
|
|
353
|
+
description: ( localize(2601, "List of folders to be loaded in the workspace.")),
|
|
349
354
|
items: {
|
|
350
355
|
type: 'object',
|
|
351
356
|
defaultSnippets: [{ body: { path: '$1' } }],
|
|
@@ -354,13 +359,13 @@ jsonRegistry.registerSchema('vscode://schemas/workspaceConfig', {
|
|
|
354
359
|
path: {
|
|
355
360
|
type: 'string',
|
|
356
361
|
description: ( localize(
|
|
357
|
-
|
|
362
|
+
2602,
|
|
358
363
|
"A file path. e.g. `/root/folderA` or `./folderA` for a relative path that will be resolved against the location of the workspace file."
|
|
359
364
|
))
|
|
360
365
|
},
|
|
361
366
|
name: {
|
|
362
367
|
type: 'string',
|
|
363
|
-
description: ( localize(
|
|
368
|
+
description: ( localize(2603, "An optional name for the folder. "))
|
|
364
369
|
}
|
|
365
370
|
},
|
|
366
371
|
required: ['path']
|
|
@@ -368,11 +373,11 @@ jsonRegistry.registerSchema('vscode://schemas/workspaceConfig', {
|
|
|
368
373
|
properties: {
|
|
369
374
|
uri: {
|
|
370
375
|
type: 'string',
|
|
371
|
-
description: ( localize(
|
|
376
|
+
description: ( localize(2604, "URI of the folder"))
|
|
372
377
|
},
|
|
373
378
|
name: {
|
|
374
379
|
type: 'string',
|
|
375
|
-
description: ( localize(
|
|
380
|
+
description: ( localize(2603, "An optional name for the folder. "))
|
|
376
381
|
}
|
|
377
382
|
},
|
|
378
383
|
required: ['uri']
|
|
@@ -382,19 +387,19 @@ jsonRegistry.registerSchema('vscode://schemas/workspaceConfig', {
|
|
|
382
387
|
'settings': {
|
|
383
388
|
type: 'object',
|
|
384
389
|
default: {},
|
|
385
|
-
description: ( localize(
|
|
390
|
+
description: ( localize(2605, "Workspace settings")),
|
|
386
391
|
$ref: workspaceSettingsSchemaId
|
|
387
392
|
},
|
|
388
393
|
'launch': {
|
|
389
394
|
type: 'object',
|
|
390
395
|
default: { configurations: [], compounds: [] },
|
|
391
|
-
description: ( localize(
|
|
396
|
+
description: ( localize(2606, "Workspace launch configurations")),
|
|
392
397
|
$ref: launchSchemaId
|
|
393
398
|
},
|
|
394
399
|
'tasks': {
|
|
395
400
|
type: 'object',
|
|
396
401
|
default: { version: '2.0.0', tasks: [] },
|
|
397
|
-
description: ( localize(
|
|
402
|
+
description: ( localize(2607, "Workspace task configurations")),
|
|
398
403
|
$ref: tasksSchemaId
|
|
399
404
|
},
|
|
400
405
|
'mcp': {
|
|
@@ -408,27 +413,27 @@ jsonRegistry.registerSchema('vscode://schemas/workspaceConfig', {
|
|
|
408
413
|
}
|
|
409
414
|
}
|
|
410
415
|
},
|
|
411
|
-
description: ( localize(
|
|
416
|
+
description: ( localize(2608, "Model Context Protocol server configurations")),
|
|
412
417
|
$ref: mcpSchemaId
|
|
413
418
|
},
|
|
414
419
|
'extensions': {
|
|
415
420
|
type: 'object',
|
|
416
421
|
default: {},
|
|
417
|
-
description: ( localize(
|
|
422
|
+
description: ( localize(2609, "Workspace extensions")),
|
|
418
423
|
$ref: 'vscode://schemas/extensions'
|
|
419
424
|
},
|
|
420
425
|
'remoteAuthority': {
|
|
421
426
|
type: 'string',
|
|
422
427
|
doNotSuggest: true,
|
|
423
|
-
description: ( localize(
|
|
428
|
+
description: ( localize(2610, "The remote server where the workspace is located.")),
|
|
424
429
|
},
|
|
425
430
|
'transient': {
|
|
426
431
|
type: 'boolean',
|
|
427
432
|
doNotSuggest: true,
|
|
428
|
-
description: ( localize(
|
|
433
|
+
description: ( localize(2611, "A transient workspace will disappear when restarting or reloading.")),
|
|
429
434
|
}
|
|
430
435
|
},
|
|
431
|
-
errorMessage: ( localize(
|
|
436
|
+
errorMessage: ( localize(2612, "Unknown workspace configuration property"))
|
|
432
437
|
});
|
|
433
438
|
class SettingsTableRenderer extends Disposable {
|
|
434
439
|
constructor() {
|
|
@@ -444,7 +449,7 @@ class SettingsTableRenderer extends Disposable {
|
|
|
444
449
|
: [];
|
|
445
450
|
const properties = getAllConfigurationProperties(configuration);
|
|
446
451
|
const contrib = properties ? ( Object.keys(properties)) : [];
|
|
447
|
-
const headers = [( localize(
|
|
452
|
+
const headers = [( localize(2613, "ID")), ( localize(2614, "Description")), ( localize(2615, "Default"))];
|
|
448
453
|
const rows = ( contrib.sort((a, b) => a.localeCompare(b))
|
|
449
454
|
.map(key => {
|
|
450
455
|
return [
|
|
@@ -464,7 +469,7 @@ class SettingsTableRenderer extends Disposable {
|
|
|
464
469
|
}
|
|
465
470
|
( Registry.as(Extensions$2.ExtensionFeaturesRegistry)).registerExtensionFeature({
|
|
466
471
|
id: 'configuration',
|
|
467
|
-
label: ( localize(
|
|
472
|
+
label: ( localize(2616, "Settings")),
|
|
468
473
|
access: {
|
|
469
474
|
canToggle: false
|
|
470
475
|
},
|
|
@@ -51,12 +51,12 @@ let WorkspacesFinderContribution = class WorkspacesFinderContribution extends Di
|
|
|
51
51
|
if (workspaces.length === 1) {
|
|
52
52
|
const workspaceFile = workspaces[0];
|
|
53
53
|
this.notificationService.prompt(Severity.Info, ( localize(
|
|
54
|
-
|
|
54
|
+
12713,
|
|
55
55
|
"This folder contains a workspace file '{0}'. Do you want to open it? [Learn more]({1}) about workspace files.",
|
|
56
56
|
workspaceFile,
|
|
57
57
|
'https://go.microsoft.com/fwlink/?linkid=2025315'
|
|
58
58
|
)), [{
|
|
59
|
-
label: ( localize(
|
|
59
|
+
label: ( localize(12714, "Open Workspace")),
|
|
60
60
|
run: () => this.hostService.openWindow([{ workspaceUri: joinPath(folder, workspaceFile) }])
|
|
61
61
|
}], {
|
|
62
62
|
neverShowAgain,
|
|
@@ -65,13 +65,13 @@ let WorkspacesFinderContribution = class WorkspacesFinderContribution extends Di
|
|
|
65
65
|
}
|
|
66
66
|
else if (workspaces.length > 1) {
|
|
67
67
|
this.notificationService.prompt(Severity.Info, ( localize(
|
|
68
|
-
|
|
68
|
+
12715,
|
|
69
69
|
"This folder contains multiple workspace files. Do you want to open one? [Learn more]({0}) about workspace files.",
|
|
70
70
|
'https://go.microsoft.com/fwlink/?linkid=2025315'
|
|
71
71
|
)), [{
|
|
72
|
-
label: ( localize(
|
|
72
|
+
label: ( localize(12716, "Select Workspace")),
|
|
73
73
|
run: () => {
|
|
74
|
-
this.quickInputService.pick(( workspaces.map(workspace => ({ label: workspace }))), { placeHolder: ( localize(
|
|
74
|
+
this.quickInputService.pick(( workspaces.map(workspace => ({ label: workspace }))), { placeHolder: ( localize(12717, "Select a workspace to open")) }).then(pick => {
|
|
75
75
|
if (pick) {
|
|
76
76
|
this.hostService.openWindow([{ workspaceUri: joinPath(folder, pick.label) }]);
|
|
77
77
|
}
|
|
@@ -97,7 +97,7 @@ registerAction2(class extends Action2 {
|
|
|
97
97
|
constructor() {
|
|
98
98
|
super({
|
|
99
99
|
id: 'workbench.action.openWorkspaceFromEditor',
|
|
100
|
-
title: ( localize2(
|
|
100
|
+
title: ( localize2(12714, "Open Workspace")),
|
|
101
101
|
f1: false,
|
|
102
102
|
menu: {
|
|
103
103
|
id: MenuId.EditorContent,
|
|
@@ -112,7 +112,7 @@ registerAction2(class extends Action2 {
|
|
|
112
112
|
if (contextService.getWorkbenchState() === WorkbenchState.WORKSPACE) {
|
|
113
113
|
const workspaceConfiguration = contextService.getWorkspace().configuration;
|
|
114
114
|
if (workspaceConfiguration && isEqual(workspaceConfiguration, uri)) {
|
|
115
|
-
notificationService.info(( localize(
|
|
115
|
+
notificationService.info(( localize(12718, "This workspace is already open.")));
|
|
116
116
|
return;
|
|
117
117
|
}
|
|
118
118
|
}
|
|
@@ -5,7 +5,7 @@ import { Emitter, Event } from '@codingame/monaco-vscode-api/vscode/vs/base/comm
|
|
|
5
5
|
import { ResourceMap } from '@codingame/monaco-vscode-api/vscode/vs/base/common/map';
|
|
6
6
|
import { equals } from '@codingame/monaco-vscode-api/vscode/vs/base/common/objects';
|
|
7
7
|
import { Disposable, DisposableStore } from '@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle';
|
|
8
|
-
import { Barrier, Queue, Promises, Delayer } from '@codingame/monaco-vscode-api/vscode/vs/base/common/async';
|
|
8
|
+
import { Barrier, Queue, Promises, Delayer, RunOnceScheduler } from '@codingame/monaco-vscode-api/vscode/vs/base/common/async';
|
|
9
9
|
import { Extensions as Extensions$1 } from '@codingame/monaco-vscode-api/vscode/vs/platform/jsonschemas/common/jsonContributionRegistry';
|
|
10
10
|
import { Workspace as Workspace$1, WorkbenchState, isWorkspaceIdentifier, isSingleFolderWorkspaceIdentifier, isWorkspaceFolder, toWorkspaceFolder } from '@codingame/monaco-vscode-api/vscode/vs/platform/workspace/common/workspace';
|
|
11
11
|
import { IWorkspaceContextService } from '@codingame/monaco-vscode-api/vscode/vs/platform/workspace/common/workspace.service';
|
|
@@ -38,6 +38,7 @@ import { IJSONEditingService } from '@codingame/monaco-vscode-api/vscode/vs/work
|
|
|
38
38
|
import { workbenchConfigurationNodeBase } from '@codingame/monaco-vscode-api/vscode/vs/workbench/common/configuration';
|
|
39
39
|
import { mainWindow } from '@codingame/monaco-vscode-api/vscode/vs/base/browser/window';
|
|
40
40
|
import { runWhenWindowIdle } from '@codingame/monaco-vscode-api/vscode/vs/base/browser/dom';
|
|
41
|
+
import { ASSIGNMENT_REFETCH_INTERVAL } from '../../../../platform/assignment/common/assignment.js';
|
|
41
42
|
|
|
42
43
|
function getLocalUserConfigurationScopes(userDataProfile, hasRemote) {
|
|
43
44
|
const isDefaultProfile = userDataProfile.isDefault || userDataProfile.useDefaultFlags?.settings;
|
|
@@ -1096,7 +1097,7 @@ let RegisterConfigurationSchemasContribution = class RegisterConfigurationSchema
|
|
|
1096
1097
|
} : workspaceSettingsSchema;
|
|
1097
1098
|
const configDefaultsSchema = {
|
|
1098
1099
|
type: 'object',
|
|
1099
|
-
description: ( localize(
|
|
1100
|
+
description: ( localize(12876, 'Contribute defaults for configurations')),
|
|
1100
1101
|
properties: Object.assign({}, this.filterDefaultOverridableProperties(machineOverridableSettings.properties), this.filterDefaultOverridableProperties(windowSettings.properties), this.filterDefaultOverridableProperties(resourceSettings.properties)),
|
|
1101
1102
|
patternProperties: {
|
|
1102
1103
|
[OVERRIDE_PROPERTY_PATTERN]: {
|
|
@@ -1165,36 +1166,43 @@ let ConfigurationDefaultOverridesContribution = class ConfigurationDefaultOverri
|
|
|
1165
1166
|
this.configurationService = configurationService;
|
|
1166
1167
|
this.logService = logService;
|
|
1167
1168
|
this.processedExperimentalSettings = ( new Set());
|
|
1169
|
+
this.autoRefetchExperimentalSettings = ( new Set());
|
|
1168
1170
|
this.configurationRegistry = ( Registry.as(Extensions.Configuration));
|
|
1171
|
+
this.autoRefetchExperimentalSettingsScheduler = ( new RunOnceScheduler(() => {
|
|
1172
|
+
this.processExperimentalSettings(this.autoRefetchExperimentalSettings, true);
|
|
1173
|
+
}, ASSIGNMENT_REFETCH_INTERVAL));
|
|
1169
1174
|
this.updateDefaults();
|
|
1170
|
-
this._register(this.configurationRegistry.onDidUpdateConfiguration(({ properties }) => this.processExperimentalSettings(properties)));
|
|
1175
|
+
this._register(this.configurationRegistry.onDidUpdateConfiguration(({ properties }) => this.processExperimentalSettings(properties, false)));
|
|
1171
1176
|
}
|
|
1172
1177
|
async updateDefaults() {
|
|
1173
1178
|
this.logService.trace('ConfigurationService#updateDefaults: begin');
|
|
1174
1179
|
try {
|
|
1175
|
-
await this.processExperimentalSettings(( Object.keys(this.configurationRegistry.getConfigurationProperties())));
|
|
1180
|
+
await this.processExperimentalSettings(( Object.keys(this.configurationRegistry.getConfigurationProperties())), false);
|
|
1176
1181
|
}
|
|
1177
1182
|
finally {
|
|
1178
1183
|
await this.extensionService.whenInstalledExtensionsRegistered();
|
|
1179
1184
|
this.logService.trace('ConfigurationService#updateDefaults: resetting the defaults');
|
|
1180
1185
|
this.configurationService.reloadConfiguration(ConfigurationTarget.DEFAULT);
|
|
1181
1186
|
}
|
|
1187
|
+
this.autoRefetchExperimentalSettingsScheduler.schedule();
|
|
1182
1188
|
}
|
|
1183
|
-
async processExperimentalSettings(properties) {
|
|
1189
|
+
async processExperimentalSettings(properties, autoRefetch) {
|
|
1184
1190
|
const overrides = {};
|
|
1185
1191
|
const allProperties = this.configurationRegistry.getConfigurationProperties();
|
|
1186
1192
|
for (const property of properties) {
|
|
1187
1193
|
const schema = allProperties[property];
|
|
1188
|
-
|
|
1189
|
-
if (!tags || !( tags.some(tag => tag.toLowerCase() === 'onexp'))) {
|
|
1194
|
+
if (!schema.experiment) {
|
|
1190
1195
|
continue;
|
|
1191
1196
|
}
|
|
1192
|
-
if (( this.processedExperimentalSettings.has(property))) {
|
|
1197
|
+
if (!autoRefetch && ( this.processedExperimentalSettings.has(property))) {
|
|
1193
1198
|
continue;
|
|
1194
1199
|
}
|
|
1195
1200
|
this.processedExperimentalSettings.add(property);
|
|
1201
|
+
if (schema.experiment.mode === 'auto') {
|
|
1202
|
+
this.autoRefetchExperimentalSettings.add(property);
|
|
1203
|
+
}
|
|
1196
1204
|
try {
|
|
1197
|
-
const value = await this.workbenchAssignmentService.getTreatment(`config.${property}`);
|
|
1205
|
+
const value = await this.workbenchAssignmentService.getTreatment(schema.experiment.name ?? `config.${property}`);
|
|
1198
1206
|
if (!isUndefined(value) && !equals(value, schema.default)) {
|
|
1199
1207
|
overrides[property] = value;
|
|
1200
1208
|
}
|
|
@@ -1221,7 +1229,7 @@ configurationRegistry.registerConfiguration({
|
|
|
1221
1229
|
properties: {
|
|
1222
1230
|
[APPLY_ALL_PROFILES_SETTING]: {
|
|
1223
1231
|
'type': 'array',
|
|
1224
|
-
description: ( localize(
|
|
1232
|
+
description: ( localize(12877, "Configure settings to be applied for all profiles.")),
|
|
1225
1233
|
'default': [],
|
|
1226
1234
|
'scope': ConfigurationScope.APPLICATION,
|
|
1227
1235
|
additionalProperties: true,
|
|
@@ -138,7 +138,7 @@ let ConfigurationEditing = class ConfigurationEditing {
|
|
|
138
138
|
throw this.toConfigurationEditingError(ConfigurationEditingErrorCode.ERROR_CONFIGURATION_FILE_MODIFIED_SINCE, operation.target, operation);
|
|
139
139
|
}
|
|
140
140
|
throw ( new ConfigurationEditingError(( localize(
|
|
141
|
-
|
|
141
|
+
12878,
|
|
142
142
|
"Error while writing to {0}. {1}",
|
|
143
143
|
this.stringifyTarget(operation.target),
|
|
144
144
|
error.message
|
|
@@ -198,9 +198,9 @@ let ConfigurationEditing = class ConfigurationEditing {
|
|
|
198
198
|
}
|
|
199
199
|
}
|
|
200
200
|
onInvalidConfigurationError(error, operation) {
|
|
201
|
-
const openStandAloneConfigurationActionLabel = operation.workspaceStandAloneConfigurationKey === TASKS_CONFIGURATION_KEY ? ( localize(
|
|
202
|
-
: operation.workspaceStandAloneConfigurationKey === LAUNCH_CONFIGURATION_KEY ? ( localize(
|
|
203
|
-
: operation.workspaceStandAloneConfigurationKey === MCP_CONFIGURATION_KEY ? ( localize(
|
|
201
|
+
const openStandAloneConfigurationActionLabel = operation.workspaceStandAloneConfigurationKey === TASKS_CONFIGURATION_KEY ? ( localize(12879, "Open Tasks Configuration"))
|
|
202
|
+
: operation.workspaceStandAloneConfigurationKey === LAUNCH_CONFIGURATION_KEY ? ( localize(12880, "Open Launch Configuration"))
|
|
203
|
+
: operation.workspaceStandAloneConfigurationKey === MCP_CONFIGURATION_KEY ? ( localize(12881, "Open MCP Configuration"))
|
|
204
204
|
: null;
|
|
205
205
|
if (openStandAloneConfigurationActionLabel) {
|
|
206
206
|
this.notificationService.prompt(Severity.Error, error.message, [{
|
|
@@ -210,18 +210,18 @@ let ConfigurationEditing = class ConfigurationEditing {
|
|
|
210
210
|
}
|
|
211
211
|
else {
|
|
212
212
|
this.notificationService.prompt(Severity.Error, error.message, [{
|
|
213
|
-
label: ( localize(
|
|
213
|
+
label: ( localize(12882, "Open Settings")),
|
|
214
214
|
run: () => this.openSettings(operation)
|
|
215
215
|
}]);
|
|
216
216
|
}
|
|
217
217
|
}
|
|
218
218
|
onConfigurationFileDirtyError(error, operation, scopes) {
|
|
219
|
-
const openStandAloneConfigurationActionLabel = operation.workspaceStandAloneConfigurationKey === TASKS_CONFIGURATION_KEY ? ( localize(
|
|
220
|
-
: operation.workspaceStandAloneConfigurationKey === LAUNCH_CONFIGURATION_KEY ? ( localize(
|
|
219
|
+
const openStandAloneConfigurationActionLabel = operation.workspaceStandAloneConfigurationKey === TASKS_CONFIGURATION_KEY ? ( localize(12879, "Open Tasks Configuration"))
|
|
220
|
+
: operation.workspaceStandAloneConfigurationKey === LAUNCH_CONFIGURATION_KEY ? ( localize(12880, "Open Launch Configuration"))
|
|
221
221
|
: null;
|
|
222
222
|
if (openStandAloneConfigurationActionLabel) {
|
|
223
223
|
this.notificationService.prompt(Severity.Error, error.message, [{
|
|
224
|
-
label: ( localize(
|
|
224
|
+
label: ( localize(12883, "Save and Retry")),
|
|
225
225
|
run: () => {
|
|
226
226
|
const key = operation.key ? `${operation.workspaceStandAloneConfigurationKey}.${operation.key}` : operation.workspaceStandAloneConfigurationKey;
|
|
227
227
|
this.writeConfiguration(operation.target, { key, value: operation.value }, { handleDirtyFile: 'save', scopes });
|
|
@@ -234,11 +234,11 @@ let ConfigurationEditing = class ConfigurationEditing {
|
|
|
234
234
|
}
|
|
235
235
|
else {
|
|
236
236
|
this.notificationService.prompt(Severity.Error, error.message, [{
|
|
237
|
-
label: ( localize(
|
|
237
|
+
label: ( localize(12883, "Save and Retry")),
|
|
238
238
|
run: () => this.writeConfiguration(operation.target, { key: operation.key, value: operation.value }, { handleDirtyFile: 'save', scopes })
|
|
239
239
|
},
|
|
240
240
|
{
|
|
241
|
-
label: ( localize(
|
|
241
|
+
label: ( localize(12882, "Open Settings")),
|
|
242
242
|
run: () => this.openSettings(operation)
|
|
243
243
|
}]);
|
|
244
244
|
}
|
|
@@ -275,88 +275,88 @@ let ConfigurationEditing = class ConfigurationEditing {
|
|
|
275
275
|
toErrorMessage(error, target, operation) {
|
|
276
276
|
switch (error) {
|
|
277
277
|
case ConfigurationEditingErrorCode.ERROR_POLICY_CONFIGURATION: return localize(
|
|
278
|
-
|
|
278
|
+
12884,
|
|
279
279
|
"Unable to write {0} because it is configured in system policy.",
|
|
280
280
|
operation.key
|
|
281
281
|
);
|
|
282
282
|
case ConfigurationEditingErrorCode.ERROR_UNKNOWN_KEY: return localize(
|
|
283
|
-
|
|
283
|
+
12885,
|
|
284
284
|
"Unable to write to {0} because {1} is not a registered configuration.",
|
|
285
285
|
this.stringifyTarget(target),
|
|
286
286
|
operation.key
|
|
287
287
|
);
|
|
288
288
|
case ConfigurationEditingErrorCode.ERROR_INVALID_WORKSPACE_CONFIGURATION_APPLICATION: return localize(
|
|
289
|
-
|
|
289
|
+
12886,
|
|
290
290
|
"Unable to write {0} to Workspace Settings. This setting can be written only into User settings.",
|
|
291
291
|
operation.key
|
|
292
292
|
);
|
|
293
293
|
case ConfigurationEditingErrorCode.ERROR_INVALID_WORKSPACE_CONFIGURATION_MACHINE: return localize(
|
|
294
|
-
|
|
294
|
+
12887,
|
|
295
295
|
"Unable to write {0} to Workspace Settings. This setting can be written only into User settings.",
|
|
296
296
|
operation.key
|
|
297
297
|
);
|
|
298
298
|
case ConfigurationEditingErrorCode.ERROR_INVALID_FOLDER_CONFIGURATION: return localize(
|
|
299
|
-
|
|
299
|
+
12888,
|
|
300
300
|
"Unable to write to Folder Settings because {0} does not support the folder resource scope.",
|
|
301
301
|
operation.key
|
|
302
302
|
);
|
|
303
303
|
case ConfigurationEditingErrorCode.ERROR_INVALID_USER_TARGET: return localize(
|
|
304
|
-
|
|
304
|
+
12889,
|
|
305
305
|
"Unable to write to User Settings because {0} does not support for global scope.",
|
|
306
306
|
operation.key
|
|
307
307
|
);
|
|
308
308
|
case ConfigurationEditingErrorCode.ERROR_INVALID_WORKSPACE_TARGET: return localize(
|
|
309
|
-
|
|
309
|
+
12890,
|
|
310
310
|
"Unable to write to Workspace Settings because {0} does not support for workspace scope in a multi folder workspace.",
|
|
311
311
|
operation.key
|
|
312
312
|
);
|
|
313
313
|
case ConfigurationEditingErrorCode.ERROR_INVALID_FOLDER_TARGET: return localize(
|
|
314
|
-
|
|
314
|
+
12891,
|
|
315
315
|
"Unable to write to Folder Settings because no resource is provided."
|
|
316
316
|
);
|
|
317
317
|
case ConfigurationEditingErrorCode.ERROR_INVALID_RESOURCE_LANGUAGE_CONFIGURATION: return localize(
|
|
318
|
-
|
|
318
|
+
12892,
|
|
319
319
|
"Unable to write to Language Settings because {0} is not a resource language setting.",
|
|
320
320
|
operation.key
|
|
321
321
|
);
|
|
322
322
|
case ConfigurationEditingErrorCode.ERROR_NO_WORKSPACE_OPENED: return localize(
|
|
323
|
-
|
|
323
|
+
12893,
|
|
324
324
|
"Unable to write to {0} because no workspace is opened. Please open a workspace first and try again.",
|
|
325
325
|
this.stringifyTarget(target)
|
|
326
326
|
);
|
|
327
327
|
case ConfigurationEditingErrorCode.ERROR_INVALID_CONFIGURATION: {
|
|
328
328
|
if (operation.workspaceStandAloneConfigurationKey === TASKS_CONFIGURATION_KEY) {
|
|
329
329
|
return localize(
|
|
330
|
-
|
|
330
|
+
12894,
|
|
331
331
|
"Unable to write into the tasks configuration file. Please open it to correct errors/warnings in it and try again."
|
|
332
332
|
);
|
|
333
333
|
}
|
|
334
334
|
if (operation.workspaceStandAloneConfigurationKey === LAUNCH_CONFIGURATION_KEY) {
|
|
335
335
|
return localize(
|
|
336
|
-
|
|
336
|
+
12895,
|
|
337
337
|
"Unable to write into the launch configuration file. Please open it to correct errors/warnings in it and try again."
|
|
338
338
|
);
|
|
339
339
|
}
|
|
340
340
|
if (operation.workspaceStandAloneConfigurationKey === MCP_CONFIGURATION_KEY) {
|
|
341
341
|
return localize(
|
|
342
|
-
|
|
342
|
+
12896,
|
|
343
343
|
"Unable to write into the MCP configuration file. Please open it to correct errors/warnings in it and try again."
|
|
344
344
|
);
|
|
345
345
|
}
|
|
346
346
|
switch (target) {
|
|
347
347
|
case EditableConfigurationTarget.USER_LOCAL:
|
|
348
348
|
return localize(
|
|
349
|
-
|
|
349
|
+
12897,
|
|
350
350
|
"Unable to write into user settings. Please open the user settings to correct errors/warnings in it and try again."
|
|
351
351
|
);
|
|
352
352
|
case EditableConfigurationTarget.USER_REMOTE:
|
|
353
353
|
return localize(
|
|
354
|
-
|
|
354
|
+
12898,
|
|
355
355
|
"Unable to write into remote user settings. Please open the remote user settings to correct errors/warnings in it and try again."
|
|
356
356
|
);
|
|
357
357
|
case EditableConfigurationTarget.WORKSPACE:
|
|
358
358
|
return localize(
|
|
359
|
-
|
|
359
|
+
12899,
|
|
360
360
|
"Unable to write into workspace settings. Please open the workspace settings to correct errors/warnings in the file and try again."
|
|
361
361
|
);
|
|
362
362
|
case EditableConfigurationTarget.WORKSPACE_FOLDER: {
|
|
@@ -368,7 +368,7 @@ let ConfigurationEditing = class ConfigurationEditing {
|
|
|
368
368
|
}
|
|
369
369
|
}
|
|
370
370
|
return localize(
|
|
371
|
-
|
|
371
|
+
12900,
|
|
372
372
|
"Unable to write into folder settings. Please open the '{0}' folder settings to correct errors/warnings in it and try again.",
|
|
373
373
|
workspaceFolderName
|
|
374
374
|
);
|
|
@@ -380,36 +380,36 @@ let ConfigurationEditing = class ConfigurationEditing {
|
|
|
380
380
|
case ConfigurationEditingErrorCode.ERROR_CONFIGURATION_FILE_DIRTY: {
|
|
381
381
|
if (operation.workspaceStandAloneConfigurationKey === TASKS_CONFIGURATION_KEY) {
|
|
382
382
|
return localize(
|
|
383
|
-
|
|
383
|
+
12901,
|
|
384
384
|
"Unable to write into tasks configuration file because the file has unsaved changes. Please save it first and then try again."
|
|
385
385
|
);
|
|
386
386
|
}
|
|
387
387
|
if (operation.workspaceStandAloneConfigurationKey === LAUNCH_CONFIGURATION_KEY) {
|
|
388
388
|
return localize(
|
|
389
|
-
|
|
389
|
+
12902,
|
|
390
390
|
"Unable to write into launch configuration file because the file has unsaved changes. Please save it first and then try again."
|
|
391
391
|
);
|
|
392
392
|
}
|
|
393
393
|
if (operation.workspaceStandAloneConfigurationKey === MCP_CONFIGURATION_KEY) {
|
|
394
394
|
return localize(
|
|
395
|
-
|
|
395
|
+
12903,
|
|
396
396
|
"Unable to write into MCP configuration file because the file has unsaved changes. Please save it first and then try again."
|
|
397
397
|
);
|
|
398
398
|
}
|
|
399
399
|
switch (target) {
|
|
400
400
|
case EditableConfigurationTarget.USER_LOCAL:
|
|
401
401
|
return localize(
|
|
402
|
-
|
|
402
|
+
12904,
|
|
403
403
|
"Unable to write into user settings because the file has unsaved changes. Please save the user settings file first and then try again."
|
|
404
404
|
);
|
|
405
405
|
case EditableConfigurationTarget.USER_REMOTE:
|
|
406
406
|
return localize(
|
|
407
|
-
|
|
407
|
+
12905,
|
|
408
408
|
"Unable to write into remote user settings because the file has unsaved changes. Please save the remote user settings file first and then try again."
|
|
409
409
|
);
|
|
410
410
|
case EditableConfigurationTarget.WORKSPACE:
|
|
411
411
|
return localize(
|
|
412
|
-
|
|
412
|
+
12906,
|
|
413
413
|
"Unable to write into workspace settings because the file has unsaved changes. Please save the workspace settings file first and then try again."
|
|
414
414
|
);
|
|
415
415
|
case EditableConfigurationTarget.WORKSPACE_FOLDER: {
|
|
@@ -421,7 +421,7 @@ let ConfigurationEditing = class ConfigurationEditing {
|
|
|
421
421
|
}
|
|
422
422
|
}
|
|
423
423
|
return localize(
|
|
424
|
-
|
|
424
|
+
12907,
|
|
425
425
|
"Unable to write into folder settings because the file has unsaved changes. Please save the '{0}' folder settings file first and then try again.",
|
|
426
426
|
workspaceFolderName
|
|
427
427
|
);
|
|
@@ -433,46 +433,46 @@ let ConfigurationEditing = class ConfigurationEditing {
|
|
|
433
433
|
case ConfigurationEditingErrorCode.ERROR_CONFIGURATION_FILE_MODIFIED_SINCE:
|
|
434
434
|
if (operation.workspaceStandAloneConfigurationKey === TASKS_CONFIGURATION_KEY) {
|
|
435
435
|
return localize(
|
|
436
|
-
|
|
436
|
+
12908,
|
|
437
437
|
"Unable to write into tasks configuration file because the content of the file is newer."
|
|
438
438
|
);
|
|
439
439
|
}
|
|
440
440
|
if (operation.workspaceStandAloneConfigurationKey === LAUNCH_CONFIGURATION_KEY) {
|
|
441
441
|
return localize(
|
|
442
|
-
|
|
442
|
+
12909,
|
|
443
443
|
"Unable to write into launch configuration file because the content of the file is newer."
|
|
444
444
|
);
|
|
445
445
|
}
|
|
446
446
|
if (operation.workspaceStandAloneConfigurationKey === MCP_CONFIGURATION_KEY) {
|
|
447
447
|
return localize(
|
|
448
|
-
|
|
448
|
+
12910,
|
|
449
449
|
"Unable to write into MCP configuration file because the content of the file is newer."
|
|
450
450
|
);
|
|
451
451
|
}
|
|
452
452
|
switch (target) {
|
|
453
453
|
case EditableConfigurationTarget.USER_LOCAL:
|
|
454
454
|
return localize(
|
|
455
|
-
|
|
455
|
+
12911,
|
|
456
456
|
"Unable to write into user settings because the content of the file is newer."
|
|
457
457
|
);
|
|
458
458
|
case EditableConfigurationTarget.USER_REMOTE:
|
|
459
459
|
return localize(
|
|
460
|
-
|
|
460
|
+
12912,
|
|
461
461
|
"Unable to write into remote user settings because the content of the file is newer."
|
|
462
462
|
);
|
|
463
463
|
case EditableConfigurationTarget.WORKSPACE:
|
|
464
464
|
return localize(
|
|
465
|
-
|
|
465
|
+
12913,
|
|
466
466
|
"Unable to write into workspace settings because the content of the file is newer."
|
|
467
467
|
);
|
|
468
468
|
case EditableConfigurationTarget.WORKSPACE_FOLDER:
|
|
469
469
|
return localize(
|
|
470
|
-
|
|
470
|
+
12914,
|
|
471
471
|
"Unable to write into folder settings because the content of the file is newer."
|
|
472
472
|
);
|
|
473
473
|
}
|
|
474
474
|
case ConfigurationEditingErrorCode.ERROR_INTERNAL: return localize(
|
|
475
|
-
|
|
475
|
+
12915,
|
|
476
476
|
"Unable to write to {0} because of an internal error.",
|
|
477
477
|
this.stringifyTarget(target)
|
|
478
478
|
);
|
|
@@ -481,13 +481,13 @@ let ConfigurationEditing = class ConfigurationEditing {
|
|
|
481
481
|
stringifyTarget(target) {
|
|
482
482
|
switch (target) {
|
|
483
483
|
case EditableConfigurationTarget.USER_LOCAL:
|
|
484
|
-
return localize(
|
|
484
|
+
return localize(12916, "User Settings");
|
|
485
485
|
case EditableConfigurationTarget.USER_REMOTE:
|
|
486
|
-
return localize(
|
|
486
|
+
return localize(12917, "Remote User Settings");
|
|
487
487
|
case EditableConfigurationTarget.WORKSPACE:
|
|
488
|
-
return localize(
|
|
488
|
+
return localize(12918, "Workspace Settings");
|
|
489
489
|
case EditableConfigurationTarget.WORKSPACE_FOLDER:
|
|
490
|
-
return localize(
|
|
490
|
+
return localize(12919, "Folder Settings");
|
|
491
491
|
default:
|
|
492
492
|
return '';
|
|
493
493
|
}
|
|
@@ -128,7 +128,7 @@ class BaseConfigurationResolverService extends AbstractVariableResolverService {
|
|
|
128
128
|
if (!isUndefinedOrNull(value)) {
|
|
129
129
|
if (typeof value !== 'string') {
|
|
130
130
|
throw ( new VariableError(VariableKind.Command, ( localize(
|
|
131
|
-
|
|
131
|
+
12921,
|
|
132
132
|
"Cannot substitute command variable '{0}' because command did not return a result of type string.",
|
|
133
133
|
commandId
|
|
134
134
|
))));
|
|
@@ -213,7 +213,7 @@ class BaseConfigurationResolverService extends AbstractVariableResolverService {
|
|
|
213
213
|
async showUserInput(section, variable, inputInfos, variableToCommandMap) {
|
|
214
214
|
if (!inputInfos) {
|
|
215
215
|
throw ( new VariableError(VariableKind.Input, ( localize(
|
|
216
|
-
|
|
216
|
+
12922,
|
|
217
217
|
"Variable '{0}' must be defined in an '{1}' section of the debug or task configuration.",
|
|
218
218
|
variable,
|
|
219
219
|
'inputs'
|
|
@@ -223,7 +223,7 @@ class BaseConfigurationResolverService extends AbstractVariableResolverService {
|
|
|
223
223
|
if (info) {
|
|
224
224
|
const missingAttribute = (attrName) => {
|
|
225
225
|
throw ( new VariableError(VariableKind.Input, ( localize(
|
|
226
|
-
|
|
226
|
+
12923,
|
|
227
227
|
"Input variable '{0}' is of type '{1}' and must include '{2}'.",
|
|
228
228
|
variable,
|
|
229
229
|
info.type,
|
|
@@ -273,7 +273,7 @@ class BaseConfigurationResolverService extends AbstractVariableResolverService {
|
|
|
273
273
|
};
|
|
274
274
|
const topValue = variableToCommandMap?.[`input:${variable}`] ?? previousPickedValue ?? info.default;
|
|
275
275
|
if (value === info.default) {
|
|
276
|
-
item.description = ( localize(
|
|
276
|
+
item.description = ( localize(12924, "(Default)"));
|
|
277
277
|
picks.unshift(item);
|
|
278
278
|
}
|
|
279
279
|
else if (value === topValue) {
|
|
@@ -302,7 +302,7 @@ class BaseConfigurationResolverService extends AbstractVariableResolverService {
|
|
|
302
302
|
return { value: result, input: info };
|
|
303
303
|
}
|
|
304
304
|
throw ( new VariableError(VariableKind.Input, ( localize(
|
|
305
|
-
|
|
305
|
+
12925,
|
|
306
306
|
"Cannot substitute input variable '{0}' because command '{1}' did not return a result of type string.",
|
|
307
307
|
variable,
|
|
308
308
|
info.command
|
|
@@ -311,14 +311,14 @@ class BaseConfigurationResolverService extends AbstractVariableResolverService {
|
|
|
311
311
|
}
|
|
312
312
|
default:
|
|
313
313
|
throw ( new VariableError(VariableKind.Input, ( localize(
|
|
314
|
-
|
|
314
|
+
12926,
|
|
315
315
|
"Input variable '{0}' can only be of type 'promptString', 'pickString', or 'command'.",
|
|
316
316
|
variable
|
|
317
317
|
))));
|
|
318
318
|
}
|
|
319
319
|
}
|
|
320
320
|
throw ( new VariableError(VariableKind.Input, ( localize(
|
|
321
|
-
|
|
321
|
+
12927,
|
|
322
322
|
"Undefined input variable '{0}' encountered. Remove or define '{0}' to continue.",
|
|
323
323
|
variable
|
|
324
324
|
))));
|
package/vscode/src/vs/workbench/services/workspaces/browser/abstractWorkspaceEditingService.js
CHANGED
|
@@ -55,8 +55,8 @@ let AbstractWorkspaceEditingService = class AbstractWorkspaceEditingService exte
|
|
|
55
55
|
availableFileSystems.unshift(Schemas.vscodeRemote);
|
|
56
56
|
}
|
|
57
57
|
let workspacePath = await this.fileDialogService.showSaveDialog({
|
|
58
|
-
saveLabel: ( localize(
|
|
59
|
-
title: ( localize(
|
|
58
|
+
saveLabel: ( localize(13776, "Save")),
|
|
59
|
+
title: ( localize(13777, "Save Workspace")),
|
|
60
60
|
filters: WORKSPACE_FILTER,
|
|
61
61
|
defaultUri: joinPath(await this.fileDialogService.defaultWorkspacePath(), this.getNewWorkspaceName()),
|
|
62
62
|
availableFileSystems
|
|
@@ -255,14 +255,14 @@ let AbstractWorkspaceEditingService = class AbstractWorkspaceEditingService exte
|
|
|
255
255
|
}
|
|
256
256
|
onInvalidWorkspaceConfigurationFileError() {
|
|
257
257
|
const message = ( localize(
|
|
258
|
-
|
|
258
|
+
13778,
|
|
259
259
|
"Unable to write into workspace configuration file. Please open the file to correct errors/warnings in it and try again."
|
|
260
260
|
));
|
|
261
261
|
this.askToOpenWorkspaceConfigurationFile(message);
|
|
262
262
|
}
|
|
263
263
|
askToOpenWorkspaceConfigurationFile(message) {
|
|
264
264
|
this.notificationService.prompt(Severity.Error, message, [{
|
|
265
|
-
label: ( localize(
|
|
265
|
+
label: ( localize(13779, "Open Workspace Configuration")),
|
|
266
266
|
run: () => this.commandService.executeCommand('workbench.action.openWorkspaceConfigFile')
|
|
267
267
|
}]);
|
|
268
268
|
}
|