@codingame/monaco-vscode-debug-service-override 1.83.1 → 1.83.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/breakpointEditorContribution.js +98 -155
- package/vscode/src/vs/workbench/contrib/debug/browser/disassemblyView.js +46 -50
- package/vscode/src/vs/workbench/contrib/debug/browser/welcomeView.js +21 -35
- package/vscode/src/vs/workbench/contrib/debug/common/debugModel.js +102 -145
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@codingame/monaco-vscode-debug-service-override",
|
|
3
|
-
"version": "1.83.
|
|
3
|
+
"version": "1.83.2",
|
|
4
4
|
"keywords": [],
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "CodinGame",
|
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
"module": "index.js",
|
|
19
19
|
"types": "index.d.ts",
|
|
20
20
|
"dependencies": {
|
|
21
|
-
"vscode": "npm:@codingame/monaco-vscode-api@1.83.
|
|
21
|
+
"vscode": "npm:@codingame/monaco-vscode-api@1.83.2",
|
|
22
22
|
"monaco-editor": "0.44.0"
|
|
23
23
|
}
|
|
24
24
|
}
|
|
@@ -47,15 +47,15 @@ function createBreakpointDecorations(accessor, model, breakpoints, state, breakp
|
|
|
47
47
|
if (breakpoint.lineNumber > model.getLineCount()) {
|
|
48
48
|
return;
|
|
49
49
|
}
|
|
50
|
-
const hasOtherBreakpointsOnLine = (
|
|
50
|
+
const hasOtherBreakpointsOnLine = ( breakpoints.some(bp => bp !== breakpoint && bp.lineNumber === breakpoint.lineNumber));
|
|
51
51
|
const column = model.getLineFirstNonWhitespaceColumn(breakpoint.lineNumber);
|
|
52
|
-
const range = model.validateRange(breakpoint.column ? (
|
|
52
|
+
const range = model.validateRange(breakpoint.column ? ( new Range(
|
|
53
53
|
breakpoint.lineNumber,
|
|
54
54
|
breakpoint.column,
|
|
55
55
|
breakpoint.lineNumber,
|
|
56
56
|
breakpoint.column + 1
|
|
57
|
-
))
|
|
58
|
-
: (
|
|
57
|
+
))
|
|
58
|
+
: ( new Range(breakpoint.lineNumber, column, breakpoint.lineNumber, column + 1))
|
|
59
59
|
);
|
|
60
60
|
result.push({
|
|
61
61
|
options: getBreakpointDecorationOptions(accessor, model, breakpoint, state, breakpointsActivated, showBreakpointsInOverviewRuler, hasOtherBreakpointsOnLine),
|
|
@@ -72,7 +72,7 @@ function getBreakpointDecorationOptions(accessor, model, breakpoint, state, brea
|
|
|
72
72
|
let unverifiedMessage;
|
|
73
73
|
if (showAdapterUnverifiedMessage) {
|
|
74
74
|
let langId;
|
|
75
|
-
unverifiedMessage = (
|
|
75
|
+
unverifiedMessage = ( debugService.getModel().getSessions().map(s => {
|
|
76
76
|
const dbg = debugService.getAdapterManager().getDebugger(s.configuration.type);
|
|
77
77
|
const message = dbg?.strings?.[DebuggerString.UnverifiedBreakpoints];
|
|
78
78
|
if (message) {
|
|
@@ -82,11 +82,11 @@ function getBreakpointDecorationOptions(accessor, model, breakpoint, state, brea
|
|
|
82
82
|
return langId && dbg.interestedInLanguage(langId) ? message : undefined;
|
|
83
83
|
}
|
|
84
84
|
return undefined;
|
|
85
|
-
}))
|
|
85
|
+
}))
|
|
86
86
|
.find(messages => !!messages);
|
|
87
87
|
}
|
|
88
88
|
if (message) {
|
|
89
|
-
glyphMarginHoverMessage = (
|
|
89
|
+
glyphMarginHoverMessage = ( new MarkdownString(undefined, { isTrusted: true, supportThemeIcons: true }));
|
|
90
90
|
if (breakpoint.condition || breakpoint.hitCondition) {
|
|
91
91
|
const languageId = model.getLanguageId();
|
|
92
92
|
glyphMarginHoverMessage.appendCodeblock(languageId, message);
|
|
@@ -102,7 +102,7 @@ function getBreakpointDecorationOptions(accessor, model, breakpoint, state, brea
|
|
|
102
102
|
}
|
|
103
103
|
}
|
|
104
104
|
else if (unverifiedMessage) {
|
|
105
|
-
glyphMarginHoverMessage = (
|
|
105
|
+
glyphMarginHoverMessage = ( new MarkdownString(undefined, { isTrusted: true, supportThemeIcons: true })).appendMarkdown(unverifiedMessage);
|
|
106
106
|
}
|
|
107
107
|
let overviewRulerDecoration = null;
|
|
108
108
|
if (showBreakpointsInOverviewRuler) {
|
|
@@ -131,14 +131,14 @@ async function requestBreakpointCandidateLocations(model, lineNumbers, session)
|
|
|
131
131
|
if (!session.capabilities.supportsBreakpointLocationsRequest) {
|
|
132
132
|
return [];
|
|
133
133
|
}
|
|
134
|
-
return await Promise.all((
|
|
134
|
+
return await Promise.all(( distinct(lineNumbers, l => l).map(async (lineNumber) => {
|
|
135
135
|
try {
|
|
136
136
|
return { lineNumber, positions: await session.breakpointsLocations(model.uri, lineNumber) };
|
|
137
137
|
}
|
|
138
138
|
catch {
|
|
139
139
|
return { lineNumber, positions: [] };
|
|
140
140
|
}
|
|
141
|
-
})))
|
|
141
|
+
})));
|
|
142
142
|
}
|
|
143
143
|
function createCandidateDecorations(model, breakpointDecorations, lineBreakpoints) {
|
|
144
144
|
const result = [];
|
|
@@ -149,10 +149,10 @@ function createCandidateDecorations(model, breakpointDecorations, lineBreakpoint
|
|
|
149
149
|
const firstColumn = model.getLineFirstNonWhitespaceColumn(lineNumber);
|
|
150
150
|
const lastColumn = model.getLineLastNonWhitespaceColumn(lineNumber);
|
|
151
151
|
positions.forEach(p => {
|
|
152
|
-
const range = (
|
|
153
|
-
if ((p.column <= firstColumn && !(
|
|
152
|
+
const range = ( new Range(p.lineNumber, p.column, p.lineNumber, p.column + 1));
|
|
153
|
+
if ((p.column <= firstColumn && !( breakpointDecorations.some(
|
|
154
154
|
bp => bp.range.startColumn > firstColumn && bp.range.startLineNumber === p.lineNumber
|
|
155
|
-
)))
|
|
155
|
+
))) || p.column > lastColumn) {
|
|
156
156
|
return;
|
|
157
157
|
}
|
|
158
158
|
const breakpointAtPosition = breakpointDecorations.find(bpd => bpd.range.equalsRange(range));
|
|
@@ -192,7 +192,7 @@ let BreakpointEditorContribution = class BreakpointEditorContribution {
|
|
|
192
192
|
this.breakpointDecorations = [];
|
|
193
193
|
this.candidateDecorations = [];
|
|
194
194
|
this.breakpointWidgetVisible = CONTEXT_BREAKPOINT_WIDGET_VISIBLE.bindTo(contextKeyService);
|
|
195
|
-
this.setDecorationsScheduler = (
|
|
195
|
+
this.setDecorationsScheduler = ( new RunOnceScheduler(() => this.setDecorations(), 30));
|
|
196
196
|
this.setDecorationsScheduler.schedule();
|
|
197
197
|
this.registerListeners();
|
|
198
198
|
}
|
|
@@ -230,44 +230,39 @@ let BreakpointEditorContribution = class BreakpointEditorContribution {
|
|
|
230
230
|
const breakpoints = this.debugService.getModel().getBreakpoints({ uri, lineNumber });
|
|
231
231
|
if (breakpoints.length) {
|
|
232
232
|
const isShiftPressed = e.event.shiftKey;
|
|
233
|
-
const enabled = (
|
|
233
|
+
const enabled = ( breakpoints.some(bp => bp.enabled));
|
|
234
234
|
if (isShiftPressed) {
|
|
235
235
|
breakpoints.forEach(bp => this.debugService.enableOrDisableBreakpoints(!enabled, bp));
|
|
236
236
|
}
|
|
237
|
-
else if (!platform.isLinux && (
|
|
237
|
+
else if (!platform.isLinux && ( breakpoints.some(bp => !!bp.condition || !!bp.logMessage || !!bp.hitCondition))) {
|
|
238
238
|
const logPoint = breakpoints.every(bp => !!bp.logMessage);
|
|
239
|
-
const breakpointType = logPoint ? (
|
|
240
|
-
const disabledBreakpointDialogMessage = (
|
|
239
|
+
const breakpointType = logPoint ? ( nls.localize('logPoint', "Logpoint")) : ( nls.localize('breakpoint', "Breakpoint"));
|
|
240
|
+
const disabledBreakpointDialogMessage = ( nls.localize(
|
|
241
241
|
'breakpointHasConditionDisabled',
|
|
242
242
|
"This {0} has a {1} that will get lost on remove. Consider enabling the {0} instead.",
|
|
243
243
|
breakpointType.toLowerCase(),
|
|
244
|
-
logPoint ? (
|
|
245
|
-
))
|
|
246
|
-
const enabledBreakpointDialogMessage = (
|
|
244
|
+
logPoint ? ( nls.localize('message', "message")) : ( nls.localize('condition', "condition"))
|
|
245
|
+
));
|
|
246
|
+
const enabledBreakpointDialogMessage = ( nls.localize(
|
|
247
247
|
'breakpointHasConditionEnabled',
|
|
248
248
|
"This {0} has a {1} that will get lost on remove. Consider disabling the {0} instead.",
|
|
249
249
|
breakpointType.toLowerCase(),
|
|
250
|
-
logPoint ? (
|
|
251
|
-
))
|
|
250
|
+
logPoint ? ( nls.localize('message', "message")) : ( nls.localize('condition', "condition"))
|
|
251
|
+
));
|
|
252
252
|
await this.dialogService.prompt({
|
|
253
253
|
type: Severity.Info,
|
|
254
254
|
message: enabled ? enabledBreakpointDialogMessage : disabledBreakpointDialogMessage,
|
|
255
255
|
buttons: [
|
|
256
256
|
{
|
|
257
|
-
label: (
|
|
257
|
+
label: ( nls.localize(
|
|
258
258
|
{ key: 'removeLogPoint', comment: ['&& denotes a mnemonic'] },
|
|
259
259
|
"&&Remove {0}",
|
|
260
260
|
breakpointType
|
|
261
|
-
))
|
|
261
|
+
)),
|
|
262
262
|
run: () => breakpoints.forEach(bp => this.debugService.removeBreakpoints(bp.getId()))
|
|
263
263
|
},
|
|
264
264
|
{
|
|
265
|
-
label: ( (nls.localize(
|
|
266
|
-
'disableLogPoint',
|
|
267
|
-
"{0} {1}",
|
|
268
|
-
enabled ? ( (nls.localize({ key: 'disable', comment: ['&& denotes a mnemonic'] }, "&&Disable"))) : ( (nls.localize({ key: 'enable', comment: ['&& denotes a mnemonic'] }, "&&Enable"))),
|
|
269
|
-
breakpointType
|
|
270
|
-
))),
|
|
265
|
+
label: ( nls.localize('disableLogPoint', "{0} {1}", enabled ? ( nls.localize({ key: 'disable', comment: ['&& denotes a mnemonic'] }, "&&Disable")) : ( nls.localize({ key: 'enable', comment: ['&& denotes a mnemonic'] }, "&&Enable")), breakpointType)),
|
|
271
266
|
run: () => breakpoints.forEach(bp => this.debugService.enableOrDisableBreakpoints(!enabled, bp))
|
|
272
267
|
}
|
|
273
268
|
],
|
|
@@ -332,104 +327,52 @@ let BreakpointEditorContribution = class BreakpointEditorContribution {
|
|
|
332
327
|
getContextMenuActions(breakpoints, uri, lineNumber, column) {
|
|
333
328
|
const actions = [];
|
|
334
329
|
if (breakpoints.length === 1) {
|
|
335
|
-
const breakpointType = breakpoints[0].logMessage ? (
|
|
336
|
-
actions.push((
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
async () => {
|
|
342
|
-
await this.debugService.removeBreakpoints(breakpoints[0].getId());
|
|
343
|
-
}
|
|
344
|
-
))));
|
|
345
|
-
actions.push(( (new Action(
|
|
346
|
-
'workbench.debug.action.editBreakpointAction',
|
|
347
|
-
(nls.localize('editBreakpoint', "Edit {0}...", breakpointType)),
|
|
348
|
-
undefined,
|
|
349
|
-
true,
|
|
350
|
-
() => Promise.resolve(this.showBreakpointWidget(breakpoints[0].lineNumber, breakpoints[0].column))
|
|
351
|
-
))));
|
|
352
|
-
actions.push(( (new Action(
|
|
330
|
+
const breakpointType = breakpoints[0].logMessage ? ( nls.localize('logPoint', "Logpoint")) : ( nls.localize('breakpoint', "Breakpoint"));
|
|
331
|
+
actions.push(( new Action('debug.removeBreakpoint', ( nls.localize('removeBreakpoint', "Remove {0}", breakpointType)), undefined, true, async () => {
|
|
332
|
+
await this.debugService.removeBreakpoints(breakpoints[0].getId());
|
|
333
|
+
})));
|
|
334
|
+
actions.push(( new Action('workbench.debug.action.editBreakpointAction', ( nls.localize('editBreakpoint', "Edit {0}...", breakpointType)), undefined, true, () => Promise.resolve(this.showBreakpointWidget(breakpoints[0].lineNumber, breakpoints[0].column)))));
|
|
335
|
+
actions.push(( new Action(
|
|
353
336
|
`workbench.debug.viewlet.action.toggleBreakpoint`,
|
|
354
|
-
breakpoints[0].enabled ? (
|
|
337
|
+
breakpoints[0].enabled ? ( nls.localize('disableBreakpoint', "Disable {0}", breakpointType)) : ( nls.localize('enableBreakpoint', "Enable {0}", breakpointType)),
|
|
355
338
|
undefined,
|
|
356
339
|
true,
|
|
357
340
|
() => this.debugService.enableOrDisableBreakpoints(!breakpoints[0].enabled, breakpoints[0])
|
|
358
|
-
)))
|
|
341
|
+
)));
|
|
359
342
|
}
|
|
360
343
|
else if (breakpoints.length > 1) {
|
|
361
344
|
const sorted = breakpoints.slice().sort((first, second) => (first.column && second.column) ? first.column - second.column : 1);
|
|
362
|
-
actions.push((
|
|
363
|
-
'
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
))
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
bp
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
bp.column
|
|
381
|
-
))) : ( (nls.localize('editLineBreakpoint', "Edit Line Breakpoint"))), undefined, true, () => Promise.resolve(this.showBreakpointWidget(bp.lineNumber, bp.column)))))
|
|
382
|
-
))
|
|
383
|
-
))));
|
|
384
|
-
actions.push(( (new SubmenuAction(
|
|
385
|
-
'debug.enableDisableBreakpoints',
|
|
386
|
-
(nls.localize('enableDisableBreakpoints', "Enable/Disable Breakpoints")),
|
|
387
|
-
(sorted.map(bp => ( (new Action(
|
|
388
|
-
bp.enabled ? 'disableColumnBreakpoint' : 'enableColumnBreakpoint',
|
|
389
|
-
bp.enabled ? (bp.column ? ( (nls.localize(
|
|
390
|
-
'disableInlineColumnBreakpoint',
|
|
391
|
-
"Disable Inline Breakpoint on Column {0}",
|
|
392
|
-
bp.column
|
|
393
|
-
))) : ( (nls.localize('disableBreakpointOnLine', "Disable Line Breakpoint"))))
|
|
394
|
-
: (bp.column ? ( (nls.localize('enableBreakpoints', "Enable Inline Breakpoint on Column {0}", bp.column))) : ( (nls.localize('enableBreakpointOnLine', "Enable Line Breakpoint")))),
|
|
395
|
-
undefined,
|
|
396
|
-
true,
|
|
397
|
-
() => this.debugService.enableOrDisableBreakpoints(!bp.enabled, bp)
|
|
398
|
-
)))))
|
|
399
|
-
))));
|
|
400
|
-
}
|
|
401
|
-
else {
|
|
402
|
-
actions.push(( (new Action(
|
|
403
|
-
'addBreakpoint',
|
|
404
|
-
(nls.localize('addBreakpoint', "Add Breakpoint")),
|
|
345
|
+
actions.push(( new SubmenuAction('debug.removeBreakpoints', ( nls.localize('removeBreakpoints', "Remove Breakpoints")), ( sorted.map(bp => ( new Action('removeInlineBreakpoint', bp.column ? ( nls.localize(
|
|
346
|
+
'removeInlineBreakpointOnColumn',
|
|
347
|
+
"Remove Inline Breakpoint on Column {0}",
|
|
348
|
+
bp.column
|
|
349
|
+
)) : ( nls.localize('removeLineBreakpoint', "Remove Line Breakpoint")), undefined, true, () => this.debugService.removeBreakpoints(bp.getId()))))))));
|
|
350
|
+
actions.push(( new SubmenuAction('debug.editBreakpoints', ( nls.localize('editBreakpoints', "Edit Breakpoints")), ( sorted.map(bp => ( new Action('editBreakpoint', bp.column ? ( nls.localize(
|
|
351
|
+
'editInlineBreakpointOnColumn',
|
|
352
|
+
"Edit Inline Breakpoint on Column {0}",
|
|
353
|
+
bp.column
|
|
354
|
+
)) : ( nls.localize('editLineBreakpoint', "Edit Line Breakpoint")), undefined, true, () => Promise.resolve(this.showBreakpointWidget(bp.lineNumber, bp.column)))))))));
|
|
355
|
+
actions.push(( new SubmenuAction('debug.enableDisableBreakpoints', ( nls.localize('enableDisableBreakpoints', "Enable/Disable Breakpoints")), ( sorted.map(bp => ( new Action(
|
|
356
|
+
bp.enabled ? 'disableColumnBreakpoint' : 'enableColumnBreakpoint',
|
|
357
|
+
bp.enabled ? (bp.column ? ( nls.localize(
|
|
358
|
+
'disableInlineColumnBreakpoint',
|
|
359
|
+
"Disable Inline Breakpoint on Column {0}",
|
|
360
|
+
bp.column
|
|
361
|
+
)) : ( nls.localize('disableBreakpointOnLine', "Disable Line Breakpoint")))
|
|
362
|
+
: (bp.column ? ( nls.localize('enableBreakpoints', "Enable Inline Breakpoint on Column {0}", bp.column)) : ( nls.localize('enableBreakpointOnLine', "Enable Line Breakpoint"))),
|
|
405
363
|
undefined,
|
|
406
364
|
true,
|
|
407
|
-
() => this.debugService.
|
|
408
|
-
))));
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
() => Promise.resolve(this.showBreakpointWidget(lineNumber, column, 0 ))
|
|
415
|
-
))));
|
|
416
|
-
actions.push(( (new Action(
|
|
417
|
-
'addLogPoint',
|
|
418
|
-
(nls.localize('addLogPoint', "Add Logpoint...")),
|
|
419
|
-
undefined,
|
|
420
|
-
true,
|
|
421
|
-
() => Promise.resolve(this.showBreakpointWidget(lineNumber, column, 2 ))
|
|
422
|
-
))));
|
|
365
|
+
() => this.debugService.enableOrDisableBreakpoints(!bp.enabled, bp)
|
|
366
|
+
)))))));
|
|
367
|
+
}
|
|
368
|
+
else {
|
|
369
|
+
actions.push(( new Action('addBreakpoint', ( nls.localize('addBreakpoint', "Add Breakpoint")), undefined, true, () => this.debugService.addBreakpoints(uri, [{ lineNumber, column }]))));
|
|
370
|
+
actions.push(( new Action('addConditionalBreakpoint', ( nls.localize('addConditionalBreakpoint', "Add Conditional Breakpoint...")), undefined, true, () => Promise.resolve(this.showBreakpointWidget(lineNumber, column, 0 )))));
|
|
371
|
+
actions.push(( new Action('addLogPoint', ( nls.localize('addLogPoint', "Add Logpoint...")), undefined, true, () => Promise.resolve(this.showBreakpointWidget(lineNumber, column, 2 )))));
|
|
423
372
|
}
|
|
424
373
|
if (this.debugService.state === 2 ) {
|
|
425
|
-
actions.push((
|
|
426
|
-
actions.push((
|
|
427
|
-
'runToLine',
|
|
428
|
-
(nls.localize('runToLine', "Run to Line")),
|
|
429
|
-
undefined,
|
|
430
|
-
true,
|
|
431
|
-
() => this.debugService.runTo(uri, lineNumber).catch(onUnexpectedError)
|
|
432
|
-
))));
|
|
374
|
+
actions.push(( new Separator()));
|
|
375
|
+
actions.push(( new Action('runToLine', ( nls.localize('runToLine', "Run to Line")), undefined, true, () => this.debugService.runTo(uri, lineNumber).catch(onUnexpectedError))));
|
|
433
376
|
}
|
|
434
377
|
return actions;
|
|
435
378
|
}
|
|
@@ -467,15 +410,15 @@ let BreakpointEditorContribution = class BreakpointEditorContribution {
|
|
|
467
410
|
}
|
|
468
411
|
const setCandidateDecorations = (changeAccessor, desiredCandidatePositions) => {
|
|
469
412
|
const desiredCandidateDecorations = createCandidateDecorations(model, this.breakpointDecorations, desiredCandidatePositions);
|
|
470
|
-
const candidateDecorationIds = changeAccessor.deltaDecorations((
|
|
413
|
+
const candidateDecorationIds = changeAccessor.deltaDecorations(( this.candidateDecorations.map(c => c.decorationId)), desiredCandidateDecorations);
|
|
471
414
|
this.candidateDecorations.forEach(candidate => {
|
|
472
415
|
candidate.inlineWidget.dispose();
|
|
473
416
|
});
|
|
474
|
-
this.candidateDecorations = (
|
|
417
|
+
this.candidateDecorations = ( candidateDecorationIds.map((decorationId, index) => {
|
|
475
418
|
const candidate = desiredCandidateDecorations[index];
|
|
476
419
|
const icon = candidate.breakpoint ? getBreakpointMessageAndIcon(this.debugService.state, this.debugService.getModel().areBreakpointsActivated(), candidate.breakpoint, this.labelService).icon : breakpoint.disabled;
|
|
477
420
|
const contextMenuActions = () => this.getContextMenuActions(candidate.breakpoint ? [candidate.breakpoint] : [], activeCodeEditor.getModel().uri, candidate.range.startLineNumber, candidate.range.startColumn);
|
|
478
|
-
const inlineWidget = (
|
|
421
|
+
const inlineWidget = ( new InlineBreakpointWidget(
|
|
479
422
|
activeCodeEditor,
|
|
480
423
|
decorationId,
|
|
481
424
|
ThemeIcon.asClassName(icon),
|
|
@@ -483,12 +426,12 @@ let BreakpointEditorContribution = class BreakpointEditorContribution {
|
|
|
483
426
|
this.debugService,
|
|
484
427
|
this.contextMenuService,
|
|
485
428
|
contextMenuActions
|
|
486
|
-
))
|
|
429
|
+
));
|
|
487
430
|
return {
|
|
488
431
|
decorationId,
|
|
489
432
|
inlineWidget
|
|
490
433
|
};
|
|
491
|
-
}))
|
|
434
|
+
}));
|
|
492
435
|
};
|
|
493
436
|
const activeCodeEditor = this.editor;
|
|
494
437
|
const model = activeCodeEditor.getModel();
|
|
@@ -496,7 +439,7 @@ let BreakpointEditorContribution = class BreakpointEditorContribution {
|
|
|
496
439
|
const debugSettings = this.configurationService.getValue('debug');
|
|
497
440
|
const desiredBreakpointDecorations = this.instantiationService.invokeFunction(accessor => createBreakpointDecorations(accessor, model, breakpoints, this.debugService.state, this.debugService.getModel().areBreakpointsActivated(), debugSettings.showBreakpointsInOverviewRuler));
|
|
498
441
|
const session = this.debugService.getViewModel().focusedSession;
|
|
499
|
-
const desiredCandidatePositions = debugSettings.showInlineBreakpointCandidates && session ? requestBreakpointCandidateLocations(this.editor.getModel(), (
|
|
442
|
+
const desiredCandidatePositions = debugSettings.showInlineBreakpointCandidates && session ? requestBreakpointCandidateLocations(this.editor.getModel(), ( desiredBreakpointDecorations.map(bp => bp.range.startLineNumber)), session) : Promise.resolve([]);
|
|
500
443
|
const desiredCandidatePositionsRaced = await Promise.race([desiredCandidatePositions, timeout(500).then(() => undefined)]);
|
|
501
444
|
if (desiredCandidatePositionsRaced === undefined) {
|
|
502
445
|
desiredCandidatePositions.then(v => activeCodeEditor.changeDecorations(d => setCandidateDecorations(d, v)));
|
|
@@ -504,16 +447,16 @@ let BreakpointEditorContribution = class BreakpointEditorContribution {
|
|
|
504
447
|
try {
|
|
505
448
|
this.ignoreDecorationsChangedEvent = true;
|
|
506
449
|
activeCodeEditor.changeDecorations((changeAccessor) => {
|
|
507
|
-
const decorationIds = changeAccessor.deltaDecorations((
|
|
450
|
+
const decorationIds = changeAccessor.deltaDecorations(( this.breakpointDecorations.map(bpd => bpd.decorationId)), desiredBreakpointDecorations);
|
|
508
451
|
this.breakpointDecorations.forEach(bpd => {
|
|
509
452
|
bpd.inlineWidget?.dispose();
|
|
510
453
|
});
|
|
511
|
-
this.breakpointDecorations = (
|
|
454
|
+
this.breakpointDecorations = ( decorationIds.map((decorationId, index) => {
|
|
512
455
|
let inlineWidget = undefined;
|
|
513
456
|
const breakpoint = breakpoints[index];
|
|
514
457
|
if (desiredBreakpointDecorations[index].options.before) {
|
|
515
458
|
const contextMenuActions = () => this.getContextMenuActions([breakpoint], activeCodeEditor.getModel().uri, breakpoint.lineNumber, breakpoint.column);
|
|
516
|
-
inlineWidget = (
|
|
459
|
+
inlineWidget = ( new InlineBreakpointWidget(
|
|
517
460
|
activeCodeEditor,
|
|
518
461
|
decorationId,
|
|
519
462
|
desiredBreakpointDecorations[index].options.glyphMarginClassName,
|
|
@@ -521,7 +464,7 @@ let BreakpointEditorContribution = class BreakpointEditorContribution {
|
|
|
521
464
|
this.debugService,
|
|
522
465
|
this.contextMenuService,
|
|
523
466
|
contextMenuActions
|
|
524
|
-
))
|
|
467
|
+
));
|
|
525
468
|
}
|
|
526
469
|
return {
|
|
527
470
|
decorationId,
|
|
@@ -529,7 +472,7 @@ let BreakpointEditorContribution = class BreakpointEditorContribution {
|
|
|
529
472
|
range: desiredBreakpointDecorations[index].range,
|
|
530
473
|
inlineWidget
|
|
531
474
|
};
|
|
532
|
-
}))
|
|
475
|
+
}));
|
|
533
476
|
if (desiredCandidatePositionsRaced) {
|
|
534
477
|
setCandidateDecorations(changeAccessor, desiredCandidatePositionsRaced);
|
|
535
478
|
}
|
|
@@ -563,7 +506,7 @@ let BreakpointEditorContribution = class BreakpointEditorContribution {
|
|
|
563
506
|
if (!somethingChanged) {
|
|
564
507
|
return;
|
|
565
508
|
}
|
|
566
|
-
const data = (
|
|
509
|
+
const data = ( new Map());
|
|
567
510
|
for (let i = 0, len = this.breakpointDecorations.length; i < len; i++) {
|
|
568
511
|
const breakpointDecoration = this.breakpointDecorations[i];
|
|
569
512
|
const decorationRange = model.getDecorationRange(breakpointDecoration.decorationId);
|
|
@@ -600,19 +543,19 @@ let BreakpointEditorContribution = class BreakpointEditorContribution {
|
|
|
600
543
|
}
|
|
601
544
|
dispose() {
|
|
602
545
|
this.breakpointWidget?.dispose();
|
|
603
|
-
this.editor.removeDecorations((
|
|
546
|
+
this.editor.removeDecorations(( this.breakpointDecorations.map(bpd => bpd.decorationId)));
|
|
604
547
|
dispose(this.toDispose);
|
|
605
548
|
}
|
|
606
549
|
};
|
|
607
|
-
BreakpointEditorContribution = (
|
|
608
|
-
(
|
|
609
|
-
(
|
|
610
|
-
(
|
|
611
|
-
(
|
|
612
|
-
(
|
|
613
|
-
(
|
|
614
|
-
(
|
|
615
|
-
], BreakpointEditorContribution))
|
|
550
|
+
BreakpointEditorContribution = ( __decorate([
|
|
551
|
+
( __param(1, IDebugService)),
|
|
552
|
+
( __param(2, IContextMenuService)),
|
|
553
|
+
( __param(3, IInstantiationService)),
|
|
554
|
+
( __param(4, IContextKeyService)),
|
|
555
|
+
( __param(5, IDialogService)),
|
|
556
|
+
( __param(6, IConfigurationService)),
|
|
557
|
+
( __param(7, ILabelService))
|
|
558
|
+
], BreakpointEditorContribution));
|
|
616
559
|
GutterActionsRegistry.registerGutterActionsGenerator(({ lineNumber, editor, accessor }, result) => {
|
|
617
560
|
const model = editor.getModel();
|
|
618
561
|
const debugService = accessor.get(IDebugService);
|
|
@@ -671,7 +614,7 @@ class InlineBreakpointWidget {
|
|
|
671
614
|
}
|
|
672
615
|
}));
|
|
673
616
|
this.toDispose.push(dom.addDisposableListener(this.domNode, dom.EventType.CONTEXT_MENU, e => {
|
|
674
|
-
const event = (
|
|
617
|
+
const event = ( new StandardMouseEvent(e));
|
|
675
618
|
const actions = this.getContextMenuActions();
|
|
676
619
|
this.contextMenuService.showContextMenu({
|
|
677
620
|
getAnchor: () => event,
|
|
@@ -714,14 +657,14 @@ class InlineBreakpointWidget {
|
|
|
714
657
|
dispose(this.toDispose);
|
|
715
658
|
}
|
|
716
659
|
}
|
|
717
|
-
InlineBreakpointWidget.__decorator = (
|
|
660
|
+
InlineBreakpointWidget.__decorator = ( __decorate([
|
|
718
661
|
memoize
|
|
719
|
-
], InlineBreakpointWidget.prototype, "getId", null))
|
|
662
|
+
], InlineBreakpointWidget.prototype, "getId", null));
|
|
720
663
|
registerThemingParticipant((theme, collector) => {
|
|
721
664
|
const debugIconBreakpointColor = theme.getColor(debugIconBreakpointForeground);
|
|
722
665
|
if (debugIconBreakpointColor) {
|
|
723
666
|
collector.addRule(`
|
|
724
|
-
${(
|
|
667
|
+
${( allBreakpoints.map(b => `.monaco-workbench ${ThemeIcon.asCSSSelector(b.regular)}`)).join(',\n ')},
|
|
725
668
|
.monaco-workbench ${ThemeIcon.asCSSSelector(debugBreakpointUnsupported)},
|
|
726
669
|
.monaco-workbench ${ThemeIcon.asCSSSelector(debugBreakpointHint)}:not([class*='codicon-debug-breakpoint']):not([class*='codicon-debug-stackframe']),
|
|
727
670
|
.monaco-workbench ${ThemeIcon.asCSSSelector(breakpoint.regular)}${ThemeIcon.asCSSSelector(debugStackframeFocused)}::after,
|
|
@@ -733,7 +676,7 @@ registerThemingParticipant((theme, collector) => {
|
|
|
733
676
|
const debugIconBreakpointDisabledColor = theme.getColor(debugIconBreakpointDisabledForeground);
|
|
734
677
|
if (debugIconBreakpointDisabledColor) {
|
|
735
678
|
collector.addRule(`
|
|
736
|
-
${(
|
|
679
|
+
${( allBreakpoints.map(b => `.monaco-workbench ${ThemeIcon.asCSSSelector(b.disabled)}`)).join(',\n ')} {
|
|
737
680
|
color: ${debugIconBreakpointDisabledColor};
|
|
738
681
|
}
|
|
739
682
|
`);
|
|
@@ -741,7 +684,7 @@ registerThemingParticipant((theme, collector) => {
|
|
|
741
684
|
const debugIconBreakpointUnverifiedColor = theme.getColor(debugIconBreakpointUnverifiedForeground);
|
|
742
685
|
if (debugIconBreakpointUnverifiedColor) {
|
|
743
686
|
collector.addRule(`
|
|
744
|
-
${(
|
|
687
|
+
${( allBreakpoints.map(b => `.monaco-workbench ${ThemeIcon.asCSSSelector(b.unverified)}`)).join(',\n ')} {
|
|
745
688
|
color: ${debugIconBreakpointUnverifiedColor};
|
|
746
689
|
}
|
|
747
690
|
`);
|
|
@@ -764,22 +707,22 @@ registerThemingParticipant((theme, collector) => {
|
|
|
764
707
|
`);
|
|
765
708
|
}
|
|
766
709
|
});
|
|
767
|
-
const debugIconBreakpointForeground = registerColor('debugIcon.breakpointForeground', { dark: '#E51400', light: '#E51400', hcDark: '#E51400', hcLight: '#E51400' }, (
|
|
768
|
-
const debugIconBreakpointDisabledForeground = registerColor('debugIcon.breakpointDisabledForeground', { dark: '#848484', light: '#848484', hcDark: '#848484', hcLight: '#848484' }, (
|
|
710
|
+
const debugIconBreakpointForeground = registerColor('debugIcon.breakpointForeground', { dark: '#E51400', light: '#E51400', hcDark: '#E51400', hcLight: '#E51400' }, ( nls.localize('debugIcon.breakpointForeground', 'Icon color for breakpoints.')));
|
|
711
|
+
const debugIconBreakpointDisabledForeground = registerColor('debugIcon.breakpointDisabledForeground', { dark: '#848484', light: '#848484', hcDark: '#848484', hcLight: '#848484' }, ( nls.localize(
|
|
769
712
|
'debugIcon.breakpointDisabledForeground',
|
|
770
713
|
'Icon color for disabled breakpoints.'
|
|
771
|
-
)))
|
|
772
|
-
const debugIconBreakpointUnverifiedForeground = registerColor('debugIcon.breakpointUnverifiedForeground', { dark: '#848484', light: '#848484', hcDark: '#848484', hcLight: '#848484' }, (
|
|
714
|
+
)));
|
|
715
|
+
const debugIconBreakpointUnverifiedForeground = registerColor('debugIcon.breakpointUnverifiedForeground', { dark: '#848484', light: '#848484', hcDark: '#848484', hcLight: '#848484' }, ( nls.localize(
|
|
773
716
|
'debugIcon.breakpointUnverifiedForeground',
|
|
774
717
|
'Icon color for unverified breakpoints.'
|
|
775
|
-
)))
|
|
776
|
-
const debugIconBreakpointCurrentStackframeForeground = registerColor('debugIcon.breakpointCurrentStackframeForeground', { dark: '#FFCC00', light: '#BE8700', hcDark: '#FFCC00', hcLight: '#BE8700' }, (
|
|
718
|
+
)));
|
|
719
|
+
const debugIconBreakpointCurrentStackframeForeground = registerColor('debugIcon.breakpointCurrentStackframeForeground', { dark: '#FFCC00', light: '#BE8700', hcDark: '#FFCC00', hcLight: '#BE8700' }, ( nls.localize(
|
|
777
720
|
'debugIcon.breakpointCurrentStackframeForeground',
|
|
778
721
|
'Icon color for the current breakpoint stack frame.'
|
|
779
|
-
)))
|
|
780
|
-
const debugIconBreakpointStackframeForeground = registerColor('debugIcon.breakpointStackframeForeground', { dark: '#89D185', light: '#89D185', hcDark: '#89D185', hcLight: '#89D185' }, (
|
|
722
|
+
)));
|
|
723
|
+
const debugIconBreakpointStackframeForeground = registerColor('debugIcon.breakpointStackframeForeground', { dark: '#89D185', light: '#89D185', hcDark: '#89D185', hcLight: '#89D185' }, ( nls.localize(
|
|
781
724
|
'debugIcon.breakpointStackframeForeground',
|
|
782
725
|
'Icon color for all breakpoint stack frames.'
|
|
783
|
-
)))
|
|
726
|
+
)));
|
|
784
727
|
|
|
785
728
|
export { BreakpointEditorContribution, createBreakpointDecorations, debugIconBreakpointForeground };
|