@codingame/monaco-vscode-configuration-service-override 19.1.4 → 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 CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@codingame/monaco-vscode-configuration-service-override",
3
- "version": "19.1.4",
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.1.4",
19
- "@codingame/monaco-vscode-422642f2-7e3a-5c1c-9e1e-1d3ef1817346-common": "19.1.4",
20
- "@codingame/monaco-vscode-api": "19.1.4",
21
- "@codingame/monaco-vscode-ce7c734f-7712-563c-9335-d7acb43306af-common": "19.1.4",
22
- "@codingame/monaco-vscode-d987325e-3e05-53aa-b9ff-6f97476f64db-common": "19.1.4",
23
- "@codingame/monaco-vscode-f24e325c-2ce0-5bba-8236-bfc4f53180ab-common": "19.1.4",
24
- "@codingame/monaco-vscode-files-service-override": "19.1.4"
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
- 2542,
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
- 2543,
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(2544, 'Description of the configuration properties.')),
38
+ description: ( localize(2571, 'Description of the configuration properties.')),
39
39
  type: 'object',
40
40
  propertyNames: {
41
41
  pattern: '\\S+',
42
- patternErrorMessage: ( localize(2545, 'Property should not be empty.')),
42
+ patternErrorMessage: ( localize(2572, 'Property should not be empty.')),
43
43
  },
44
44
  additionalProperties: {
45
45
  anyOf: [
46
46
  {
47
- title: ( localize(2546, 'Schema of the configuration property.')),
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(2547, "Configuration that can be configured only in the user settings.")),
58
+ ( localize(2574, "Configuration that can be configured only in the user settings.")),
59
59
  ( localize(
60
- 2548,
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
- 2549,
64
+ 2576,
65
65
  "Configuration that can be configured in the user, remote or workspace settings."
66
66
  )),
67
67
  ( localize(
68
- 2550,
68
+ 2577,
69
69
  "Configuration that can be configured in the user, remote, workspace or folder settings."
70
70
  )),
71
71
  ( localize(
72
- 2551,
72
+ 2578,
73
73
  "Resource configuration that can be configured in language specific settings."
74
74
  )),
75
75
  ( localize(
76
- 2552,
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
- 2553,
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(2554, 'Descriptions for enum values'))
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(2555, 'Descriptions for enum values in the markdown format.'))
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
- 2556,
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(2557, 'The description in the markdown format.'))
112
+ description: ( localize(2584, 'The description in the markdown format.'))
113
113
  },
114
114
  deprecationMessage: {
115
115
  type: 'string',
116
116
  description: ( localize(
117
- 2558,
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
- 2559,
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(2560, 'The value will be shown in an inputbox.')),
133
- ( localize(2561, 'The value will be shown in a textarea.'))
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
- 2562,
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
- 2563,
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
- 2564,
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
- 2565,
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
- 2566,
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
- 2567,
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(2568, 'Contributes configuration settings.')),
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(2569, "'configuration.title' must be a string")));
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(2570, "'configuration.properties' must be an object")));
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(2571, "Cannot register '{0}'. This property is already registered.", key)));
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(2572, "configuration.properties property '{0}' must be an object", key)));
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
- 2573,
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(2574, "List of folders to be loaded in the workspace.")),
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
- 2575,
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(2576, "An optional name for the folder. "))
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(2577, "URI of the folder"))
376
+ description: ( localize(2604, "URI of the folder"))
372
377
  },
373
378
  name: {
374
379
  type: 'string',
375
- description: ( localize(2576, "An optional name for the folder. "))
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(2578, "Workspace settings")),
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(2579, "Workspace launch configurations")),
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(2580, "Workspace task configurations")),
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(2581, "Model Context Protocol server configurations")),
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(2582, "Workspace extensions")),
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(2583, "The remote server where the workspace is located.")),
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(2584, "A transient workspace will disappear when restarting or reloading.")),
433
+ description: ( localize(2611, "A transient workspace will disappear when restarting or reloading.")),
429
434
  }
430
435
  },
431
- errorMessage: ( localize(2585, "Unknown workspace configuration property"))
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(2586, "ID")), ( localize(2587, "Description")), ( localize(2588, "Default"))];
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(2589, "Settings")),
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
- 12463,
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(12464, "Open Workspace")),
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
- 12465,
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(12466, "Select Workspace")),
72
+ label: ( localize(12716, "Select Workspace")),
73
73
  run: () => {
74
- this.quickInputService.pick(( workspaces.map(workspace => ({ label: workspace }))), { placeHolder: ( localize(12467, "Select a workspace to open")) }).then(pick => {
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(12464, "Open Workspace")),
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(12468, "This workspace is already open.")));
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(12626, 'Contribute defaults for configurations')),
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
- const tags = schema?.tags;
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(12627, "Configure settings to be applied for all profiles.")),
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
- 12628,
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(12629, "Open Tasks Configuration"))
202
- : operation.workspaceStandAloneConfigurationKey === LAUNCH_CONFIGURATION_KEY ? ( localize(12630, "Open Launch Configuration"))
203
- : operation.workspaceStandAloneConfigurationKey === MCP_CONFIGURATION_KEY ? ( localize(12631, "Open MCP Configuration"))
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(12632, "Open Settings")),
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(12629, "Open Tasks Configuration"))
220
- : operation.workspaceStandAloneConfigurationKey === LAUNCH_CONFIGURATION_KEY ? ( localize(12630, "Open Launch Configuration"))
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(12633, "Save and Retry")),
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(12633, "Save and Retry")),
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(12632, "Open Settings")),
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
- 12634,
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
- 12635,
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
- 12636,
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
- 12637,
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
- 12638,
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
- 12639,
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
- 12640,
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
- 12641,
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
- 12642,
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
- 12643,
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
- 12644,
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
- 12645,
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
- 12646,
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
- 12647,
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
- 12648,
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
- 12649,
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
- 12650,
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
- 12651,
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
- 12652,
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
- 12653,
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
- 12654,
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
- 12655,
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
- 12656,
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
- 12657,
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
- 12658,
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
- 12659,
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
- 12660,
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
- 12661,
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
- 12662,
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
- 12663,
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
- 12664,
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
- 12665,
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(12666, "User Settings");
484
+ return localize(12916, "User Settings");
485
485
  case EditableConfigurationTarget.USER_REMOTE:
486
- return localize(12667, "Remote User Settings");
486
+ return localize(12917, "Remote User Settings");
487
487
  case EditableConfigurationTarget.WORKSPACE:
488
- return localize(12668, "Workspace Settings");
488
+ return localize(12918, "Workspace Settings");
489
489
  case EditableConfigurationTarget.WORKSPACE_FOLDER:
490
- return localize(12669, "Folder Settings");
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
- 12671,
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
- 12672,
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
- 12673,
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(12674, "(Default)"));
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
- 12675,
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
- 12676,
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
- 12677,
321
+ 12927,
322
322
  "Undefined input variable '{0}' encountered. Remove or define '{0}' to continue.",
323
323
  variable
324
324
  ))));
@@ -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(13524, "Save")),
59
- title: ( localize(13525, "Save Workspace")),
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
- 13526,
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(13527, "Open Workspace Configuration")),
265
+ label: ( localize(13779, "Open Workspace Configuration")),
266
266
  run: () => this.commandService.executeCommand('workbench.action.openWorkspaceConfigFile')
267
267
  }]);
268
268
  }