@codingame/monaco-vscode-debug-service-override 4.5.1 → 4.5.2
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 +2 -2
- package/vscode/src/vs/platform/debug/common/extensionHostDebugIpc.js +2 -2
- package/vscode/src/vs/workbench/contrib/debug/browser/callStackView.js +105 -150
- package/vscode/src/vs/workbench/contrib/debug/browser/debug.contribution.js +258 -529
- package/vscode/src/vs/workbench/contrib/debug/browser/debugActionViewItems.js +28 -48
- package/vscode/src/vs/workbench/contrib/debug/browser/debugAdapterManager.js +44 -71
- package/vscode/src/vs/workbench/contrib/debug/browser/debugCommands.js +84 -163
- package/vscode/src/vs/workbench/contrib/debug/browser/debugConfigurationManager.js +116 -120
- package/vscode/src/vs/workbench/contrib/debug/browser/debugConsoleQuickAccess.js +7 -10
- package/vscode/src/vs/workbench/contrib/debug/browser/debugEditorActions.js +78 -140
- package/vscode/src/vs/workbench/contrib/debug/browser/debugEditorContribution.js +72 -75
- package/vscode/src/vs/workbench/contrib/debug/browser/debugHover.js +25 -28
- package/vscode/src/vs/workbench/contrib/debug/browser/debugMemory.js +1 -1
- package/vscode/src/vs/workbench/contrib/debug/browser/debugQuickAccess.js +16 -48
- package/vscode/src/vs/workbench/contrib/debug/browser/debugService.js +140 -132
- package/vscode/src/vs/workbench/contrib/debug/browser/debugSession.js +218 -175
- package/vscode/src/vs/workbench/contrib/debug/browser/debugSessionPicker.js +5 -18
- package/vscode/src/vs/workbench/contrib/debug/browser/debugStatus.js +9 -17
- package/vscode/src/vs/workbench/contrib/debug/browser/debugTaskRunner.js +69 -110
- package/vscode/src/vs/workbench/contrib/debug/browser/debugToolBar.js +68 -53
- package/vscode/src/vs/workbench/contrib/debug/browser/debugViewlet.js +77 -56
- package/vscode/src/vs/workbench/contrib/debug/browser/disassemblyView.js +50 -75
- package/vscode/src/vs/workbench/contrib/debug/browser/exceptionWidget.js +13 -29
- package/vscode/src/vs/workbench/contrib/debug/browser/linkDetector.js +22 -51
- package/vscode/src/vs/workbench/contrib/debug/browser/loadedScriptsView.js +47 -73
- package/vscode/src/vs/workbench/contrib/debug/browser/rawDebugSession.js +60 -76
- package/vscode/src/vs/workbench/contrib/debug/browser/repl.js +14 -43
- package/vscode/src/vs/workbench/contrib/debug/browser/replViewer.js +23 -42
- package/vscode/src/vs/workbench/contrib/debug/browser/statusbarColorProvider.js +17 -16
- package/vscode/src/vs/workbench/contrib/debug/browser/variablesView.js +56 -94
- package/vscode/src/vs/workbench/contrib/debug/browser/watchExpressionsView.js +40 -79
- package/vscode/src/vs/workbench/contrib/debug/browser/welcomeView.js +55 -57
- package/vscode/src/vs/workbench/contrib/debug/common/debugContentProvider.js +14 -28
- package/vscode/src/vs/workbench/contrib/debug/common/debugLifecycle.js +12 -15
- package/vscode/src/vs/workbench/contrib/debug/common/debugSchemas.js +71 -146
- package/vscode/src/vs/workbench/contrib/debug/common/debugger.js +92 -111
- package/vscode/src/vs/workbench/contrib/debug/common/loadedScriptsPicker.js +5 -8
- package/vscode/src/vs/workbench/contrib/notebook/browser/contrib/notebookVariables/notebookVariableCommands.js +5 -12
- package/vscode/src/vs/workbench/services/configurationResolver/browser/baseConfigurationResolverService.js +42 -22
|
@@ -16,6 +16,7 @@ import { ContextKeyExpr } from 'vscode/vscode/vs/platform/contextkey/common/cont
|
|
|
16
16
|
import { IContextKeyService } from 'vscode/vscode/vs/platform/contextkey/common/contextkey.service';
|
|
17
17
|
import { filter } from 'vscode/vscode/vs/base/common/objects';
|
|
18
18
|
|
|
19
|
+
const _moduleId = "vs/workbench/contrib/debug/common/debugger";
|
|
19
20
|
let Debugger = class Debugger {
|
|
20
21
|
constructor(adapterManager, dbgContribution, extensionDescription, configurationService, resourcePropertiesService, configurationResolverService, environmentService, debugService, contextKeyService) {
|
|
21
22
|
this.adapterManager = adapterManager;
|
|
@@ -37,7 +38,7 @@ let Debugger = class Debugger {
|
|
|
37
38
|
return source;
|
|
38
39
|
}
|
|
39
40
|
if (isObject(source)) {
|
|
40
|
-
( Object.keys(source)).forEach(key => {
|
|
41
|
+
( (Object.keys(source))).forEach(key => {
|
|
41
42
|
if (key !== '__proto__') {
|
|
42
43
|
if (isObject(destination[key]) && isObject(source[key])) {
|
|
43
44
|
mixin(destination[key], source[key], overwrite, level + 1);
|
|
@@ -78,7 +79,9 @@ let Debugger = class Debugger {
|
|
|
78
79
|
if (da) {
|
|
79
80
|
return Promise.resolve(da);
|
|
80
81
|
}
|
|
81
|
-
throw new Error(
|
|
82
|
+
throw ( (new Error(
|
|
83
|
+
localizeWithPath(_moduleId, 0, "Cannot find debug adapter for type '{0}'.", this.type)
|
|
84
|
+
)));
|
|
82
85
|
}
|
|
83
86
|
async substituteVariables(folder, config) {
|
|
84
87
|
const substitutedConfig = await this.adapterManager.substituteVariables(this.type, folder, config);
|
|
@@ -137,21 +140,13 @@ let Debugger = class Debugger {
|
|
|
137
140
|
if (initialConfigs) {
|
|
138
141
|
initialConfigurations = initialConfigurations.concat(initialConfigs);
|
|
139
142
|
}
|
|
140
|
-
const eol = this.resourcePropertiesService.getEOL(( URI.from({ scheme: Schemas.untitled, path: '1' }))) === '\r\n' ? '\r\n' : '\n';
|
|
141
|
-
const configs = ( JSON.stringify(initialConfigurations, null, '\t').split('\n').map(line => '\t' + line)).join(eol).trim();
|
|
142
|
-
const comment1 = ( localizeWithPath(
|
|
143
|
-
|
|
144
|
-
'launch.config.comment1',
|
|
145
|
-
"Use IntelliSense to learn about possible attributes."
|
|
146
|
-
));
|
|
147
|
-
const comment2 = ( localizeWithPath(
|
|
148
|
-
'vs/workbench/contrib/debug/common/debugger',
|
|
149
|
-
'launch.config.comment2',
|
|
150
|
-
"Hover to view descriptions of existing attributes."
|
|
151
|
-
));
|
|
143
|
+
const eol = this.resourcePropertiesService.getEOL(( (URI.from({ scheme: Schemas.untitled, path: '1' })))) === '\r\n' ? '\r\n' : '\n';
|
|
144
|
+
const configs = ( (JSON.stringify(initialConfigurations, null, '\t').split('\n').map(line => '\t' + line))).join(eol).trim();
|
|
145
|
+
const comment1 = ( localizeWithPath(_moduleId, 1, "Use IntelliSense to learn about possible attributes."));
|
|
146
|
+
const comment2 = ( localizeWithPath(_moduleId, 2, "Hover to view descriptions of existing attributes."));
|
|
152
147
|
const comment3 = ( localizeWithPath(
|
|
153
|
-
|
|
154
|
-
|
|
148
|
+
_moduleId,
|
|
149
|
+
3,
|
|
155
150
|
"For more information, visit: {0}",
|
|
156
151
|
'https://go.microsoft.com/fwlink/?linkid=830387'
|
|
157
152
|
));
|
|
@@ -166,7 +161,7 @@ let Debugger = class Debugger {
|
|
|
166
161
|
].join(eol);
|
|
167
162
|
const editorConfig = this.configurationService.getValue();
|
|
168
163
|
if (editorConfig.editor && editorConfig.editor.insertSpaces) {
|
|
169
|
-
content = content.replace(( new RegExp('\t', 'g')), ' '.repeat(editorConfig.editor.tabSize));
|
|
164
|
+
content = content.replace(( (new RegExp('\t', 'g'))), ' '.repeat(editorConfig.editor.tabSize));
|
|
170
165
|
}
|
|
171
166
|
return Promise.resolve(content);
|
|
172
167
|
}
|
|
@@ -189,103 +184,89 @@ let Debugger = class Debugger {
|
|
|
189
184
|
if (!this.debuggerContribution.configurationAttributes) {
|
|
190
185
|
return null;
|
|
191
186
|
}
|
|
192
|
-
return (
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
attributes.properties
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
'
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
'node2NotSupported',
|
|
223
|
-
"\"node2\" is no longer supported, use \"node\" instead and set the \"protocol\" attribute to \"inspector\"."
|
|
224
|
-
))
|
|
225
|
-
};
|
|
226
|
-
properties['request'] = {
|
|
227
|
-
enum: [request],
|
|
228
|
-
description: ( localizeWithPath(
|
|
229
|
-
'vs/workbench/contrib/debug/common/debugger',
|
|
230
|
-
'debugRequest',
|
|
231
|
-
"Request type of configuration. Can be \"launch\" or \"attach\"."
|
|
232
|
-
)),
|
|
233
|
-
};
|
|
234
|
-
for (const prop in definitions['common'].properties) {
|
|
235
|
-
properties[prop] = {
|
|
236
|
-
$ref: `#/definitions/common/properties/${prop}`
|
|
187
|
+
return (
|
|
188
|
+
(( (Object.keys(this.debuggerContribution.configurationAttributes))).map(request => {
|
|
189
|
+
const definitionId = `${this.type}:${request}`;
|
|
190
|
+
const platformSpecificDefinitionId = `${this.type}:${request}:platform`;
|
|
191
|
+
const attributes = this.debuggerContribution.configurationAttributes[request];
|
|
192
|
+
const defaultRequired = ['name', 'type', 'request'];
|
|
193
|
+
attributes.required = attributes.required && attributes.required.length ? defaultRequired.concat(attributes.required) : defaultRequired;
|
|
194
|
+
attributes.additionalProperties = false;
|
|
195
|
+
attributes.type = 'object';
|
|
196
|
+
if (!attributes.properties) {
|
|
197
|
+
attributes.properties = {};
|
|
198
|
+
}
|
|
199
|
+
const properties = attributes.properties;
|
|
200
|
+
properties['type'] = {
|
|
201
|
+
enum: [this.type],
|
|
202
|
+
enumDescriptions: [this.label],
|
|
203
|
+
description: ( localizeWithPath(_moduleId, 4, "Type of configuration.")),
|
|
204
|
+
pattern: '^(?!node2)',
|
|
205
|
+
deprecationMessage: this.debuggerContribution.deprecated || (this.enabled ? undefined : debuggerDisabledMessage(this.type)),
|
|
206
|
+
doNotSuggest: !!this.debuggerContribution.deprecated,
|
|
207
|
+
errorMessage: ( localizeWithPath(
|
|
208
|
+
_moduleId,
|
|
209
|
+
5,
|
|
210
|
+
"The debug type is not recognized. Make sure that you have a corresponding debug extension installed and that it is enabled."
|
|
211
|
+
)),
|
|
212
|
+
patternErrorMessage: ( localizeWithPath(
|
|
213
|
+
_moduleId,
|
|
214
|
+
6,
|
|
215
|
+
"\"node2\" is no longer supported, use \"node\" instead and set the \"protocol\" attribute to \"inspector\"."
|
|
216
|
+
))
|
|
237
217
|
};
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
...properties,
|
|
251
|
-
...{
|
|
252
|
-
windows: {
|
|
253
|
-
$ref: `#/definitions/${platformSpecificDefinitionId}`,
|
|
254
|
-
description: ( localizeWithPath(
|
|
255
|
-
'vs/workbench/contrib/debug/common/debugger',
|
|
256
|
-
'debugWindowsConfiguration',
|
|
257
|
-
"Windows specific launch configuration attributes."
|
|
258
|
-
)),
|
|
259
|
-
},
|
|
260
|
-
osx: {
|
|
261
|
-
$ref: `#/definitions/${platformSpecificDefinitionId}`,
|
|
262
|
-
description: ( localizeWithPath(
|
|
263
|
-
'vs/workbench/contrib/debug/common/debugger',
|
|
264
|
-
'debugOSXConfiguration',
|
|
265
|
-
"OS X specific launch configuration attributes."
|
|
266
|
-
)),
|
|
267
|
-
},
|
|
268
|
-
linux: {
|
|
269
|
-
$ref: `#/definitions/${platformSpecificDefinitionId}`,
|
|
270
|
-
description: ( localizeWithPath(
|
|
271
|
-
'vs/workbench/contrib/debug/common/debugger',
|
|
272
|
-
'debugLinuxConfiguration',
|
|
273
|
-
"Linux specific launch configuration attributes."
|
|
274
|
-
)),
|
|
275
|
-
}
|
|
218
|
+
properties['request'] = {
|
|
219
|
+
enum: [request],
|
|
220
|
+
description: ( localizeWithPath(
|
|
221
|
+
_moduleId,
|
|
222
|
+
7,
|
|
223
|
+
"Request type of configuration. Can be \"launch\" or \"attach\"."
|
|
224
|
+
)),
|
|
225
|
+
};
|
|
226
|
+
for (const prop in definitions['common'].properties) {
|
|
227
|
+
properties[prop] = {
|
|
228
|
+
$ref: `#/definitions/common/properties/${prop}`
|
|
229
|
+
};
|
|
276
230
|
}
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
231
|
+
( (Object.keys(properties))).forEach(name => {
|
|
232
|
+
applyDeprecatedVariableMessage(properties[name]);
|
|
233
|
+
});
|
|
234
|
+
definitions[definitionId] = { ...attributes };
|
|
235
|
+
definitions[platformSpecificDefinitionId] = {
|
|
236
|
+
type: 'object',
|
|
237
|
+
additionalProperties: false,
|
|
238
|
+
properties: filter(properties, key => key !== 'type' && key !== 'request' && key !== 'name')
|
|
239
|
+
};
|
|
240
|
+
const attributesCopy = { ...attributes };
|
|
241
|
+
attributesCopy.properties = {
|
|
242
|
+
...properties,
|
|
243
|
+
...{
|
|
244
|
+
windows: {
|
|
245
|
+
$ref: `#/definitions/${platformSpecificDefinitionId}`,
|
|
246
|
+
description: ( localizeWithPath(_moduleId, 8, "Windows specific launch configuration attributes.")),
|
|
247
|
+
},
|
|
248
|
+
osx: {
|
|
249
|
+
$ref: `#/definitions/${platformSpecificDefinitionId}`,
|
|
250
|
+
description: ( localizeWithPath(_moduleId, 9, "OS X specific launch configuration attributes.")),
|
|
251
|
+
},
|
|
252
|
+
linux: {
|
|
253
|
+
$ref: `#/definitions/${platformSpecificDefinitionId}`,
|
|
254
|
+
description: ( localizeWithPath(_moduleId, 10, "Linux specific launch configuration attributes.")),
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
};
|
|
258
|
+
return attributesCopy;
|
|
259
|
+
}))
|
|
260
|
+
);
|
|
280
261
|
}
|
|
281
262
|
};
|
|
282
|
-
Debugger = ( __decorate([
|
|
283
|
-
( __param(3, IConfigurationService)),
|
|
284
|
-
( __param(4, ITextResourcePropertiesService)),
|
|
285
|
-
( __param(5, IConfigurationResolverService)),
|
|
286
|
-
( __param(6, IWorkbenchEnvironmentService)),
|
|
287
|
-
( __param(7, IDebugService)),
|
|
288
|
-
( __param(8, IContextKeyService))
|
|
289
|
-
], Debugger));
|
|
263
|
+
Debugger = ( (__decorate([
|
|
264
|
+
( (__param(3, IConfigurationService))),
|
|
265
|
+
( (__param(4, ITextResourcePropertiesService))),
|
|
266
|
+
( (__param(5, IConfigurationResolverService))),
|
|
267
|
+
( (__param(6, IWorkbenchEnvironmentService))),
|
|
268
|
+
( (__param(7, IDebugService))),
|
|
269
|
+
( (__param(8, IContextKeyService)))
|
|
270
|
+
], Debugger)));
|
|
290
271
|
|
|
291
272
|
export { Debugger };
|
|
@@ -10,6 +10,7 @@ import { DisposableStore } from 'vscode/vscode/vs/base/common/lifecycle';
|
|
|
10
10
|
import { dirname } from 'vscode/vscode/vs/base/common/resources';
|
|
11
11
|
import { ILabelService } from 'vscode/vscode/vs/platform/label/common/label.service';
|
|
12
12
|
|
|
13
|
+
const _moduleId = "vs/workbench/contrib/debug/common/loadedScriptsPicker";
|
|
13
14
|
async function showLoadedScriptMenu(accessor) {
|
|
14
15
|
const quickInputService = accessor.get(IQuickInputService);
|
|
15
16
|
const debugService = accessor.get(IDebugService);
|
|
@@ -18,15 +19,11 @@ async function showLoadedScriptMenu(accessor) {
|
|
|
18
19
|
const modelService = accessor.get(IModelService);
|
|
19
20
|
const languageService = accessor.get(ILanguageService);
|
|
20
21
|
const labelService = accessor.get(ILabelService);
|
|
21
|
-
const localDisposableStore = ( new DisposableStore());
|
|
22
|
+
const localDisposableStore = ( (new DisposableStore()));
|
|
22
23
|
const quickPick = quickInputService.createQuickPick();
|
|
23
24
|
localDisposableStore.add(quickPick);
|
|
24
25
|
quickPick.matchOnLabel = quickPick.matchOnDescription = quickPick.matchOnDetail = quickPick.sortByLabel = false;
|
|
25
|
-
quickPick.placeholder = ( localizeWithPath(
|
|
26
|
-
'vs/workbench/contrib/debug/common/loadedScriptsPicker',
|
|
27
|
-
'moveFocusedView.selectView',
|
|
28
|
-
"Search loaded scripts by name"
|
|
29
|
-
));
|
|
26
|
+
quickPick.placeholder = ( localizeWithPath(_moduleId, 0, "Search loaded scripts by name"));
|
|
30
27
|
quickPick.items = await _getPicks(quickPick.value, sessions, editorService, modelService, languageService, labelService);
|
|
31
28
|
localDisposableStore.add(quickPick.onDidChangeValue(async () => {
|
|
32
29
|
quickPick.items = await _getPicks(quickPick.value, sessions, editorService, modelService, languageService, labelService);
|
|
@@ -53,9 +50,9 @@ async function _getPicksFromSession(session, filter, editorService, modelService
|
|
|
53
50
|
}
|
|
54
51
|
async function _getPicks(filter, sessions, editorService, modelService, languageService, labelService) {
|
|
55
52
|
const loadedScriptPicks = [];
|
|
56
|
-
const picks = await Promise.all(( sessions.map(
|
|
53
|
+
const picks = await Promise.all(( (sessions.map(
|
|
57
54
|
(session) => _getPicksFromSession(session, filter, editorService, modelService, languageService, labelService)
|
|
58
|
-
)));
|
|
55
|
+
))));
|
|
59
56
|
for (const row of picks) {
|
|
60
57
|
for (const elem of row) {
|
|
61
58
|
loadedScriptPicks.push(elem);
|
|
@@ -6,12 +6,9 @@ import { IClipboardService } from 'vscode/vscode/vs/platform/clipboard/common/cl
|
|
|
6
6
|
import { INotebookKernelService } from 'vscode/vscode/vs/workbench/contrib/notebook/common/notebookKernelService.service';
|
|
7
7
|
import { INotebookService } from 'vscode/vscode/vs/workbench/contrib/notebook/common/notebookService.service';
|
|
8
8
|
|
|
9
|
+
const _moduleId = "vs/workbench/contrib/notebook/browser/contrib/notebookVariables/notebookVariableCommands";
|
|
9
10
|
const COPY_NOTEBOOK_VARIABLE_VALUE_ID = 'workbench.debug.viewlet.action.copyWorkspaceVariableValue';
|
|
10
|
-
const COPY_NOTEBOOK_VARIABLE_VALUE_LABEL = ( localizeWithPath(
|
|
11
|
-
'vs/workbench/contrib/notebook/browser/contrib/notebookVariables/notebookVariableCommands',
|
|
12
|
-
'copyWorkspaceVariableValue',
|
|
13
|
-
"Copy Value"
|
|
14
|
-
));
|
|
11
|
+
const COPY_NOTEBOOK_VARIABLE_VALUE_LABEL = ( localizeWithPath(_moduleId, 0, "Copy Value"));
|
|
15
12
|
registerAction2(class extends Action2 {
|
|
16
13
|
constructor() {
|
|
17
14
|
super({
|
|
@@ -31,11 +28,7 @@ registerAction2(class extends Action2 {
|
|
|
31
28
|
constructor() {
|
|
32
29
|
super({
|
|
33
30
|
id: '_executeNotebookVariableProvider',
|
|
34
|
-
title: ( localizeWithPath(
|
|
35
|
-
'vs/workbench/contrib/notebook/browser/contrib/notebookVariables/notebookVariableCommands',
|
|
36
|
-
'executeNotebookVariableProvider',
|
|
37
|
-
"Execute Notebook Variable Provider"
|
|
38
|
-
)),
|
|
31
|
+
title: ( localizeWithPath(_moduleId, 1, "Execute Notebook Variable Provider")),
|
|
39
32
|
f1: false,
|
|
40
33
|
});
|
|
41
34
|
}
|
|
@@ -53,8 +46,8 @@ registerAction2(class extends Action2 {
|
|
|
53
46
|
const selectedKernel = notebookKernelService.getMatchingKernel(notebookTextModel).selected;
|
|
54
47
|
if (selectedKernel && selectedKernel.hasVariableProvider) {
|
|
55
48
|
const variables = selectedKernel.provideVariables(notebookTextModel.uri, undefined, 'named', 0, CancellationToken.None);
|
|
56
|
-
return await ( variables
|
|
57
|
-
.map(variable => { return variable; }))
|
|
49
|
+
return await ( (variables
|
|
50
|
+
.map(variable => { return variable; })))
|
|
58
51
|
.toPromise();
|
|
59
52
|
}
|
|
60
53
|
return [];
|
|
@@ -6,6 +6,7 @@ import { localizeWithPath } from 'vscode/vscode/vs/nls';
|
|
|
6
6
|
import { EditorResourceAccessor, SideBySideEditor } from 'vscode/vscode/vs/workbench/common/editor';
|
|
7
7
|
import { AbstractVariableResolverService } from 'vscode/vscode/vs/workbench/services/configurationResolver/common/variableResolver';
|
|
8
8
|
|
|
9
|
+
const _moduleId = "vs/workbench/services/configurationResolver/browser/baseConfigurationResolverService";
|
|
9
10
|
class BaseConfigurationResolverService extends AbstractVariableResolverService {
|
|
10
11
|
static { this.INPUT_OR_COMMAND_VARIABLES_PATTERN = /\${((input|command):(.*?))}/g; }
|
|
11
12
|
constructor(context, envVariablesPromise, editorService, configurationService, commandService, workspaceContextService, quickInputService, labelService, pathService, extensionService) {
|
|
@@ -89,7 +90,7 @@ class BaseConfigurationResolverService extends AbstractVariableResolverService {
|
|
|
89
90
|
this.quickInputService = quickInputService;
|
|
90
91
|
this.labelService = labelService;
|
|
91
92
|
this.pathService = pathService;
|
|
92
|
-
this.userInputAccessQueue = ( new Queue());
|
|
93
|
+
this.userInputAccessQueue = ( (new Queue()));
|
|
93
94
|
}
|
|
94
95
|
async resolveWithInteractionReplace(folder, config, section, variables, target) {
|
|
95
96
|
config = await this.resolveAnyAsync(folder, config);
|
|
@@ -165,12 +166,17 @@ class BaseConfigurationResolverService extends AbstractVariableResolverService {
|
|
|
165
166
|
const commandId = (variableToCommandMap ? variableToCommandMap[name] : undefined) || name;
|
|
166
167
|
result = await this.commandService.executeCommand(commandId, configuration);
|
|
167
168
|
if (typeof result !== 'string' && !isUndefinedOrNull(result)) {
|
|
168
|
-
throw new Error(localizeWithPath(
|
|
169
|
+
throw ( (new Error(localizeWithPath(
|
|
170
|
+
_moduleId,
|
|
171
|
+
0,
|
|
172
|
+
"Cannot substitute command variable '{0}' because command did not return a result of type string.",
|
|
173
|
+
commandId
|
|
174
|
+
))));
|
|
169
175
|
}
|
|
170
176
|
break;
|
|
171
177
|
}
|
|
172
178
|
default:
|
|
173
|
-
if (( this._contributedVariables.has(variable))) {
|
|
179
|
+
if (( (this._contributedVariables.has(variable)))) {
|
|
174
180
|
result = await this._contributedVariables.get(variable)();
|
|
175
181
|
}
|
|
176
182
|
}
|
|
@@ -194,7 +200,7 @@ class BaseConfigurationResolverService extends AbstractVariableResolverService {
|
|
|
194
200
|
}
|
|
195
201
|
}
|
|
196
202
|
}
|
|
197
|
-
for (const contributed of ( this._contributedVariables.keys())) {
|
|
203
|
+
for (const contributed of ( (this._contributedVariables.keys()))) {
|
|
198
204
|
if ((variables.indexOf(contributed) < 0) && (object.indexOf('${' + contributed + '}') >= 0)) {
|
|
199
205
|
variables.push(contributed);
|
|
200
206
|
}
|
|
@@ -206,25 +212,32 @@ class BaseConfigurationResolverService extends AbstractVariableResolverService {
|
|
|
206
212
|
}
|
|
207
213
|
}
|
|
208
214
|
else if (object) {
|
|
209
|
-
for (const value of ( Object.values(object))) {
|
|
215
|
+
for (const value of ( (Object.values(object)))) {
|
|
210
216
|
this.findVariables(value, variables);
|
|
211
217
|
}
|
|
212
218
|
}
|
|
213
219
|
}
|
|
214
220
|
showUserInput(variable, inputInfos) {
|
|
215
221
|
if (!inputInfos) {
|
|
216
|
-
return Promise.reject(( new Error(( localizeWithPath(
|
|
217
|
-
|
|
218
|
-
|
|
222
|
+
return Promise.reject(( (new Error(( localizeWithPath(
|
|
223
|
+
_moduleId,
|
|
224
|
+
1,
|
|
219
225
|
"Variable '{0}' must be defined in an '{1}' section of the debug or task configuration.",
|
|
220
226
|
variable,
|
|
221
227
|
'input'
|
|
222
|
-
)))));
|
|
228
|
+
))))));
|
|
223
229
|
}
|
|
224
230
|
const info = inputInfos.filter(item => item.id === variable).pop();
|
|
225
231
|
if (info) {
|
|
226
232
|
const missingAttribute = (attrName) => {
|
|
227
|
-
throw new Error(localizeWithPath(
|
|
233
|
+
throw ( (new Error(localizeWithPath(
|
|
234
|
+
_moduleId,
|
|
235
|
+
2,
|
|
236
|
+
"Input variable '{0}' is of type '{1}' and must include '{2}'.",
|
|
237
|
+
variable,
|
|
238
|
+
info.type,
|
|
239
|
+
attrName
|
|
240
|
+
))));
|
|
228
241
|
};
|
|
229
242
|
switch (info.type) {
|
|
230
243
|
case 'promptString': {
|
|
@@ -256,7 +269,7 @@ class BaseConfigurationResolverService extends AbstractVariableResolverService {
|
|
|
256
269
|
else {
|
|
257
270
|
missingAttribute('options');
|
|
258
271
|
}
|
|
259
|
-
const picks = ( new Array());
|
|
272
|
+
const picks = ( (new Array()));
|
|
260
273
|
for (const pickOption of info.options) {
|
|
261
274
|
const value = isString(pickOption) ? pickOption : pickOption.value;
|
|
262
275
|
const label = isString(pickOption) ? undefined : pickOption.label;
|
|
@@ -265,11 +278,7 @@ class BaseConfigurationResolverService extends AbstractVariableResolverService {
|
|
|
265
278
|
value: value
|
|
266
279
|
};
|
|
267
280
|
if (value === info.default) {
|
|
268
|
-
item.description = ( localizeWithPath(
|
|
269
|
-
'vs/workbench/services/configurationResolver/browser/baseConfigurationResolverService',
|
|
270
|
-
'inputVariable.defaultInputValue',
|
|
271
|
-
"(Default)"
|
|
272
|
-
));
|
|
281
|
+
item.description = ( localizeWithPath(_moduleId, 3, "(Default)"));
|
|
273
282
|
picks.unshift(item);
|
|
274
283
|
}
|
|
275
284
|
else {
|
|
@@ -292,19 +301,30 @@ class BaseConfigurationResolverService extends AbstractVariableResolverService {
|
|
|
292
301
|
if (typeof result === 'string' || isUndefinedOrNull(result)) {
|
|
293
302
|
return result;
|
|
294
303
|
}
|
|
295
|
-
throw new Error(localizeWithPath(
|
|
304
|
+
throw ( (new Error(localizeWithPath(
|
|
305
|
+
_moduleId,
|
|
306
|
+
4,
|
|
307
|
+
"Cannot substitute input variable '{0}' because command '{1}' did not return a result of type string.",
|
|
308
|
+
variable,
|
|
309
|
+
info.command
|
|
310
|
+
))));
|
|
296
311
|
});
|
|
297
312
|
}
|
|
298
313
|
default:
|
|
299
|
-
throw new Error(localizeWithPath(
|
|
314
|
+
throw ( (new Error(localizeWithPath(
|
|
315
|
+
_moduleId,
|
|
316
|
+
5,
|
|
317
|
+
"Input variable '{0}' can only be of type 'promptString', 'pickString', or 'command'.",
|
|
318
|
+
variable
|
|
319
|
+
))));
|
|
300
320
|
}
|
|
301
321
|
}
|
|
302
|
-
return Promise.reject(( new Error(( localizeWithPath(
|
|
303
|
-
|
|
304
|
-
|
|
322
|
+
return Promise.reject(( (new Error(( localizeWithPath(
|
|
323
|
+
_moduleId,
|
|
324
|
+
6,
|
|
305
325
|
"Undefined input variable '{0}' encountered. Remove or define '{0}' to continue.",
|
|
306
326
|
variable
|
|
307
|
-
)))));
|
|
327
|
+
))))));
|
|
308
328
|
}
|
|
309
329
|
}
|
|
310
330
|
|