@codingame/monaco-vscode-debug-service-override 8.0.4 → 9.0.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/workbench/contrib/debug/browser/callStackView.js +16 -16
- package/vscode/src/vs/workbench/contrib/debug/browser/debug.contribution.js +107 -107
- package/vscode/src/vs/workbench/contrib/debug/browser/debugActionViewItems.js +6 -6
- package/vscode/src/vs/workbench/contrib/debug/browser/debugAdapterManager.js +49 -16
- package/vscode/src/vs/workbench/contrib/debug/browser/debugConfigurationManager.js +19 -8
- package/vscode/src/vs/workbench/contrib/debug/browser/debugConsoleQuickAccess.js +1 -1
- package/vscode/src/vs/workbench/contrib/debug/browser/debugEditorActions.js +37 -27
- package/vscode/src/vs/workbench/contrib/debug/browser/debugEditorContribution.js +5 -5
- package/vscode/src/vs/workbench/contrib/debug/browser/debugHover.js +15 -13
- package/vscode/src/vs/workbench/contrib/debug/browser/debugQuickAccess.js +8 -8
- package/vscode/src/vs/workbench/contrib/debug/browser/debugService.js +21 -21
- package/vscode/src/vs/workbench/contrib/debug/browser/debugSession.js +53 -42
- package/vscode/src/vs/workbench/contrib/debug/browser/debugStatus.js +3 -3
- package/vscode/src/vs/workbench/contrib/debug/browser/debugTaskRunner.js +109 -82
- package/vscode/src/vs/workbench/contrib/debug/browser/debugToolBar.js +3 -3
- package/vscode/src/vs/workbench/contrib/debug/browser/debugViewlet.js +5 -5
- package/vscode/src/vs/workbench/contrib/debug/browser/disassemblyView.js +9 -9
- package/vscode/src/vs/workbench/contrib/debug/browser/exceptionWidget.js +6 -6
- package/vscode/src/vs/workbench/contrib/debug/browser/loadedScriptsView.js +7 -7
- package/vscode/src/vs/workbench/contrib/debug/browser/rawDebugSession.js +8 -5
- package/vscode/src/vs/workbench/contrib/debug/browser/repl.js +80 -30
- package/vscode/src/vs/workbench/contrib/debug/browser/replAccessibilityHelp.js +12 -29
- package/vscode/src/vs/workbench/contrib/debug/browser/replAccessibleView.js +7 -12
- package/vscode/src/vs/workbench/contrib/debug/browser/replViewer.js +19 -13
- package/vscode/src/vs/workbench/contrib/debug/browser/runAndDebugAccessibilityHelp.js +29 -18
- package/vscode/src/vs/workbench/contrib/debug/browser/statusbarColorProvider.js +4 -4
- package/vscode/src/vs/workbench/contrib/debug/browser/variablesView.js +11 -12
- package/vscode/src/vs/workbench/contrib/debug/browser/watchExpressionsView.js +21 -20
- package/vscode/src/vs/workbench/contrib/debug/browser/welcomeView.js +7 -7
- package/vscode/src/vs/workbench/contrib/debug/common/debugAccessibilityAnnouncer.js +2 -1
- package/vscode/src/vs/workbench/contrib/debug/common/debugContentProvider.js +3 -3
- package/vscode/src/vs/workbench/contrib/debug/common/debugLifecycle.js +3 -3
- package/vscode/src/vs/workbench/contrib/debug/common/debugSchemas.js +44 -44
- package/vscode/src/vs/workbench/contrib/debug/common/debugger.js +11 -11
- package/vscode/src/vs/workbench/contrib/notebook/browser/contrib/notebookVariables/notebookVariableCommands.js +2 -2
- package/vscode/src/vs/workbench/contrib/debug/browser/linkDetector.js +0 -233
|
@@ -1,40 +1,39 @@
|
|
|
1
1
|
import { __decorate, __param } from 'vscode/external/tslib/tslib.es6.js';
|
|
2
|
-
import {
|
|
2
|
+
import { Action } from 'vscode/vscode/vs/base/common/actions';
|
|
3
|
+
import { disposableTimeout } from 'vscode/vscode/vs/base/common/async';
|
|
4
|
+
import { CancellationTokenSource } from 'vscode/vscode/vs/base/common/cancellation';
|
|
5
|
+
import { createErrorWithActions } from 'vscode/vscode/vs/base/common/errorMessage';
|
|
6
|
+
import { Event, Emitter } from 'vscode/vscode/vs/base/common/event';
|
|
7
|
+
import { DisposableStore } from 'vscode/vscode/vs/base/common/lifecycle';
|
|
3
8
|
import Severity$1 from 'vscode/vscode/vs/base/common/severity';
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
9
|
+
import { localize } from 'vscode/vscode/vs/nls';
|
|
10
|
+
import { ICommandService } from 'vscode/vscode/vs/platform/commands/common/commands.service';
|
|
6
11
|
import { IConfigurationService } from 'vscode/vscode/vs/platform/configuration/common/configuration.service';
|
|
7
|
-
import { TaskEventKind } from 'vscode/vscode/vs/workbench/contrib/tasks/common/tasks';
|
|
8
12
|
import { IDialogService } from 'vscode/vscode/vs/platform/dialogs/common/dialogs.service';
|
|
9
13
|
import { MarkerSeverity } from 'vscode/vscode/vs/platform/markers/common/markers';
|
|
10
14
|
import { IMarkerService } from 'vscode/vscode/vs/platform/markers/common/markers.service';
|
|
11
|
-
import {
|
|
15
|
+
import { ProgressLocation } from 'vscode/vscode/vs/platform/progress/common/progress';
|
|
16
|
+
import { IProgressService } from 'vscode/vscode/vs/platform/progress/common/progress.service';
|
|
12
17
|
import { StorageScope, StorageTarget } from 'vscode/vscode/vs/platform/storage/common/storage';
|
|
13
18
|
import { IStorageService } from 'vscode/vscode/vs/platform/storage/common/storage.service';
|
|
14
|
-
import { createErrorWithActions } from 'vscode/vscode/vs/base/common/errorMessage';
|
|
15
|
-
import { Action } from 'vscode/vscode/vs/base/common/actions';
|
|
16
19
|
import { DEBUG_CONFIGURE_COMMAND_ID, DEBUG_CONFIGURE_LABEL } from 'vscode/vscode/vs/workbench/contrib/debug/browser/debugCommands';
|
|
17
|
-
import {
|
|
20
|
+
import { Markers } from 'vscode/vscode/vs/workbench/contrib/markers/common/markers';
|
|
21
|
+
import { TaskEventKind, CustomTask, ConfiguringTask } from 'vscode/vscode/vs/workbench/contrib/tasks/common/tasks';
|
|
22
|
+
import { ITaskService } from 'vscode/vscode/vs/workbench/contrib/tasks/common/taskService.service';
|
|
23
|
+
import { IViewsService } from 'vscode/vscode/vs/workbench/services/views/common/viewsService.service';
|
|
18
24
|
|
|
19
|
-
|
|
20
|
-
return (listener, thisArgs = null, disposables) => {
|
|
21
|
-
const result = event(e => {
|
|
22
|
-
if (match(e)) {
|
|
23
|
-
result.dispose();
|
|
24
|
-
return listener.call(thisArgs, e);
|
|
25
|
-
}
|
|
26
|
-
}, null, disposables);
|
|
27
|
-
return result;
|
|
28
|
-
};
|
|
29
|
-
}
|
|
25
|
+
const onceFilter = (event, filter) => Event.once(Event.filter(event, filter));
|
|
30
26
|
var TaskRunResult;
|
|
31
27
|
( ((function(TaskRunResult) {
|
|
32
28
|
TaskRunResult[TaskRunResult["Failure"] = 0] = "Failure";
|
|
33
29
|
TaskRunResult[TaskRunResult["Success"] = 1] = "Success";
|
|
34
30
|
})(TaskRunResult || (TaskRunResult = {}))));
|
|
35
31
|
const DEBUG_TASK_ERROR_CHOICE_KEY = 'debug.taskerrorchoice';
|
|
32
|
+
const ABORT_LABEL = ( localize(5771, "Abort"));
|
|
33
|
+
const DEBUG_ANYWAY_LABEL = ( localize(5772, "&&Debug Anyway"));
|
|
34
|
+
const DEBUG_ANYWAY_LABEL_NO_MEMO = ( localize(5773, "Debug Anyway"));
|
|
36
35
|
let DebugTaskRunner = class DebugTaskRunner {
|
|
37
|
-
constructor(taskService, markerService, configurationService, viewsService, dialogService, storageService, commandService) {
|
|
36
|
+
constructor(taskService, markerService, configurationService, viewsService, dialogService, storageService, commandService, progressService) {
|
|
38
37
|
this.taskService = taskService;
|
|
39
38
|
this.markerService = markerService;
|
|
40
39
|
this.configurationService = configurationService;
|
|
@@ -42,16 +41,20 @@ let DebugTaskRunner = class DebugTaskRunner {
|
|
|
42
41
|
this.dialogService = dialogService;
|
|
43
42
|
this.storageService = storageService;
|
|
44
43
|
this.commandService = commandService;
|
|
45
|
-
this.
|
|
44
|
+
this.progressService = progressService;
|
|
45
|
+
this.globalCancellation = ( (new CancellationTokenSource()));
|
|
46
46
|
}
|
|
47
47
|
cancel() {
|
|
48
|
-
this.
|
|
48
|
+
this.globalCancellation.dispose(true);
|
|
49
|
+
this.globalCancellation = ( (new CancellationTokenSource()));
|
|
50
|
+
}
|
|
51
|
+
dispose() {
|
|
52
|
+
this.globalCancellation.dispose(true);
|
|
49
53
|
}
|
|
50
54
|
async runTaskAndCheckErrors(root, taskId) {
|
|
51
55
|
try {
|
|
52
|
-
this.
|
|
53
|
-
|
|
54
|
-
if (this.canceled || (taskSummary && taskSummary.exitCode === undefined)) {
|
|
56
|
+
const taskSummary = await this.runTask(root, taskId, this.globalCancellation.token);
|
|
57
|
+
if (taskSummary && (taskSummary.exitCode === undefined || taskSummary.cancelled)) {
|
|
55
58
|
return TaskRunResult.Failure;
|
|
56
59
|
}
|
|
57
60
|
const errorCount = taskId ? this.markerService.read({ severities: MarkerSeverity.Error, take: 2 }).length : 0;
|
|
@@ -70,17 +73,17 @@ let DebugTaskRunner = class DebugTaskRunner {
|
|
|
70
73
|
}
|
|
71
74
|
const taskLabel = typeof taskId === 'string' ? taskId : taskId ? taskId.name : '';
|
|
72
75
|
const message = errorCount > 1
|
|
73
|
-
? ( localize(
|
|
76
|
+
? ( localize(5774, "Errors exist after running preLaunchTask '{0}'.", taskLabel))
|
|
74
77
|
: errorCount === 1
|
|
75
|
-
? ( localize(
|
|
78
|
+
? ( localize(5775, "Error exists after running preLaunchTask '{0}'.", taskLabel))
|
|
76
79
|
: taskSummary && typeof taskSummary.exitCode === 'number'
|
|
77
80
|
? ( localize(
|
|
78
|
-
|
|
81
|
+
5776,
|
|
79
82
|
"The preLaunchTask '{0}' terminated with exit code {1}.",
|
|
80
83
|
taskLabel,
|
|
81
84
|
taskSummary.exitCode
|
|
82
85
|
))
|
|
83
|
-
: ( localize(
|
|
86
|
+
: ( localize(5777, "The preLaunchTask '{0}' terminated.", taskLabel));
|
|
84
87
|
let DebugChoice;
|
|
85
88
|
( ((function(DebugChoice) {
|
|
86
89
|
DebugChoice[DebugChoice["DebugAnyway"] = 1] = "DebugAnyway";
|
|
@@ -92,20 +95,20 @@ let DebugTaskRunner = class DebugTaskRunner {
|
|
|
92
95
|
message,
|
|
93
96
|
buttons: [
|
|
94
97
|
{
|
|
95
|
-
label:
|
|
98
|
+
label: DEBUG_ANYWAY_LABEL,
|
|
96
99
|
run: () => DebugChoice.DebugAnyway
|
|
97
100
|
},
|
|
98
101
|
{
|
|
99
|
-
label: ( localize(
|
|
102
|
+
label: ( localize(5778, "&&Show Errors")),
|
|
100
103
|
run: () => DebugChoice.ShowErrors
|
|
101
104
|
}
|
|
102
105
|
],
|
|
103
106
|
cancelButton: {
|
|
104
|
-
label:
|
|
107
|
+
label: ABORT_LABEL,
|
|
105
108
|
run: () => DebugChoice.Cancel
|
|
106
109
|
},
|
|
107
110
|
checkbox: {
|
|
108
|
-
label: ( localize(
|
|
111
|
+
label: ( localize(5779, "Remember my choice in user settings")),
|
|
109
112
|
}
|
|
110
113
|
});
|
|
111
114
|
const debugAnyway = result === DebugChoice.DebugAnyway;
|
|
@@ -141,7 +144,7 @@ let DebugTaskRunner = class DebugTaskRunner {
|
|
|
141
144
|
message: err.message,
|
|
142
145
|
buttons: [
|
|
143
146
|
{
|
|
144
|
-
label: ( localize(
|
|
147
|
+
label: ( localize(5772, "&&Debug Anyway")),
|
|
145
148
|
run: () => DebugChoice.DebugAnyway
|
|
146
149
|
},
|
|
147
150
|
{
|
|
@@ -153,7 +156,7 @@ let DebugTaskRunner = class DebugTaskRunner {
|
|
|
153
156
|
run: () => DebugChoice.Cancel
|
|
154
157
|
},
|
|
155
158
|
checkbox: {
|
|
156
|
-
label: ( localize(
|
|
159
|
+
label: ( localize(5780, "Remember my choice for this task"))
|
|
157
160
|
}
|
|
158
161
|
});
|
|
159
162
|
choice = result;
|
|
@@ -168,13 +171,13 @@ let DebugTaskRunner = class DebugTaskRunner {
|
|
|
168
171
|
return choice === DebugChoice.DebugAnyway ? TaskRunResult.Success : TaskRunResult.Failure;
|
|
169
172
|
}
|
|
170
173
|
}
|
|
171
|
-
async runTask(root, taskId) {
|
|
174
|
+
async runTask(root, taskId, token = this.globalCancellation.token) {
|
|
172
175
|
if (!taskId) {
|
|
173
176
|
return Promise.resolve(null);
|
|
174
177
|
}
|
|
175
178
|
if (!root) {
|
|
176
179
|
return Promise.reject(( (new Error(( localize(
|
|
177
|
-
|
|
180
|
+
5781,
|
|
178
181
|
"Task '{0}' can not be referenced from a launch configuration that is in a different workspace folder.",
|
|
179
182
|
typeof taskId === 'string' ? taskId : taskId.type
|
|
180
183
|
))))));
|
|
@@ -182,8 +185,8 @@ let DebugTaskRunner = class DebugTaskRunner {
|
|
|
182
185
|
const task = await this.taskService.getTask(root, taskId);
|
|
183
186
|
if (!task) {
|
|
184
187
|
const errorMessage = typeof taskId === 'string'
|
|
185
|
-
? ( localize(
|
|
186
|
-
: ( localize(
|
|
188
|
+
? ( localize(5782, "Could not find the task '{0}'.", taskId))
|
|
189
|
+
: ( localize(5783, "Could not find the specified task."));
|
|
187
190
|
return Promise.reject(createErrorWithActions(errorMessage, [( (new Action(
|
|
188
191
|
DEBUG_CONFIGURE_COMMAND_ID,
|
|
189
192
|
DEBUG_CONFIGURE_LABEL,
|
|
@@ -193,18 +196,27 @@ let DebugTaskRunner = class DebugTaskRunner {
|
|
|
193
196
|
)))]));
|
|
194
197
|
}
|
|
195
198
|
let taskStarted = false;
|
|
199
|
+
const store = ( (new DisposableStore()));
|
|
196
200
|
const getTaskKey = (t) => t.getKey() ?? t.getMapKey();
|
|
197
201
|
const taskKey = getTaskKey(task);
|
|
198
|
-
const inactivePromise = ( (new Promise(
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
202
|
+
const inactivePromise = ( (new Promise(
|
|
203
|
+
(resolve) => store.add(onceFilter(this.taskService.onDidStateChange, e => {
|
|
204
|
+
return (e.kind === TaskEventKind.Inactive
|
|
205
|
+
|| (e.kind === TaskEventKind.ProcessEnded && e.exitCode === undefined))
|
|
206
|
+
&& getTaskKey(e.__task) === taskKey;
|
|
207
|
+
})(e => {
|
|
208
|
+
taskStarted = true;
|
|
209
|
+
resolve(e.kind === TaskEventKind.ProcessEnded ? { exitCode: e.exitCode } : null);
|
|
210
|
+
}))
|
|
211
|
+
)));
|
|
212
|
+
store.add(onceFilter(this.taskService.onDidStateChange, e => ((e.kind === TaskEventKind.Active) || (e.kind === TaskEventKind.DependsOnStarted)) && getTaskKey(e.__task) === taskKey)(() => {
|
|
203
213
|
taskStarted = true;
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
214
|
+
}));
|
|
215
|
+
const didAcquireInput = store.add(( (new Emitter())));
|
|
216
|
+
store.add(onceFilter(this.taskService.onDidStateChange, e => (e.kind === TaskEventKind.AcquiredInput) && getTaskKey(e.__task) === taskKey)(() => didAcquireInput.fire()));
|
|
217
|
+
const taskDonePromise = this.taskService.getActiveTasks().then(async (tasks) => {
|
|
207
218
|
if (tasks.find(t => getTaskKey(t) === taskKey)) {
|
|
219
|
+
didAcquireInput.fire();
|
|
208
220
|
const busyTasks = await this.taskService.getBusyTasks();
|
|
209
221
|
if (busyTasks.find(t => getTaskKey(t) === taskKey)) {
|
|
210
222
|
taskStarted = true;
|
|
@@ -212,47 +224,61 @@ let DebugTaskRunner = class DebugTaskRunner {
|
|
|
212
224
|
}
|
|
213
225
|
return Promise.resolve(null);
|
|
214
226
|
}
|
|
215
|
-
once(e => ((e.kind === TaskEventKind.Active) || (e.kind === TaskEventKind.DependsOnStarted)) && getTaskKey(e.__task) === taskKey, this.taskService.onDidStateChange)(() => {
|
|
216
|
-
taskStarted = true;
|
|
217
|
-
});
|
|
218
227
|
const taskPromise = this.taskService.run(task);
|
|
219
228
|
if (task.configurationProperties.isBackground) {
|
|
220
229
|
return inactivePromise;
|
|
221
230
|
}
|
|
222
231
|
return taskPromise.then(x => x ?? null);
|
|
223
232
|
});
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
)
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
233
|
+
const result = ( (new Promise((resolve, reject) => {
|
|
234
|
+
taskDonePromise.then(result => {
|
|
235
|
+
taskStarted = true;
|
|
236
|
+
resolve(result);
|
|
237
|
+
}, error => reject(error));
|
|
238
|
+
store.add(token.onCancellationRequested(() => {
|
|
239
|
+
resolve({ exitCode: undefined, cancelled: true });
|
|
240
|
+
this.taskService.terminate(task).catch(() => { });
|
|
241
|
+
}));
|
|
242
|
+
store.add(didAcquireInput.event(() => {
|
|
243
|
+
const waitTime = task.configurationProperties.isBackground ? 5000 : 10000;
|
|
244
|
+
store.add(disposableTimeout(() => {
|
|
245
|
+
if (!taskStarted) {
|
|
246
|
+
const errorMessage = ( localize(
|
|
247
|
+
5784,
|
|
248
|
+
"The task '{0}' has not exited and doesn't have a 'problemMatcher' defined. Make sure to define a problem matcher for watch tasks.",
|
|
249
|
+
typeof taskId === 'string' ? taskId : JSON.stringify(taskId)
|
|
250
|
+
));
|
|
251
|
+
reject({ severity: Severity$1.Error, message: errorMessage });
|
|
252
|
+
}
|
|
253
|
+
}, waitTime));
|
|
254
|
+
store.add(disposableTimeout(() => {
|
|
255
|
+
const message = ( localize(
|
|
256
|
+
5785,
|
|
257
|
+
"Waiting for preLaunchTask '{0}'...",
|
|
258
|
+
task.configurationProperties.name
|
|
259
|
+
));
|
|
260
|
+
const buttons = [DEBUG_ANYWAY_LABEL_NO_MEMO, ABORT_LABEL];
|
|
261
|
+
const canConfigure = task instanceof CustomTask || task instanceof ConfiguringTask;
|
|
262
|
+
if (canConfigure) {
|
|
263
|
+
buttons.splice(1, 0, ( localize(5786, "Configure Task")));
|
|
264
|
+
}
|
|
265
|
+
this.progressService.withProgress({ location: ProgressLocation.Notification, title: message, buttons }, () => result.catch(() => { }), (choice) => {
|
|
266
|
+
if (choice === undefined) ;
|
|
267
|
+
else if (choice === 0) {
|
|
268
|
+
resolve({ exitCode: 0 });
|
|
251
269
|
}
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
270
|
+
else {
|
|
271
|
+
resolve({ exitCode: undefined, cancelled: true });
|
|
272
|
+
this.taskService.terminate(task).catch(() => { });
|
|
273
|
+
if (canConfigure && choice === 1) {
|
|
274
|
+
this.taskService.openConfig(task);
|
|
275
|
+
}
|
|
276
|
+
}
|
|
277
|
+
});
|
|
278
|
+
}, 10_000));
|
|
279
|
+
}));
|
|
280
|
+
})));
|
|
281
|
+
return result.finally(() => store.dispose());
|
|
256
282
|
}
|
|
257
283
|
};
|
|
258
284
|
DebugTaskRunner = ( (__decorate([
|
|
@@ -262,7 +288,8 @@ DebugTaskRunner = ( (__decorate([
|
|
|
262
288
|
( (__param(3, IViewsService))),
|
|
263
289
|
( (__param(4, IDialogService))),
|
|
264
290
|
( (__param(5, IStorageService))),
|
|
265
|
-
( (__param(6, ICommandService)))
|
|
291
|
+
( (__param(6, ICommandService))),
|
|
292
|
+
( (__param(7, IProgressService)))
|
|
266
293
|
], DebugTaskRunner)));
|
|
267
294
|
|
|
268
295
|
export { DebugTaskRunner, TaskRunResult };
|
|
@@ -301,7 +301,7 @@ function createDisconnectMenuItemAction(action, disposables, accessor, options)
|
|
|
301
301
|
if (!secondary.length) {
|
|
302
302
|
return undefined;
|
|
303
303
|
}
|
|
304
|
-
const dropdownAction = disposables.add(( (new Action('notebook.moreRunActions', ( localize(
|
|
304
|
+
const dropdownAction = disposables.add(( (new Action('notebook.moreRunActions', ( localize(6019, "More...")), 'codicon-chevron-down', true))));
|
|
305
305
|
const item = instantiationService.createInstance(DropdownWithPrimaryActionViewItem, action, dropdownAction, secondary, 'debug-stop-actions', contextMenuService, options);
|
|
306
306
|
return item;
|
|
307
307
|
}
|
|
@@ -375,8 +375,8 @@ registerDebugToolBarItem(STEP_OVER_ID, STEP_OVER_LABEL, 20, debugStepOver, undef
|
|
|
375
375
|
registerDebugToolBarItem(STEP_INTO_ID, STEP_INTO_LABEL, 30, debugStepInto, undefined, ( (CONTEXT_DEBUG_STATE.isEqualTo('stopped'))));
|
|
376
376
|
registerDebugToolBarItem(STEP_OUT_ID, STEP_OUT_LABEL, 40, debugStepOut, undefined, ( (CONTEXT_DEBUG_STATE.isEqualTo('stopped'))));
|
|
377
377
|
registerDebugToolBarItem(RESTART_SESSION_ID, RESTART_LABEL, 60, debugRestart);
|
|
378
|
-
registerDebugToolBarItem(STEP_BACK_ID, ( localize(
|
|
379
|
-
registerDebugToolBarItem(REVERSE_CONTINUE_ID, ( localize(
|
|
378
|
+
registerDebugToolBarItem(STEP_BACK_ID, ( localize(6020, "Step Back")), 50, debugStepBack, CONTEXT_STEP_BACK_SUPPORTED, ( (CONTEXT_DEBUG_STATE.isEqualTo('stopped'))));
|
|
379
|
+
registerDebugToolBarItem(REVERSE_CONTINUE_ID, ( localize(6021, "Reverse")), 55, debugReverseContinue, CONTEXT_STEP_BACK_SUPPORTED, ( (CONTEXT_DEBUG_STATE.isEqualTo('stopped'))));
|
|
380
380
|
registerDebugToolBarItem(FOCUS_SESSION_ID, FOCUS_SESSION_LABEL, 100, Codicon.listTree, ( (ContextKeyExpr.and(
|
|
381
381
|
CONTEXT_MULTI_SESSION_DEBUG,
|
|
382
382
|
(CONTEXT_TOOLBAR_COMMAND_CENTER.negate())
|
|
@@ -179,10 +179,10 @@ registerAction2(class extends Action2 {
|
|
|
179
179
|
title: {
|
|
180
180
|
value: DEBUG_CONFIGURE_LABEL,
|
|
181
181
|
original: 'Open \'launch.json\'',
|
|
182
|
-
mnemonicTitle: ( localize(
|
|
182
|
+
mnemonicTitle: ( localize(6022, "Open &&Configurations"))
|
|
183
183
|
},
|
|
184
184
|
metadata: {
|
|
185
|
-
description: ( localize2(
|
|
185
|
+
description: ( localize2(6023, 'Opens the file used to configure how your program is debugged'))
|
|
186
186
|
},
|
|
187
187
|
f1: true,
|
|
188
188
|
icon: debugConfigure,
|
|
@@ -234,7 +234,7 @@ registerAction2(class extends Action2 {
|
|
|
234
234
|
const picked = await quickInputService.pick(picks, {
|
|
235
235
|
activeItem: picks[0],
|
|
236
236
|
placeHolder: ( localize(
|
|
237
|
-
|
|
237
|
+
6024,
|
|
238
238
|
"Select a workspace folder to create a launch.json file in or add it to the workspace config file"
|
|
239
239
|
))
|
|
240
240
|
});
|
|
@@ -252,7 +252,7 @@ registerAction2(class extends Action2 {
|
|
|
252
252
|
constructor() {
|
|
253
253
|
super({
|
|
254
254
|
id: 'debug.toggleReplIgnoreFocus',
|
|
255
|
-
title: ( localize(
|
|
255
|
+
title: ( localize(6025, "Debug Console")),
|
|
256
256
|
toggled: ( (ContextKeyExpr.has(`view.${REPL_VIEW_ID}.visible`))),
|
|
257
257
|
menu: [{
|
|
258
258
|
id: ViewsSubMenu,
|
|
@@ -284,7 +284,7 @@ MenuRegistry.appendMenuItem(MenuId.ViewContainerTitle, {
|
|
|
284
284
|
order: 10,
|
|
285
285
|
command: {
|
|
286
286
|
id: SELECT_AND_START_ID,
|
|
287
|
-
title: ( localize(
|
|
287
|
+
title: ( localize(6026, "Start Additional Session")),
|
|
288
288
|
}
|
|
289
289
|
});
|
|
290
290
|
|
|
@@ -56,7 +56,7 @@ const disassemblyNotAvailable = {
|
|
|
56
56
|
address: 0n,
|
|
57
57
|
instruction: {
|
|
58
58
|
address: '-1',
|
|
59
|
-
instruction: ( localize(
|
|
59
|
+
instruction: ( localize(6027, "Disassembly not available."))
|
|
60
60
|
},
|
|
61
61
|
};
|
|
62
62
|
let DisassemblyView = class DisassemblyView extends EditorPane {
|
|
@@ -170,7 +170,7 @@ let DisassemblyView = class DisassemblyView extends EditorPane {
|
|
|
170
170
|
project(row) { return row; }
|
|
171
171
|
},
|
|
172
172
|
{
|
|
173
|
-
label: ( localize(
|
|
173
|
+
label: ( localize(6028, "instructions")),
|
|
174
174
|
tooltip: '',
|
|
175
175
|
weight: 0.3,
|
|
176
176
|
templateId: InstructionRenderer.TEMPLATE_ID,
|
|
@@ -191,6 +191,7 @@ let DisassemblyView = class DisassemblyView extends EditorPane {
|
|
|
191
191
|
accessibilityProvider: ( (new AccessibilityProvider())),
|
|
192
192
|
mouseSupport: false
|
|
193
193
|
}));
|
|
194
|
+
this._disassembledInstructions.domNode.classList.add('disassembly-view');
|
|
194
195
|
if (this.focusedInstructionReference) {
|
|
195
196
|
this.reloadDisassembly(this.focusedInstructionReference, 0);
|
|
196
197
|
}
|
|
@@ -504,8 +505,7 @@ let BreakpointRenderer = class BreakpointRenderer {
|
|
|
504
505
|
}
|
|
505
506
|
renderTemplate(container) {
|
|
506
507
|
container.style.alignSelf = 'flex-end';
|
|
507
|
-
const icon = append(container, $('.
|
|
508
|
-
icon.classList.add('codicon');
|
|
508
|
+
const icon = append(container, $('.codicon'));
|
|
509
509
|
icon.style.display = 'flex';
|
|
510
510
|
icon.style.alignItems = 'center';
|
|
511
511
|
icon.style.justifyContent = 'center';
|
|
@@ -705,7 +705,7 @@ let InstructionRenderer = class InstructionRenderer extends Disposable {
|
|
|
705
705
|
};
|
|
706
706
|
this.editorService.openEditor({
|
|
707
707
|
resource: sourceURI,
|
|
708
|
-
description: ( localize(
|
|
708
|
+
description: ( localize(6029, "from disassembly")),
|
|
709
709
|
options: {
|
|
710
710
|
preserveFocus: false,
|
|
711
711
|
selection: selection,
|
|
@@ -740,18 +740,18 @@ InstructionRenderer = InstructionRenderer_1 = ( (__decorate([
|
|
|
740
740
|
], InstructionRenderer)));
|
|
741
741
|
class AccessibilityProvider {
|
|
742
742
|
getWidgetAriaLabel() {
|
|
743
|
-
return ( localize(
|
|
743
|
+
return ( localize(6030, "Disassembly View"));
|
|
744
744
|
}
|
|
745
745
|
getAriaLabel(element) {
|
|
746
746
|
let label = '';
|
|
747
747
|
const instruction = element.instruction;
|
|
748
748
|
if (instruction.address !== '-1') {
|
|
749
|
-
label += `${( localize(
|
|
749
|
+
label += `${( localize(6031, "Address"))}: ${instruction.address}`;
|
|
750
750
|
}
|
|
751
751
|
if (instruction.instructionBytes) {
|
|
752
|
-
label += `, ${( localize(
|
|
752
|
+
label += `, ${( localize(6032, "Bytes"))}: ${instruction.instructionBytes}`;
|
|
753
753
|
}
|
|
754
|
-
label += `, ${( localize(
|
|
754
|
+
label += `, ${( localize(6033, "Instruction"))}: ${instruction.instruction}`;
|
|
755
755
|
return label;
|
|
756
756
|
}
|
|
757
757
|
}
|
|
@@ -19,15 +19,15 @@ import 'vscode/vscode/vs/platform/theme/common/colors/miscColors';
|
|
|
19
19
|
import 'vscode/vscode/vs/platform/theme/common/colors/quickpickColors';
|
|
20
20
|
import 'vscode/vscode/vs/platform/theme/common/colors/searchColors';
|
|
21
21
|
import { IInstantiationService } from 'vscode/vscode/vs/platform/instantiation/common/instantiation';
|
|
22
|
-
import { LinkDetector } from '
|
|
22
|
+
import { LinkDetector, DebugLinkHoverBehavior } from 'vscode/vscode/vs/workbench/contrib/debug/browser/linkDetector';
|
|
23
23
|
import { EditorOption } from 'vscode/vscode/vs/editor/common/config/editorOptions';
|
|
24
24
|
import { ActionBar } from 'vscode/vscode/vs/base/browser/ui/actionbar/actionbar';
|
|
25
25
|
import { Action } from 'vscode/vscode/vs/base/common/actions';
|
|
26
26
|
import { widgetClose } from 'vscode/vscode/vs/platform/theme/common/iconRegistry';
|
|
27
27
|
|
|
28
28
|
const $ = $$1;
|
|
29
|
-
const debugExceptionWidgetBorder = registerColor('debugExceptionWidget.border', '#a31515', ( localize(
|
|
30
|
-
const debugExceptionWidgetBackground = registerColor('debugExceptionWidget.background', { dark: '#420b0d', light: '#f1dfde', hcDark: '#420b0d', hcLight: '#f1dfde' }, ( localize(
|
|
29
|
+
const debugExceptionWidgetBorder = registerColor('debugExceptionWidget.border', '#a31515', ( localize(10285, 'Exception widget border color.')));
|
|
30
|
+
const debugExceptionWidgetBackground = registerColor('debugExceptionWidget.background', { dark: '#420b0d', light: '#f1dfde', hcDark: '#420b0d', hcLight: '#f1dfde' }, ( localize(10286, 'Exception widget background color.')));
|
|
31
31
|
let ExceptionWidget = class ExceptionWidget extends ZoneWidget {
|
|
32
32
|
constructor(editor, exceptionInfo, debugSession, themeService, instantiationService) {
|
|
33
33
|
super(editor, { showFrame: true, showArrow: true, isAccessible: true, frameWidth: 1, className: 'exception-widget-container' });
|
|
@@ -66,10 +66,10 @@ let ExceptionWidget = class ExceptionWidget extends ZoneWidget {
|
|
|
66
66
|
append(title, label);
|
|
67
67
|
const actions = $('.actions');
|
|
68
68
|
append(title, actions);
|
|
69
|
-
label.textContent = this.exceptionInfo.id ? ( localize(
|
|
69
|
+
label.textContent = this.exceptionInfo.id ? ( localize(10287, 'Exception has occurred: {0}', this.exceptionInfo.id)) : ( localize(10288, 'Exception has occurred.'));
|
|
70
70
|
let ariaLabel = label.textContent;
|
|
71
71
|
const actionBar = ( (new ActionBar(actions)));
|
|
72
|
-
actionBar.push(( (new Action('editor.closeExceptionWidget', ( localize(
|
|
72
|
+
actionBar.push(( (new Action('editor.closeExceptionWidget', ( localize(10289, "Close")), ThemeIcon.asClassName(widgetClose), true, async () => {
|
|
73
73
|
const contribution = this.editor.getContribution(EDITOR_CONTRIBUTION_ID);
|
|
74
74
|
contribution?.closeExceptionWidget();
|
|
75
75
|
}))), { label: false, icon: true });
|
|
@@ -83,7 +83,7 @@ let ExceptionWidget = class ExceptionWidget extends ZoneWidget {
|
|
|
83
83
|
if (this.exceptionInfo.details && this.exceptionInfo.details.stackTrace) {
|
|
84
84
|
const stackTrace = $('.stack-trace');
|
|
85
85
|
const linkDetector = this.instantiationService.createInstance(LinkDetector);
|
|
86
|
-
const linkedStackTrace = linkDetector.linkify(this.exceptionInfo.details.stackTrace, true, this.debugSession ? this.debugSession.root : undefined);
|
|
86
|
+
const linkedStackTrace = linkDetector.linkify(this.exceptionInfo.details.stackTrace, true, this.debugSession ? this.debugSession.root : undefined, undefined, { type: DebugLinkHoverBehavior.Rich, store: this._disposables });
|
|
87
87
|
stackTrace.appendChild(linkedStackTrace);
|
|
88
88
|
append(container, stackTrace);
|
|
89
89
|
ariaLabel += ', ' + this.exceptionInfo.details.stackTrace;
|
|
@@ -559,7 +559,7 @@ class LoadedScriptsRenderer {
|
|
|
559
559
|
options.fileKind = FileKind.ROOT_FOLDER;
|
|
560
560
|
}
|
|
561
561
|
else if (element instanceof SessionTreeItem) {
|
|
562
|
-
options.title = ( localize(
|
|
562
|
+
options.title = ( localize(6034, "Debug Session"));
|
|
563
563
|
options.hideIcon = true;
|
|
564
564
|
}
|
|
565
565
|
else if (element instanceof BaseTreeItem) {
|
|
@@ -581,20 +581,20 @@ class LoadedScriptsRenderer {
|
|
|
581
581
|
}
|
|
582
582
|
class LoadedSciptsAccessibilityProvider {
|
|
583
583
|
getWidgetAriaLabel() {
|
|
584
|
-
return ( localize(
|
|
584
|
+
return ( localize(6035, "Debug Loaded Scripts"));
|
|
585
585
|
}
|
|
586
586
|
getAriaLabel(element) {
|
|
587
587
|
if (element instanceof RootFolderTreeItem) {
|
|
588
|
-
return ( localize(
|
|
588
|
+
return ( localize(6036, "Workspace folder {0}, loaded script, debug", element.getLabel()));
|
|
589
589
|
}
|
|
590
590
|
if (element instanceof SessionTreeItem) {
|
|
591
|
-
return ( localize(
|
|
591
|
+
return ( localize(6037, "Session {0}, loaded script, debug", element.getLabel()));
|
|
592
592
|
}
|
|
593
593
|
if (element.hasChildren()) {
|
|
594
|
-
return ( localize(
|
|
594
|
+
return ( localize(6038, "Folder {0}, loaded script, debug", element.getLabel()));
|
|
595
595
|
}
|
|
596
596
|
else {
|
|
597
|
-
return ( localize(
|
|
597
|
+
return ( localize(6039, "{0}, loaded script, debug", element.getLabel()));
|
|
598
598
|
}
|
|
599
599
|
}
|
|
600
600
|
}
|
|
@@ -621,7 +621,7 @@ registerAction2(class Collapse extends ViewAction {
|
|
|
621
621
|
super({
|
|
622
622
|
id: 'loadedScripts.collapse',
|
|
623
623
|
viewId: LOADED_SCRIPTS_VIEW_ID,
|
|
624
|
-
title: ( localize(
|
|
624
|
+
title: ( localize(6040, "Collapse All")),
|
|
625
625
|
f1: false,
|
|
626
626
|
icon: Codicon.collapseAll,
|
|
627
627
|
menu: {
|
|
@@ -193,7 +193,7 @@ let RawDebugSession = class RawDebugSession {
|
|
|
193
193
|
}
|
|
194
194
|
async start() {
|
|
195
195
|
if (!this.debugAdapter) {
|
|
196
|
-
return Promise.reject(( (new Error(( localize(
|
|
196
|
+
return Promise.reject(( (new Error(( localize(10261, "No debug adapter, can not start debug session."))))));
|
|
197
197
|
}
|
|
198
198
|
await this.debugAdapter.startSession();
|
|
199
199
|
this.startTime = ( (new Date())).getTime();
|
|
@@ -366,6 +366,9 @@ let RawDebugSession = class RawDebugSession {
|
|
|
366
366
|
source(args) {
|
|
367
367
|
return this.send('source', args);
|
|
368
368
|
}
|
|
369
|
+
locations(args) {
|
|
370
|
+
return this.send('locations', args);
|
|
371
|
+
}
|
|
369
372
|
loadedSources(args) {
|
|
370
373
|
if (this.capabilities.supportsLoadedSourcesRequest) {
|
|
371
374
|
return this.send('loadedSources', args);
|
|
@@ -514,10 +517,10 @@ let RawDebugSession = class RawDebugSession {
|
|
|
514
517
|
const { confirmed } = await this.dialogSerivce.confirm({
|
|
515
518
|
type: Severity$1.Warning,
|
|
516
519
|
message: ( localize(
|
|
517
|
-
|
|
520
|
+
10262,
|
|
518
521
|
"The debugger needs to open a new tab or window for the debuggee but the browser prevented this. You must give permission to continue."
|
|
519
522
|
)),
|
|
520
|
-
primaryButton: ( localize(
|
|
523
|
+
primaryButton: ( localize(10263, "&&Continue"))
|
|
521
524
|
});
|
|
522
525
|
if (confirmed) {
|
|
523
526
|
result = await this.launchVsCode(request.arguments);
|
|
@@ -617,7 +620,7 @@ let RawDebugSession = class RawDebugSession {
|
|
|
617
620
|
completeDispatch(undefined);
|
|
618
621
|
}
|
|
619
622
|
else {
|
|
620
|
-
errorDispatch(( (new Error(( localize(
|
|
623
|
+
errorDispatch(( (new Error(( localize(10264, "No debugger available found. Can not send '{0}'.", command))))));
|
|
621
624
|
}
|
|
622
625
|
return;
|
|
623
626
|
}
|
|
@@ -650,7 +653,7 @@ let RawDebugSession = class RawDebugSession {
|
|
|
650
653
|
const userMessage = error ? formatPII(error.format, false, error.variables) : errorMessage;
|
|
651
654
|
const url = error?.url;
|
|
652
655
|
if (error && url) {
|
|
653
|
-
const label = error.urlLabel ? error.urlLabel : ( localize(
|
|
656
|
+
const label = error.urlLabel ? error.urlLabel : ( localize(10265, "More Info"));
|
|
654
657
|
const uri = ( (URI.parse(url)));
|
|
655
658
|
const actionId = uri.scheme === Schemas.command ? 'debug.moreInfo.command' : 'debug.moreInfo';
|
|
656
659
|
return createErrorWithActions(userMessage, [toAction({ id: actionId, label, run: () => this.openerService.open(uri, { allowCommands: true }) })]);
|