@codingame/monaco-vscode-debug-service-override 26.2.2 → 27.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 +2 -2
- package/vscode/src/vs/platform/debug/common/extensionHostDebugIpc.d.ts +1 -1
- package/vscode/src/vs/platform/debug/common/extensionHostDebugIpc.js +6 -5
- package/vscode/src/vs/workbench/contrib/debug/browser/callStackView.js +16 -16
- package/vscode/src/vs/workbench/contrib/debug/browser/debug.contribution.js +104 -104
- package/vscode/src/vs/workbench/contrib/debug/browser/debugAdapterManager.js +14 -14
- package/vscode/src/vs/workbench/contrib/debug/browser/debugChatIntegration.js +12 -12
- package/vscode/src/vs/workbench/contrib/debug/browser/debugConfigurationManager.js +9 -6
- package/vscode/src/vs/workbench/contrib/debug/browser/debugConsoleQuickAccess.js +1 -1
- package/vscode/src/vs/workbench/contrib/debug/browser/debugEditorActions.js +25 -25
- package/vscode/src/vs/workbench/contrib/debug/browser/debugMemory.js +2 -2
- package/vscode/src/vs/workbench/contrib/debug/browser/debugQuickAccess.js +8 -8
- package/vscode/src/vs/workbench/contrib/debug/browser/debugService.js +25 -25
- package/vscode/src/vs/workbench/contrib/debug/browser/debugSession.js +52 -42
- package/vscode/src/vs/workbench/contrib/debug/browser/debugStatus.js +3 -3
- package/vscode/src/vs/workbench/contrib/debug/browser/debugTaskRunner.js +15 -15
- 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 +7 -7
- package/vscode/src/vs/workbench/contrib/debug/browser/loadedScriptsView.js +14 -10
- package/vscode/src/vs/workbench/contrib/debug/browser/media/debugViewlet.css +1 -0
- package/vscode/src/vs/workbench/contrib/debug/browser/rawDebugSession.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/debug/browser/rawDebugSession.js +27 -27
- package/vscode/src/vs/workbench/contrib/debug/browser/replAccessibilityHelp.d.ts +2 -3
- package/vscode/src/vs/workbench/contrib/debug/browser/replAccessibilityHelp.js +107 -38
- package/vscode/src/vs/workbench/contrib/debug/browser/runAndDebugAccessibilityHelp.js +16 -16
- package/vscode/src/vs/workbench/contrib/debug/browser/statusbarColorProvider.js +4 -4
- package/vscode/src/vs/workbench/contrib/debug/browser/watchExpressionsView.js +12 -12
- package/vscode/src/vs/workbench/contrib/debug/browser/welcomeView.js +6 -6
- package/vscode/src/vs/workbench/contrib/debug/common/debugContentProvider.js +2 -2
- package/vscode/src/vs/workbench/contrib/debug/common/debugLifecycle.js +3 -3
- package/vscode/src/vs/workbench/contrib/debug/common/debugSchemas.js +43 -43
- package/vscode/src/vs/workbench/contrib/debug/common/debugViewModel.d.ts +2 -1
- package/vscode/src/vs/workbench/contrib/debug/common/debugViewModel.js +10 -8
- package/vscode/src/vs/workbench/contrib/debug/common/debugger.d.ts +1 -1
- 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
|
@@ -30,9 +30,9 @@ var TaskRunResult;
|
|
|
30
30
|
TaskRunResult[TaskRunResult["Success"] = 1] = "Success";
|
|
31
31
|
})(TaskRunResult || (TaskRunResult = {}));
|
|
32
32
|
const DEBUG_TASK_ERROR_CHOICE_KEY = "debug.taskerrorchoice";
|
|
33
|
-
const ABORT_LABEL = ( localize(
|
|
34
|
-
const DEBUG_ANYWAY_LABEL = ( localize(
|
|
35
|
-
const DEBUG_ANYWAY_LABEL_NO_MEMO = ( localize(
|
|
33
|
+
const ABORT_LABEL = ( localize(8017, "Abort"));
|
|
34
|
+
const DEBUG_ANYWAY_LABEL = ( localize(8018, "&&Debug Anyway"));
|
|
35
|
+
const DEBUG_ANYWAY_LABEL_NO_MEMO = ( localize(8019, "Debug Anyway"));
|
|
36
36
|
let DebugTaskRunner = class DebugTaskRunner {
|
|
37
37
|
constructor(
|
|
38
38
|
taskService,
|
|
@@ -85,12 +85,12 @@ let DebugTaskRunner = class DebugTaskRunner {
|
|
|
85
85
|
return Promise.resolve(TaskRunResult.Failure);
|
|
86
86
|
}
|
|
87
87
|
const taskLabel = typeof taskId === "string" ? taskId : taskId ? taskId.name : "";
|
|
88
|
-
const message = errorCount > 1 ? ( localize(
|
|
89
|
-
|
|
88
|
+
const message = errorCount > 1 ? ( localize(8020, "Errors exist after running preLaunchTask '{0}'.", taskLabel)) : errorCount === 1 ? ( localize(8021, "Error exists after running preLaunchTask '{0}'.", taskLabel)) : taskSummary && typeof taskSummary.exitCode === "number" ? ( localize(
|
|
89
|
+
8022,
|
|
90
90
|
"The preLaunchTask '{0}' terminated with exit code {1}.",
|
|
91
91
|
taskLabel,
|
|
92
92
|
taskSummary.exitCode
|
|
93
|
-
)) : ( localize(
|
|
93
|
+
)) : ( localize(8023, "The preLaunchTask '{0}' terminated.", taskLabel));
|
|
94
94
|
let DebugChoice;
|
|
95
95
|
(function(DebugChoice) {
|
|
96
96
|
DebugChoice[DebugChoice["DebugAnyway"] = 1] = "DebugAnyway";
|
|
@@ -107,7 +107,7 @@ let DebugTaskRunner = class DebugTaskRunner {
|
|
|
107
107
|
label: DEBUG_ANYWAY_LABEL,
|
|
108
108
|
run: () => DebugChoice.DebugAnyway
|
|
109
109
|
}, {
|
|
110
|
-
label: ( localize(
|
|
110
|
+
label: ( localize(8024, "&&Show Errors")),
|
|
111
111
|
run: () => DebugChoice.ShowErrors
|
|
112
112
|
}],
|
|
113
113
|
cancelButton: {
|
|
@@ -115,7 +115,7 @@ let DebugTaskRunner = class DebugTaskRunner {
|
|
|
115
115
|
run: () => DebugChoice.Cancel
|
|
116
116
|
},
|
|
117
117
|
checkbox: {
|
|
118
|
-
label: ( localize(
|
|
118
|
+
label: ( localize(8025, "Remember my choice in user settings"))
|
|
119
119
|
}
|
|
120
120
|
});
|
|
121
121
|
const debugAnyway = result === DebugChoice.DebugAnyway;
|
|
@@ -156,7 +156,7 @@ let DebugTaskRunner = class DebugTaskRunner {
|
|
|
156
156
|
type: Severity.Error,
|
|
157
157
|
message: err.message,
|
|
158
158
|
buttons: [{
|
|
159
|
-
label: ( localize(
|
|
159
|
+
label: ( localize(8018, "&&Debug Anyway")),
|
|
160
160
|
run: () => DebugChoice.DebugAnyway
|
|
161
161
|
}, {
|
|
162
162
|
label: taskConfigureAction.label,
|
|
@@ -166,7 +166,7 @@ let DebugTaskRunner = class DebugTaskRunner {
|
|
|
166
166
|
run: () => DebugChoice.Cancel
|
|
167
167
|
},
|
|
168
168
|
checkbox: {
|
|
169
|
-
label: ( localize(
|
|
169
|
+
label: ( localize(8026, "Remember my choice for this task"))
|
|
170
170
|
}
|
|
171
171
|
});
|
|
172
172
|
choice = result;
|
|
@@ -192,14 +192,14 @@ let DebugTaskRunner = class DebugTaskRunner {
|
|
|
192
192
|
}
|
|
193
193
|
if (!root) {
|
|
194
194
|
return Promise.reject(( new Error(( localize(
|
|
195
|
-
|
|
195
|
+
8027,
|
|
196
196
|
"Task '{0}' can not be referenced from a launch configuration that is in a different workspace folder.",
|
|
197
197
|
typeof taskId === "string" ? taskId : taskId.type
|
|
198
198
|
)))));
|
|
199
199
|
}
|
|
200
200
|
const task = await this.taskService.getTask(root, taskId);
|
|
201
201
|
if (!task) {
|
|
202
|
-
const errorMessage = typeof taskId === "string" ? ( localize(
|
|
202
|
+
const errorMessage = typeof taskId === "string" ? ( localize(8028, "Could not find the task '{0}'.", taskId)) : ( localize(8029, "Could not find the specified task."));
|
|
203
203
|
return Promise.reject(createErrorWithActions(errorMessage, [toAction({
|
|
204
204
|
id: DEBUG_CONFIGURE_COMMAND_ID,
|
|
205
205
|
label: DEBUG_CONFIGURE_LABEL,
|
|
@@ -263,7 +263,7 @@ let DebugTaskRunner = class DebugTaskRunner {
|
|
|
263
263
|
store.add(disposableTimeout(() => {
|
|
264
264
|
if (!taskStarted) {
|
|
265
265
|
const errorMessage = ( localize(
|
|
266
|
-
|
|
266
|
+
8030,
|
|
267
267
|
"The task '{0}' has not exited and doesn't have a 'problemMatcher' defined. Make sure to define a problem matcher for watch tasks.",
|
|
268
268
|
typeof taskId === "string" ? taskId : JSON.stringify(taskId)
|
|
269
269
|
));
|
|
@@ -277,14 +277,14 @@ let DebugTaskRunner = class DebugTaskRunner {
|
|
|
277
277
|
if (!hideSlowPreLaunchWarning) {
|
|
278
278
|
store.add(disposableTimeout(() => {
|
|
279
279
|
const message = ( localize(
|
|
280
|
-
|
|
280
|
+
8031,
|
|
281
281
|
"Waiting for preLaunchTask '{0}'...",
|
|
282
282
|
task.configurationProperties.name
|
|
283
283
|
));
|
|
284
284
|
const buttons = [DEBUG_ANYWAY_LABEL_NO_MEMO, ABORT_LABEL];
|
|
285
285
|
const canConfigure = task instanceof CustomTask || task instanceof ConfiguringTask;
|
|
286
286
|
if (canConfigure) {
|
|
287
|
-
buttons.splice(1, 0, ( localize(
|
|
287
|
+
buttons.splice(1, 0, ( localize(8032, "Configure Task")));
|
|
288
288
|
}
|
|
289
289
|
this.progressService.withProgress({
|
|
290
290
|
location: ProgressLocation.Notification,
|
|
@@ -331,7 +331,7 @@ function createDisconnectMenuItemAction(action, disposables, accessor, options)
|
|
|
331
331
|
if (!secondary.length) {
|
|
332
332
|
return undefined;
|
|
333
333
|
}
|
|
334
|
-
const dropdownAction = disposables.add(( new Action("notebook.moreRunActions", ( localize(
|
|
334
|
+
const dropdownAction = disposables.add(( new Action("notebook.moreRunActions", ( localize(8033, "More...")), "codicon-chevron-down", true)));
|
|
335
335
|
const item = instantiationService.createInstance(
|
|
336
336
|
DropdownWithPrimaryActionViewItem,
|
|
337
337
|
action,
|
|
@@ -435,8 +435,8 @@ registerDebugToolBarItem(
|
|
|
435
435
|
( CONTEXT_DEBUG_STATE.isEqualTo("stopped"))
|
|
436
436
|
);
|
|
437
437
|
registerDebugToolBarItem(RESTART_SESSION_ID, RESTART_LABEL, 60, debugRestart);
|
|
438
|
-
registerDebugToolBarItem(STEP_BACK_ID, ( localize(
|
|
439
|
-
registerDebugToolBarItem(REVERSE_CONTINUE_ID, ( localize(
|
|
438
|
+
registerDebugToolBarItem(STEP_BACK_ID, ( localize(8034, "Step Back")), 50, debugStepBack, CONTEXT_STEP_BACK_SUPPORTED, ( CONTEXT_DEBUG_STATE.isEqualTo("stopped")));
|
|
439
|
+
registerDebugToolBarItem(REVERSE_CONTINUE_ID, ( localize(8035, "Reverse")), 55, debugReverseContinue, CONTEXT_STEP_BACK_SUPPORTED, ( CONTEXT_DEBUG_STATE.isEqualTo("stopped")));
|
|
440
440
|
registerDebugToolBarItem(
|
|
441
441
|
FOCUS_SESSION_ID,
|
|
442
442
|
FOCUS_SESSION_LABEL,
|
|
@@ -183,10 +183,10 @@ registerAction2(class extends Action2 {
|
|
|
183
183
|
title: {
|
|
184
184
|
value: DEBUG_CONFIGURE_LABEL,
|
|
185
185
|
original: "Open 'launch.json'",
|
|
186
|
-
mnemonicTitle: ( localize(
|
|
186
|
+
mnemonicTitle: ( localize(8036, "Open &&Configurations"))
|
|
187
187
|
},
|
|
188
188
|
metadata: {
|
|
189
|
-
description: ( localize2(
|
|
189
|
+
description: ( localize2(8037, "Opens the file used to configure how your program is debugged"))
|
|
190
190
|
},
|
|
191
191
|
f1: true,
|
|
192
192
|
icon: debugConfigure,
|
|
@@ -227,7 +227,7 @@ registerAction2(class extends Action2 {
|
|
|
227
227
|
const picked = await quickInputService.pick(picks, {
|
|
228
228
|
activeItem: picks[0],
|
|
229
229
|
placeHolder: ( localize(
|
|
230
|
-
|
|
230
|
+
8038,
|
|
231
231
|
"Select a workspace folder to create a launch.json file in or add it to the workspace config file"
|
|
232
232
|
))
|
|
233
233
|
});
|
|
@@ -255,7 +255,7 @@ registerAction2(class extends Action2 {
|
|
|
255
255
|
constructor() {
|
|
256
256
|
super({
|
|
257
257
|
id: "debug.toggleReplIgnoreFocus",
|
|
258
|
-
title: ( localize(
|
|
258
|
+
title: ( localize(8039, "Debug Console")),
|
|
259
259
|
toggled: ( ContextKeyExpr.has(`view.${REPL_VIEW_ID}.visible`)),
|
|
260
260
|
menu: [{
|
|
261
261
|
id: ViewsSubMenu,
|
|
@@ -279,7 +279,7 @@ MenuRegistry.appendMenuItem(MenuId.ViewContainerTitle, {
|
|
|
279
279
|
order: 10,
|
|
280
280
|
command: {
|
|
281
281
|
id: SELECT_AND_START_ID,
|
|
282
|
-
title: ( localize(
|
|
282
|
+
title: ( localize(8040, "Start Additional Session"))
|
|
283
283
|
}
|
|
284
284
|
});
|
|
285
285
|
|
|
@@ -64,7 +64,7 @@ const disassemblyNotAvailable = {
|
|
|
64
64
|
address: 0n,
|
|
65
65
|
instruction: {
|
|
66
66
|
address: "-1",
|
|
67
|
-
instruction: ( localize(
|
|
67
|
+
instruction: ( localize(8041, "Disassembly not available."))
|
|
68
68
|
}
|
|
69
69
|
};
|
|
70
70
|
let DisassemblyView = class DisassemblyView extends EditorPane {
|
|
@@ -204,7 +204,7 @@ let DisassemblyView = class DisassemblyView extends EditorPane {
|
|
|
204
204
|
return row;
|
|
205
205
|
}
|
|
206
206
|
}, {
|
|
207
|
-
label: ( localize(
|
|
207
|
+
label: ( localize(8042, "instructions")),
|
|
208
208
|
tooltip: "",
|
|
209
209
|
weight: 0.3,
|
|
210
210
|
templateId: InstructionRenderer.TEMPLATE_ID,
|
|
@@ -824,7 +824,7 @@ let InstructionRenderer = class InstructionRenderer extends Disposable {
|
|
|
824
824
|
};
|
|
825
825
|
this.editorService.openEditor({
|
|
826
826
|
resource: sourceURI,
|
|
827
|
-
description: ( localize(
|
|
827
|
+
description: ( localize(8043, "from disassembly")),
|
|
828
828
|
options: {
|
|
829
829
|
preserveFocus: false,
|
|
830
830
|
selection: selection,
|
|
@@ -859,18 +859,18 @@ let InstructionRenderer = class InstructionRenderer extends Disposable {
|
|
|
859
859
|
InstructionRenderer = InstructionRenderer_1 = ( __decorate([( __param(1, IThemeService)), ( __param(2, IEditorService)), ( __param(3, ITextModelService)), ( __param(4, IUriIdentityService)), ( __param(5, ILogService))], InstructionRenderer));
|
|
860
860
|
class AccessibilityProvider {
|
|
861
861
|
getWidgetAriaLabel() {
|
|
862
|
-
return localize(
|
|
862
|
+
return localize(8044, "Disassembly View");
|
|
863
863
|
}
|
|
864
864
|
getAriaLabel(element) {
|
|
865
865
|
let label = "";
|
|
866
866
|
const instruction = element.instruction;
|
|
867
867
|
if (instruction.address !== "-1") {
|
|
868
|
-
label += `${( localize(
|
|
868
|
+
label += `${( localize(8045, "Address"))}: ${instruction.address}`;
|
|
869
869
|
}
|
|
870
870
|
if (instruction.instructionBytes) {
|
|
871
|
-
label += `, ${( localize(
|
|
871
|
+
label += `, ${( localize(8046, "Bytes"))}: ${instruction.instructionBytes}`;
|
|
872
872
|
}
|
|
873
|
-
label += `, ${( localize(
|
|
873
|
+
label += `, ${( localize(8047, "Instruction"))}: ${instruction.instruction}`;
|
|
874
874
|
return label;
|
|
875
875
|
}
|
|
876
876
|
}
|
|
@@ -6,7 +6,7 @@ import { RunOnceScheduler } from '@codingame/monaco-vscode-api/vscode/vs/base/co
|
|
|
6
6
|
import { Codicon } from '@codingame/monaco-vscode-api/vscode/vs/base/common/codicons';
|
|
7
7
|
import { createMatches } from '@codingame/monaco-vscode-api/vscode/vs/base/common/filters';
|
|
8
8
|
import { normalizeDriveLetter, tildify } from '@codingame/monaco-vscode-api/vscode/vs/base/common/labels';
|
|
9
|
-
import { dispose } from '@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle';
|
|
9
|
+
import { DisposableMap, DisposableStore, dispose } from '@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle';
|
|
10
10
|
import { posix, isAbsolute, normalize } from '@codingame/monaco-vscode-api/vscode/vs/base/common/path';
|
|
11
11
|
import { isWindows } from '@codingame/monaco-vscode-api/vscode/vs/base/common/platform';
|
|
12
12
|
import { ltrim } from '@codingame/monaco-vscode-api/vscode/vs/base/common/strings';
|
|
@@ -465,15 +465,18 @@ let LoadedScriptsView = class LoadedScriptsView extends ViewPane {
|
|
|
465
465
|
scheduleRefreshOnVisible();
|
|
466
466
|
}
|
|
467
467
|
};
|
|
468
|
+
const sessionListeners = this._register(( new DisposableMap()));
|
|
468
469
|
const registerSessionListeners = session => {
|
|
469
|
-
|
|
470
|
+
const store = ( new DisposableStore());
|
|
471
|
+
sessionListeners.set(session.getId(), store);
|
|
472
|
+
store.add(session.onDidChangeName(async () => {
|
|
470
473
|
const sessionRoot = root.find(session);
|
|
471
474
|
if (sessionRoot) {
|
|
472
475
|
sessionRoot.updateLabel(session.getLabel());
|
|
473
476
|
scheduleRefreshOnVisible();
|
|
474
477
|
}
|
|
475
478
|
}));
|
|
476
|
-
|
|
479
|
+
store.add(session.onDidLoadedSource(async event => {
|
|
477
480
|
let sessionRoot;
|
|
478
481
|
switch (event.reason) {
|
|
479
482
|
case "new":
|
|
@@ -505,6 +508,7 @@ let LoadedScriptsView = class LoadedScriptsView extends ViewPane {
|
|
|
505
508
|
session
|
|
506
509
|
}
|
|
507
510
|
) => {
|
|
511
|
+
sessionListeners.deleteAndDispose(session.getId());
|
|
508
512
|
root.remove(session.getId());
|
|
509
513
|
this.changeScheduler.schedule();
|
|
510
514
|
}));
|
|
@@ -602,7 +606,7 @@ class LoadedScriptsRenderer {
|
|
|
602
606
|
if (element instanceof RootFolderTreeItem) {
|
|
603
607
|
options.fileKind = FileKind.ROOT_FOLDER;
|
|
604
608
|
} else if (element instanceof SessionTreeItem) {
|
|
605
|
-
options.title = ( localize(
|
|
609
|
+
options.title = ( localize(8059, "Debug Session"));
|
|
606
610
|
options.hideIcon = true;
|
|
607
611
|
} else if (element instanceof BaseTreeItem) {
|
|
608
612
|
const src = element.getSource();
|
|
@@ -622,19 +626,19 @@ class LoadedScriptsRenderer {
|
|
|
622
626
|
}
|
|
623
627
|
class LoadedSciptsAccessibilityProvider {
|
|
624
628
|
getWidgetAriaLabel() {
|
|
625
|
-
return localize(
|
|
629
|
+
return localize(8060, "Debug Loaded Scripts");
|
|
626
630
|
}
|
|
627
631
|
getAriaLabel(element) {
|
|
628
632
|
if (element instanceof RootFolderTreeItem) {
|
|
629
|
-
return localize(
|
|
633
|
+
return localize(8061, "Workspace folder {0}, loaded script, debug", element.getLabel());
|
|
630
634
|
}
|
|
631
635
|
if (element instanceof SessionTreeItem) {
|
|
632
|
-
return localize(
|
|
636
|
+
return localize(8062, "Session {0}, loaded script, debug", element.getLabel());
|
|
633
637
|
}
|
|
634
638
|
if (element.hasChildren()) {
|
|
635
|
-
return localize(
|
|
639
|
+
return localize(8063, "Folder {0}, loaded script, debug", element.getLabel());
|
|
636
640
|
} else {
|
|
637
|
-
return localize(
|
|
641
|
+
return localize(8064, "{0}, loaded script, debug", element.getLabel());
|
|
638
642
|
}
|
|
639
643
|
}
|
|
640
644
|
}
|
|
@@ -661,7 +665,7 @@ registerAction2(class Collapse extends ViewAction {
|
|
|
661
665
|
super({
|
|
662
666
|
id: "loadedScripts.collapse",
|
|
663
667
|
viewId: LOADED_SCRIPTS_VIEW_ID,
|
|
664
|
-
title: ( localize(
|
|
668
|
+
title: ( localize(8065, "Collapse All")),
|
|
665
669
|
f1: false,
|
|
666
670
|
icon: Codicon.collapseAll,
|
|
667
671
|
menu: {
|
|
@@ -26,6 +26,7 @@ export declare class RawDebugSession implements IDisposable {
|
|
|
26
26
|
private firedAdapterExitEvent;
|
|
27
27
|
private startTime;
|
|
28
28
|
private didReceiveStoppedEvent;
|
|
29
|
+
private readonly toDispose;
|
|
29
30
|
private readonly _onDidInitialize;
|
|
30
31
|
private readonly _onDidStop;
|
|
31
32
|
private readonly _onDidContinued;
|
|
@@ -45,7 +46,6 @@ export declare class RawDebugSession implements IDisposable {
|
|
|
45
46
|
private readonly _onDidExitAdapter;
|
|
46
47
|
private debugAdapter;
|
|
47
48
|
private stoppedSinceLastStep;
|
|
48
|
-
private toDispose;
|
|
49
49
|
constructor(debugAdapter: IDebugAdapter, dbgr: IDebugger, sessionId: string, name: string, extensionHostDebugService: IExtensionHostDebugService, openerService: IOpenerService, notificationService: INotificationService, dialogSerivce: IDialogService);
|
|
50
50
|
get isInShutdown(): boolean;
|
|
51
51
|
get onDidExitAdapter(): Event<AdapterEndEvent>;
|
|
@@ -10,7 +10,7 @@ import { isUriString, formatPII } from '@codingame/monaco-vscode-api/vscode/vs/w
|
|
|
10
10
|
import { IExtensionHostDebugService } from '@codingame/monaco-vscode-api/vscode/vs/platform/debug/common/extensionHostDebug.service';
|
|
11
11
|
import { URI } from '@codingame/monaco-vscode-api/vscode/vs/base/common/uri';
|
|
12
12
|
import { IOpenerService } from '@codingame/monaco-vscode-api/vscode/vs/platform/opener/common/opener.service';
|
|
13
|
-
import {
|
|
13
|
+
import { DisposableStore } from '@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle';
|
|
14
14
|
import '@codingame/monaco-vscode-api/vscode/vs/platform/notification/common/notification';
|
|
15
15
|
import { INotificationService } from '@codingame/monaco-vscode-api/vscode/vs/platform/notification/common/notification.service';
|
|
16
16
|
import { IDialogService } from '@codingame/monaco-vscode-api/vscode/vs/platform/dialogs/common/dialogs.service';
|
|
@@ -43,31 +43,31 @@ let RawDebugSession = class RawDebugSession {
|
|
|
43
43
|
this.firedAdapterExitEvent = false;
|
|
44
44
|
this.startTime = 0;
|
|
45
45
|
this.didReceiveStoppedEvent = false;
|
|
46
|
-
this.
|
|
47
|
-
this.
|
|
48
|
-
this.
|
|
49
|
-
this.
|
|
50
|
-
this.
|
|
51
|
-
this.
|
|
52
|
-
this.
|
|
53
|
-
this.
|
|
54
|
-
this.
|
|
55
|
-
this.
|
|
56
|
-
this.
|
|
57
|
-
this.
|
|
58
|
-
this.
|
|
59
|
-
this.
|
|
60
|
-
this.
|
|
61
|
-
this.
|
|
62
|
-
this.
|
|
46
|
+
this.toDispose = ( new DisposableStore());
|
|
47
|
+
this._onDidInitialize = this.toDispose.add(( new Emitter()));
|
|
48
|
+
this._onDidStop = this.toDispose.add(( new Emitter()));
|
|
49
|
+
this._onDidContinued = this.toDispose.add(( new Emitter()));
|
|
50
|
+
this._onDidTerminateDebugee = this.toDispose.add(( new Emitter()));
|
|
51
|
+
this._onDidExitDebugee = this.toDispose.add(( new Emitter()));
|
|
52
|
+
this._onDidThread = this.toDispose.add(( new Emitter()));
|
|
53
|
+
this._onDidOutput = this.toDispose.add(( new Emitter()));
|
|
54
|
+
this._onDidBreakpoint = this.toDispose.add(( new Emitter()));
|
|
55
|
+
this._onDidLoadedSource = this.toDispose.add(( new Emitter()));
|
|
56
|
+
this._onDidProgressStart = this.toDispose.add(( new Emitter()));
|
|
57
|
+
this._onDidProgressUpdate = this.toDispose.add(( new Emitter()));
|
|
58
|
+
this._onDidProgressEnd = this.toDispose.add(( new Emitter()));
|
|
59
|
+
this._onDidInvalidated = this.toDispose.add(( new Emitter()));
|
|
60
|
+
this._onDidInvalidateMemory = this.toDispose.add(( new Emitter()));
|
|
61
|
+
this._onDidCustomEvent = this.toDispose.add(( new Emitter()));
|
|
62
|
+
this._onDidEvent = this.toDispose.add(( new Emitter()));
|
|
63
|
+
this._onDidExitAdapter = this.toDispose.add(( new Emitter()));
|
|
63
64
|
this.stoppedSinceLastStep = false;
|
|
64
|
-
this.toDispose = [];
|
|
65
65
|
this.debugAdapter = debugAdapter;
|
|
66
66
|
this._capabilities = Object.create(null);
|
|
67
|
-
this.toDispose.
|
|
67
|
+
this.toDispose.add(this.debugAdapter.onError(err => {
|
|
68
68
|
this.shutdown(err);
|
|
69
69
|
}));
|
|
70
|
-
this.toDispose.
|
|
70
|
+
this.toDispose.add(this.debugAdapter.onExit(code => {
|
|
71
71
|
if (code !== 0) {
|
|
72
72
|
this.shutdown(( new Error(`exit code: ${code}`)));
|
|
73
73
|
} else {
|
|
@@ -202,7 +202,7 @@ let RawDebugSession = class RawDebugSession {
|
|
|
202
202
|
}
|
|
203
203
|
async start() {
|
|
204
204
|
if (!this.debugAdapter) {
|
|
205
|
-
return Promise.reject(( new Error(( localize(
|
|
205
|
+
return Promise.reject(( new Error(( localize(8066, "No debug adapter, can not start debug session.")))));
|
|
206
206
|
}
|
|
207
207
|
await this.debugAdapter.startSession();
|
|
208
208
|
this.startTime = ( new Date()).getTime();
|
|
@@ -535,10 +535,10 @@ let RawDebugSession = class RawDebugSession {
|
|
|
535
535
|
} = await this.dialogSerivce.confirm({
|
|
536
536
|
type: Severity.Warning,
|
|
537
537
|
message: ( localize(
|
|
538
|
-
|
|
538
|
+
8067,
|
|
539
539
|
"The debugger needs to open a new tab or window for the debuggee but the browser prevented this. You must give permission to continue."
|
|
540
540
|
)),
|
|
541
|
-
primaryButton: ( localize(
|
|
541
|
+
primaryButton: ( localize(8068, "&&Continue"))
|
|
542
542
|
});
|
|
543
543
|
if (confirmed) {
|
|
544
544
|
result = await this.launchVsCode(request.arguments);
|
|
@@ -628,7 +628,7 @@ let RawDebugSession = class RawDebugSession {
|
|
|
628
628
|
if (this.inShutdown) {
|
|
629
629
|
completeDispatch(undefined);
|
|
630
630
|
} else {
|
|
631
|
-
errorDispatch(( new Error(( localize(
|
|
631
|
+
errorDispatch(( new Error(( localize(8069, "No debugger available found. Can not send '{0}'.", command)))));
|
|
632
632
|
}
|
|
633
633
|
return;
|
|
634
634
|
}
|
|
@@ -665,7 +665,7 @@ let RawDebugSession = class RawDebugSession {
|
|
|
665
665
|
const userMessage = error ? formatPII(error.format, false, error.variables) : errorMessage;
|
|
666
666
|
const url = error?.url;
|
|
667
667
|
if (error && url) {
|
|
668
|
-
const label = error.urlLabel ? error.urlLabel : ( localize(
|
|
668
|
+
const label = error.urlLabel ? error.urlLabel : ( localize(8070, "More Info"));
|
|
669
669
|
const uri = ( URI.parse(url));
|
|
670
670
|
const actionId = uri.scheme === Schemas.command ? "debug.moreInfo.command" : "debug.moreInfo";
|
|
671
671
|
return createErrorWithActions(userMessage, [toAction({
|
|
@@ -700,7 +700,7 @@ let RawDebugSession = class RawDebugSession {
|
|
|
700
700
|
});
|
|
701
701
|
}
|
|
702
702
|
dispose() {
|
|
703
|
-
|
|
703
|
+
this.toDispose.dispose();
|
|
704
704
|
}
|
|
705
705
|
};
|
|
706
706
|
RawDebugSession = ( __decorate([( __param(4, IExtensionHostDebugService)), ( __param(5, IOpenerService)), ( __param(6, INotificationService)), ( __param(7, IDialogService))], RawDebugSession));
|
|
@@ -7,18 +7,17 @@ import { AccessibilityVerbositySettingId } from "@codingame/monaco-vscode-api/vs
|
|
|
7
7
|
export declare class ReplAccessibilityHelp implements IAccessibleViewImplementation {
|
|
8
8
|
priority: number;
|
|
9
9
|
name: string;
|
|
10
|
-
when: import("@codingame/monaco-vscode-api/vscode/vs/platform/contextkey/common/contextkey").ContextKeyExpression;
|
|
10
|
+
when: import("@codingame/monaco-vscode-api/vscode/vs/platform/contextkey/common/contextkey").ContextKeyExpression | undefined;
|
|
11
11
|
type: AccessibleViewType;
|
|
12
12
|
getProvider(accessor: ServicesAccessor): ReplAccessibilityHelpProvider | undefined;
|
|
13
13
|
}
|
|
14
14
|
declare class ReplAccessibilityHelpProvider extends Disposable implements IAccessibleViewContentProvider {
|
|
15
15
|
private readonly _replView;
|
|
16
16
|
readonly id = AccessibleViewProviderId.ReplHelp;
|
|
17
|
-
readonly verbositySettingKey = AccessibilityVerbositySettingId.
|
|
17
|
+
readonly verbositySettingKey = AccessibilityVerbositySettingId.Find;
|
|
18
18
|
readonly options: {
|
|
19
19
|
type: AccessibleViewType;
|
|
20
20
|
};
|
|
21
|
-
private _treeHadFocus;
|
|
22
21
|
constructor(_replView: Repl);
|
|
23
22
|
onClose(): void;
|
|
24
23
|
provideContent(): string;
|
|
@@ -6,12 +6,13 @@ import { getReplView } from '@codingame/monaco-vscode-api/vscode/vs/workbench/co
|
|
|
6
6
|
import { IViewsService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/services/views/common/viewsService.service';
|
|
7
7
|
import { AccessibilityVerbositySettingId } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/accessibility/browser/accessibilityConfiguration';
|
|
8
8
|
import { localize } from '@codingame/monaco-vscode-api/vscode/vs/nls';
|
|
9
|
+
import { CONTEXT_IN_DEBUG_REPL } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/debug/common/debug';
|
|
9
10
|
|
|
10
11
|
class ReplAccessibilityHelp {
|
|
11
12
|
constructor() {
|
|
12
13
|
this.priority = 120;
|
|
13
14
|
this.name = "replHelp";
|
|
14
|
-
this.when = ( ContextKeyExpr.equals("focusedView", "workbench.panel.repl.view"));
|
|
15
|
+
this.when = ( ContextKeyExpr.or(( ContextKeyExpr.equals("focusedView", "workbench.panel.repl.view")), CONTEXT_IN_DEBUG_REPL));
|
|
15
16
|
this.type = AccessibleViewType.Help;
|
|
16
17
|
}
|
|
17
18
|
getProvider(accessor) {
|
|
@@ -28,51 +29,119 @@ class ReplAccessibilityHelpProvider extends Disposable {
|
|
|
28
29
|
super();
|
|
29
30
|
this._replView = _replView;
|
|
30
31
|
this.id = AccessibleViewProviderId.ReplHelp;
|
|
31
|
-
this.verbositySettingKey = AccessibilityVerbositySettingId.
|
|
32
|
+
this.verbositySettingKey = AccessibilityVerbositySettingId.Find;
|
|
32
33
|
this.options = {
|
|
33
34
|
type: AccessibleViewType.Help
|
|
34
35
|
};
|
|
35
|
-
this._treeHadFocus = false;
|
|
36
|
-
this._treeHadFocus = !!_replView.getFocusedElement();
|
|
37
36
|
}
|
|
38
37
|
onClose() {
|
|
39
|
-
|
|
40
|
-
return this._replView.focusTree();
|
|
41
|
-
}
|
|
42
|
-
this._replView.getReplInput().focus();
|
|
38
|
+
this._replView.focusFilter();
|
|
43
39
|
}
|
|
44
40
|
provideContent() {
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
41
|
+
const content = [];
|
|
42
|
+
content.push(( localize(8089, "Accessibility Help: Debug Console Filter")));
|
|
43
|
+
content.push(( localize(
|
|
44
|
+
8090,
|
|
45
|
+
"You are in the Debug Console filter input. This is a filter that instantly hides console messages that do not match your filter, showing only the messages you want to see."
|
|
46
|
+
)));
|
|
47
|
+
content.push("");
|
|
48
|
+
content.push(( localize(8091, "Current Filter Status:")));
|
|
49
|
+
content.push(( localize(8092, "You are filtering the console output.")));
|
|
50
|
+
content.push("");
|
|
51
|
+
content.push(( localize(8093, "Inside the Filter Input (What It Does):")));
|
|
52
|
+
content.push(( localize(
|
|
53
|
+
8094,
|
|
54
|
+
"While you are in the filter input, your focus stays in the field. You can type, edit, or adjust your filter without leaving the input. As you type, the console instantly updates to show only messages matching your filter."
|
|
55
|
+
)));
|
|
56
|
+
content.push("");
|
|
57
|
+
content.push(( localize(8095, "What Happens When You Filter:")));
|
|
58
|
+
content.push(( localize(
|
|
59
|
+
8096,
|
|
60
|
+
"Each time you change the filter text, the console instantly regenerates to show only matching messages. Your screen reader announces how many messages are now visible. This is live feedback: text searches console output, variable values, and log messages."
|
|
61
|
+
)));
|
|
62
|
+
content.push("");
|
|
63
|
+
content.push(( localize(8097, "Focus Behavior (Important):")));
|
|
64
|
+
content.push(( localize(
|
|
65
|
+
8098,
|
|
66
|
+
"Your focus stays in the filter input while the console updates in the background. This is intentional, so you can keep typing without losing your place."
|
|
67
|
+
)));
|
|
68
|
+
content.push(( localize(
|
|
69
|
+
8099,
|
|
70
|
+
"If you want to review the filtered console output, press Down Arrow to move focus from the filter into the console messages above."
|
|
71
|
+
)));
|
|
72
|
+
content.push(( localize(
|
|
73
|
+
8100,
|
|
74
|
+
"Important: The console input area is at the bottom of the console, separate from the filter. To evaluate expressions, navigate to the console input (after the filtered messages) and type your expression."
|
|
75
|
+
)));
|
|
76
|
+
content.push("");
|
|
77
|
+
content.push(( localize(8101, "Distinguishing Filter from Console Input:")));
|
|
78
|
+
content.push(( localize(
|
|
79
|
+
8102,
|
|
80
|
+
"The filter input is where you are now. It hides or shows messages without running code."
|
|
81
|
+
)));
|
|
82
|
+
content.push(( localize(
|
|
83
|
+
8103,
|
|
84
|
+
"The console input is at the bottom of the console, after all displayed messages. That is where you type and press Enter to evaluate expressions during debugging."
|
|
85
|
+
)));
|
|
86
|
+
content.push(( localize(
|
|
87
|
+
8104,
|
|
88
|
+
"To switch to the console input and evaluate an expression, use {0} to focus the console input.",
|
|
89
|
+
"<keybinding:workbench.panel.repl.view.focus>"
|
|
90
|
+
)));
|
|
91
|
+
content.push("");
|
|
92
|
+
content.push(( localize(8105, "Filter Syntax and Patterns:")));
|
|
93
|
+
content.push(( localize(8106, "- Type text: Shows only messages containing that text.")));
|
|
94
|
+
content.push(( localize(
|
|
95
|
+
8107,
|
|
96
|
+
"- !text (exclude): Hides messages containing the text, showing all others."
|
|
97
|
+
)));
|
|
98
|
+
content.push("");
|
|
99
|
+
content.push(( localize(8108, "Keyboard Navigation Summary:")));
|
|
100
|
+
content.push(( localize(8109, "- Down Arrow: Move focus from filter into the console output.")));
|
|
101
|
+
content.push(( localize(8110, "- Tab: Move to other console controls if available.")));
|
|
102
|
+
content.push(( localize(8111, "- Escape: Clear the filter or close the filter.")));
|
|
103
|
+
content.push(( localize(
|
|
104
|
+
8112,
|
|
105
|
+
"- {0}: Focus the console input to evaluate expressions.",
|
|
48
106
|
"<keybinding:workbench.panel.repl.view.focus>"
|
|
49
|
-
))
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
"
|
|
60
|
-
))
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
"
|
|
64
|
-
))
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
"
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
"
|
|
75
|
-
))
|
|
107
|
+
)));
|
|
108
|
+
content.push("");
|
|
109
|
+
content.push(( localize(
|
|
110
|
+
8113,
|
|
111
|
+
"Settings You Can Adjust ({0} opens Settings):",
|
|
112
|
+
"<keybinding:workbench.action.openSettings>"
|
|
113
|
+
)));
|
|
114
|
+
content.push(( localize(8114, "These settings affect the Debug Console.")));
|
|
115
|
+
content.push(( localize(
|
|
116
|
+
8115,
|
|
117
|
+
"- `accessibility.verbosity.find`: Controls whether the filter input announces the Accessibility Help hint."
|
|
118
|
+
)));
|
|
119
|
+
content.push(( localize(
|
|
120
|
+
8116,
|
|
121
|
+
"- `debug.console.closeOnEnd`: Automatically close the Debug Console when the debugging session ends."
|
|
122
|
+
)));
|
|
123
|
+
content.push(( localize(8117, "- `debug.console.fontSize`: Font size in the console.")));
|
|
124
|
+
content.push(( localize(8118, "- `debug.console.fontFamily`: Font family in the console.")));
|
|
125
|
+
content.push(( localize(8119, "- `debug.console.wordWrap`: Wrap lines in the console.")));
|
|
126
|
+
content.push(( localize(
|
|
127
|
+
8120,
|
|
128
|
+
"- `debug.console.historySuggestions`: Suggest previously typed input."
|
|
129
|
+
)));
|
|
130
|
+
content.push(( localize(
|
|
131
|
+
8121,
|
|
132
|
+
"- `debug.console.collapseIdenticalLines`: Collapse repeated messages with a count."
|
|
133
|
+
)));
|
|
134
|
+
content.push(( localize(
|
|
135
|
+
8122,
|
|
136
|
+
"- `debug.console.maximumLines`: Maximum number of messages to keep in the console."
|
|
137
|
+
)));
|
|
138
|
+
content.push("");
|
|
139
|
+
content.push(( localize(8123, "Closing:")));
|
|
140
|
+
content.push(( localize(
|
|
141
|
+
8124,
|
|
142
|
+
"Press Escape to clear the filter, or close the Debug Console. Your filter text is preserved if you reopen the console."
|
|
143
|
+
)));
|
|
144
|
+
return content.join("\n");
|
|
76
145
|
}
|
|
77
146
|
}
|
|
78
147
|
|