@codingame/monaco-vscode-debug-service-override 3.2.3 → 4.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.
Files changed (23) hide show
  1. package/override/vs/platform/dialogs/common/dialogs.js +2 -0
  2. package/package.json +2 -2
  3. package/vscode/src/vs/workbench/contrib/debug/browser/callStackView.js +32 -17
  4. package/vscode/src/vs/workbench/contrib/debug/browser/debug.contribution.js +34 -0
  5. package/vscode/src/vs/workbench/contrib/debug/browser/debugActionViewItems.js +16 -3
  6. package/vscode/src/vs/workbench/contrib/debug/browser/debugAdapterManager.js +2 -2
  7. package/vscode/src/vs/workbench/contrib/debug/browser/debugCommands.js +2 -2
  8. package/vscode/src/vs/workbench/contrib/debug/browser/debugEditorContribution.js +27 -12
  9. package/vscode/src/vs/workbench/contrib/debug/browser/debugHover.js +11 -1
  10. package/vscode/src/vs/workbench/contrib/debug/browser/debugService.js +5 -5
  11. package/vscode/src/vs/workbench/contrib/debug/browser/debugSession.js +39 -14
  12. package/vscode/src/vs/workbench/contrib/debug/browser/debugTaskRunner.js +4 -4
  13. package/vscode/src/vs/workbench/contrib/debug/browser/debugToolBar.js +18 -9
  14. package/vscode/src/vs/workbench/contrib/debug/browser/disassemblyView.js +21 -12
  15. package/vscode/src/vs/workbench/contrib/debug/browser/exceptionWidget.js +11 -1
  16. package/vscode/src/vs/workbench/contrib/debug/browser/extensionHostDebugService.js +1 -0
  17. package/vscode/src/vs/workbench/contrib/debug/browser/repl.js +12 -2
  18. package/vscode/src/vs/workbench/contrib/debug/browser/replViewer.js +8 -4
  19. package/vscode/src/vs/workbench/contrib/debug/browser/statusbarColorProvider.js +12 -2
  20. package/vscode/src/vs/workbench/contrib/debug/browser/variablesView.js +27 -56
  21. package/vscode/src/vs/workbench/contrib/debug/common/debugStorage.js +5 -1
  22. package/vscode/src/vs/workbench/contrib/debug/common/debugViewModel.js +12 -10
  23. package/vscode/src/vs/workbench/services/configurationResolver/browser/configurationResolverService.js +1 -0
@@ -1,3 +1,5 @@
1
+ export { AbstractDialogHandler, IDialogService, IFileDialogService, getFileNamesMessage } from 'vscode/vscode/vs/platform/dialogs/common/dialogs';
2
+
1
3
  var ConfirmResult;
2
4
  ( (function(ConfirmResult) {
3
5
  ConfirmResult[ConfirmResult["SAVE"] = 0] = "SAVE";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@codingame/monaco-vscode-debug-service-override",
3
- "version": "3.2.3",
3
+ "version": "4.0.0",
4
4
  "keywords": [],
5
5
  "author": {
6
6
  "name": "CodinGame",
@@ -18,6 +18,6 @@
18
18
  "module": "index.js",
19
19
  "types": "index.d.ts",
20
20
  "dependencies": {
21
- "vscode": "npm:@codingame/monaco-vscode-api@3.2.3"
21
+ "vscode": "npm:@codingame/monaco-vscode-api@4.0.0"
22
22
  }
23
23
  }
@@ -23,7 +23,17 @@ import { WorkbenchCompressibleAsyncDataTree } from 'vscode/vscode/vs/platform/li
23
23
  import { INotificationService } from 'vscode/vscode/vs/platform/notification/common/notification';
24
24
  import { IOpenerService } from 'vscode/vscode/vs/platform/opener/common/opener';
25
25
  import { ITelemetryService } from 'vscode/vscode/vs/platform/telemetry/common/telemetry';
26
- import { asCssVariable, textLinkForeground } from 'vscode/vscode/vs/platform/theme/common/colorRegistry';
26
+ import { asCssVariable } from 'vscode/vscode/vs/platform/theme/common/colorUtils';
27
+ import { textLinkForeground } from 'vscode/vscode/vs/platform/theme/common/colors/baseColors';
28
+ import 'vscode/vscode/vs/platform/theme/common/colors/chartsColors';
29
+ import 'vscode/vscode/vs/platform/theme/common/colors/editorColors';
30
+ import 'vscode/vscode/vs/platform/theme/common/colors/inputColors';
31
+ import 'vscode/vscode/vs/platform/theme/common/colors/listColors';
32
+ import 'vscode/vscode/vs/platform/theme/common/colors/menuColors';
33
+ import 'vscode/vscode/vs/platform/theme/common/colors/minimapColors';
34
+ import 'vscode/vscode/vs/platform/theme/common/colors/miscColors';
35
+ import 'vscode/vscode/vs/platform/theme/common/colors/quickpickColors';
36
+ import 'vscode/vscode/vs/platform/theme/common/colors/searchColors';
27
37
  import { IThemeService } from 'vscode/vscode/vs/platform/theme/common/themeService';
28
38
  import { ThemeIcon } from 'vscode/vscode/vs/base/common/themables';
29
39
  import { ViewAction, ViewPane } from 'vscode/vscode/vs/workbench/browser/parts/views/viewPane';
@@ -35,6 +45,8 @@ import { createDisconnectMenuItemAction } from './debugToolBar.js';
35
45
  import { CALLSTACK_VIEW_ID, CONTEXT_DEBUG_STATE, getStateLabel, CONTEXT_CALLSTACK_ITEM_TYPE, CONTEXT_CALLSTACK_SESSION_HAS_ONE_THREAD, CONTEXT_FOCUSED_SESSION_IS_NO_DEBUG, CONTEXT_CALLSTACK_ITEM_STOPPED, CONTEXT_CALLSTACK_SESSION_IS_ATTACH, CONTEXT_STACK_FRAME_SUPPORTS_RESTART, IDebugService } from 'vscode/vscode/vs/workbench/contrib/debug/common/debug';
36
46
  import { Thread, StackFrame, ThreadAndSessionIds } from 'vscode/vscode/vs/workbench/contrib/debug/common/debugModel';
37
47
  import { isSessionAttach } from 'vscode/vscode/vs/workbench/contrib/debug/common/debugUtils';
48
+ import { setupCustomHover } from 'vscode/vscode/vs/base/browser/ui/hover/updatableHoverWidget';
49
+ import { getDefaultHoverDelegate } from 'vscode/vscode/vs/base/browser/ui/hover/hoverDelegateFactory';
38
50
 
39
51
  var SessionsRenderer_1, ThreadsRenderer_1, StackFramesRenderer_1;
40
52
  const $ = $$1;
@@ -125,7 +137,7 @@ let CallStackView = class CallStackView extends ViewPane {
125
137
  const stoppedDetails = sessions.length === 1 ? sessions[0].getStoppedDetails() : undefined;
126
138
  if (stoppedDetails && (thread || typeof stoppedDetails.threadId !== 'number')) {
127
139
  this.stateMessageLabel.textContent = stoppedDescription(stoppedDetails);
128
- this.stateMessageLabel.title = stoppedText(stoppedDetails);
140
+ this.stateMessageLabelHover.update(stoppedText(stoppedDetails));
129
141
  this.stateMessageLabel.classList.toggle('exception', stoppedDetails.reason === 'exception');
130
142
  this.stateMessage.hidden = false;
131
143
  }
@@ -135,7 +147,7 @@ let CallStackView = class CallStackView extends ViewPane {
135
147
  { key: 'running', comment: ['indicates state'] },
136
148
  "Running"
137
149
  ));
138
- this.stateMessageLabel.title = sessions[0].getLabel();
150
+ this.stateMessageLabelHover.update(sessions[0].getLabel());
139
151
  this.stateMessageLabel.classList.remove('exception');
140
152
  this.stateMessage.hidden = false;
141
153
  }
@@ -171,6 +183,7 @@ let CallStackView = class CallStackView extends ViewPane {
171
183
  this.stateMessage = append(container, $('span.call-stack-state-message'));
172
184
  this.stateMessage.hidden = true;
173
185
  this.stateMessageLabel = append(this.stateMessage, $('span.label'));
186
+ this.stateMessageLabelHover = this._register(setupCustomHover(getDefaultHoverDelegate('mouse'), this.stateMessage, ''));
174
187
  }
175
188
  renderBody(container) {
176
189
  super.renderBody(container);
@@ -294,6 +307,7 @@ let CallStackView = class CallStackView extends ViewPane {
294
307
  }
295
308
  if (!this.isBodyVisible()) {
296
309
  this.needsRefresh = true;
310
+ this.selectionNeedsUpdate = true;
297
311
  return;
298
312
  }
299
313
  if (this.onCallStackChangeScheduler.isScheduled()) {
@@ -444,8 +458,8 @@ let SessionsRenderer = class SessionsRenderer {
444
458
  append(session, $(ThemeIcon.asCSSSelector(callstackViewSession)));
445
459
  const name = append(session, $('.name'));
446
460
  const stateLabel = append(session, $('span.state.label.monaco-count-badge.long'));
447
- const label = ( new HighlightedLabel(name));
448
461
  const templateDisposable = ( new DisposableStore());
462
+ const label = templateDisposable.add(( new HighlightedLabel(name)));
449
463
  const stopActionViewItemDisposables = templateDisposable.add(( new DisposableStore()));
450
464
  const actionBar = templateDisposable.add(( new ActionBar(session, {
451
465
  actionViewItemProvider: (action, options) => {
@@ -457,10 +471,10 @@ let SessionsRenderer = class SessionsRenderer {
457
471
  }
458
472
  }
459
473
  if (action instanceof MenuItemAction) {
460
- return this.instantiationService.createInstance(MenuEntryActionViewItem, action, undefined);
474
+ return this.instantiationService.createInstance(MenuEntryActionViewItem, action, { hoverDelegate: options.hoverDelegate });
461
475
  }
462
476
  else if (action instanceof SubmenuItemAction) {
463
- return this.instantiationService.createInstance(SubmenuEntryActionViewItem, action, undefined);
477
+ return this.instantiationService.createInstance(SubmenuEntryActionViewItem, action, { hoverDelegate: options.hoverDelegate });
464
478
  }
465
479
  return undefined;
466
480
  }
@@ -477,11 +491,11 @@ let SessionsRenderer = class SessionsRenderer {
477
491
  this.doRenderElement(lastElement, matches, templateData);
478
492
  }
479
493
  doRenderElement(session, matches, data) {
480
- data.session.title = ( localizeWithPath(
494
+ const sessionHover = data.elementDisposable.add(setupCustomHover(getDefaultHoverDelegate('mouse'), data.session, ( localizeWithPath(
481
495
  'vs/workbench/contrib/debug/browser/callStackView',
482
496
  { key: 'session', comment: ['Session is a noun'] },
483
497
  "Session"
484
- ));
498
+ ))));
485
499
  data.label.set(session.getLabel(), matches);
486
500
  const stoppedDetails = session.getStoppedDetails();
487
501
  const thread = session.getAllThreads().find(t => t.stopped);
@@ -501,12 +515,12 @@ let SessionsRenderer = class SessionsRenderer {
501
515
  data.stateLabel.style.display = '';
502
516
  if (stoppedDetails) {
503
517
  data.stateLabel.textContent = stoppedDescription(stoppedDetails);
504
- data.session.title = `${session.getLabel()}: ${stoppedText(stoppedDetails)}`;
518
+ sessionHover.update(`${session.getLabel()}: ${stoppedText(stoppedDetails)}`);
505
519
  data.stateLabel.classList.toggle('exception', stoppedDetails.reason === 'exception');
506
520
  }
507
521
  else if (thread && thread.stoppedDetails) {
508
522
  data.stateLabel.textContent = stoppedDescription(thread.stoppedDetails);
509
- data.session.title = `${session.getLabel()}: ${stoppedText(thread.stoppedDetails)}`;
523
+ sessionHover.update(`${session.getLabel()}: ${stoppedText(thread.stoppedDetails)}`);
510
524
  data.stateLabel.classList.toggle('exception', thread.stoppedDetails.reason === 'exception');
511
525
  }
512
526
  else {
@@ -553,15 +567,15 @@ let ThreadsRenderer = class ThreadsRenderer {
553
567
  const thread = append(container, $('.thread'));
554
568
  const name = append(thread, $('.name'));
555
569
  const stateLabel = append(thread, $('span.state.label.monaco-count-badge.long'));
556
- const label = ( new HighlightedLabel(name));
557
570
  const templateDisposable = ( new DisposableStore());
571
+ const label = templateDisposable.add(( new HighlightedLabel(name)));
558
572
  const actionBar = templateDisposable.add(( new ActionBar(thread)));
559
573
  const elementDisposable = templateDisposable.add(( new DisposableStore()));
560
574
  return { thread, name, stateLabel, label, actionBar, elementDisposable, templateDisposable };
561
575
  }
562
576
  renderElement(element, _index, data) {
563
577
  const thread = element.element;
564
- data.thread.title = thread.name;
578
+ data.elementDisposable.add(setupCustomHover(getDefaultHoverDelegate('mouse'), data.thread, thread.name));
565
579
  data.label.set(thread.name, createMatches(element.filterData));
566
580
  data.stateLabel.textContent = thread.stateLabel;
567
581
  data.stateLabel.classList.toggle('exception', thread.stoppedDetails?.reason === 'exception');
@@ -616,8 +630,8 @@ let StackFramesRenderer = class StackFramesRenderer {
616
630
  const fileName = append(file, $('span.file-name'));
617
631
  const wrapper = append(file, $('span.line-number-wrapper'));
618
632
  const lineNumber = append(wrapper, $('span.line-number.monaco-count-badge'));
619
- const label = ( new HighlightedLabel(labelDiv));
620
633
  const templateDisposable = ( new DisposableStore());
634
+ const label = templateDisposable.add(( new HighlightedLabel(labelDiv)));
621
635
  const actionBar = templateDisposable.add(( new ActionBar(stackFrame)));
622
636
  return { file, fileName, label, lineNumber, stackFrame, actionBar, templateDisposable };
623
637
  }
@@ -628,10 +642,11 @@ let StackFramesRenderer = class StackFramesRenderer {
628
642
  data.stackFrame.classList.toggle('subtle', stackFrame.presentationHint === 'subtle');
629
643
  const hasActions = !!stackFrame.thread.session.capabilities.supportsRestartFrame && stackFrame.presentationHint !== 'label' && stackFrame.presentationHint !== 'subtle' && stackFrame.canRestart;
630
644
  data.stackFrame.classList.toggle('has-actions', hasActions);
631
- data.file.title = stackFrame.source.inMemory ? stackFrame.source.uri.path : this.labelService.getUriLabel(stackFrame.source.uri);
645
+ let title = stackFrame.source.inMemory ? stackFrame.source.uri.path : this.labelService.getUriLabel(stackFrame.source.uri);
632
646
  if (stackFrame.source.raw.origin) {
633
- data.file.title += `\n${stackFrame.source.raw.origin}`;
647
+ title += `\n${stackFrame.source.raw.origin}`;
634
648
  }
649
+ data.templateDisposable.add(setupCustomHover(getDefaultHoverDelegate('mouse'), data.file, title));
635
650
  data.label.set(stackFrame.name, createMatches(element.filterData), stackFrame.name);
636
651
  data.fileName.textContent = getSpecificSourceName(stackFrame);
637
652
  if (stackFrame.range.startLineNumber !== undefined) {
@@ -679,12 +694,12 @@ class ErrorsRenderer {
679
694
  }
680
695
  renderTemplate(container) {
681
696
  const label = append(container, $('.error'));
682
- return { label };
697
+ return { label, templateDisposable: ( new DisposableStore()) };
683
698
  }
684
699
  renderElement(element, index, data) {
685
700
  const error = element.element;
686
701
  data.label.textContent = error;
687
- data.label.title = error;
702
+ data.templateDisposable.add(setupCustomHover(getDefaultHoverDelegate('mouse'), data.label, error));
688
703
  }
689
704
  renderCompressedElements(node, index, templateData, height) {
690
705
  throw new Error('Method not implemented.');
@@ -27,6 +27,7 @@ import { DebugEditorContribution } from './debugEditorContribution.js';
27
27
  import { debugRun, debugConsoleViewIcon, runViewIcon, variablesViewIcon, watchViewIcon, callStackViewIcon, breakpointsViewIcon, loadedScriptsViewIcon, debugInspectMemory, watchExpressionRemove } from 'vscode/vscode/vs/workbench/contrib/debug/browser/debugIcons';
28
28
  import { DebugProgressContribution } from './debugProgress.js';
29
29
  import { StartDebugQuickAccessProvider } from './debugQuickAccess.js';
30
+ import './debugService.js';
30
31
  import { DebugStatusContribution } from './debugStatus.js';
31
32
  import { DebugTitleContribution } from './debugTitle.js';
32
33
  import { DebugToolBar } from './debugToolBar.js';
@@ -41,6 +42,7 @@ import { WelcomeView } from './welcomeView.js';
41
42
  import { BREAKPOINT_EDITOR_CONTRIBUTION_ID, EDITOR_CONTRIBUTION_ID, CONTEXT_DEBUG_STATE, CONTEXT_IN_DEBUG_MODE, CONTEXT_STEP_INTO_TARGETS_SUPPORTED, CONTEXT_FOCUSED_SESSION_IS_NO_DEBUG, CONTEXT_FOCUSED_SESSION_IS_ATTACH, CONTEXT_TERMINATE_DEBUGGEE_SUPPORTED, CONTEXT_SUSPEND_DEBUGGEE_SUPPORTED, CONTEXT_DEBUGGERS_AVAILABLE, getStateLabel, CONTEXT_CALLSTACK_ITEM_TYPE, CONTEXT_RESTART_FRAME_SUPPORTED, CONTEXT_VARIABLE_IS_READONLY, CONTEXT_SET_VARIABLE_SUPPORTED, CONTEXT_VARIABLE_EVALUATE_NAME_PRESENT, CONTEXT_SET_EXPRESSION_SUPPORTED, CONTEXT_WATCH_ITEM_TYPE, DEBUG_PANEL_ID, REPL_VIEW_ID, VIEWLET_ID, VARIABLES_VIEW_ID, CONTEXT_DEBUG_UX, WATCH_VIEW_ID, CALLSTACK_VIEW_ID, BREAKPOINTS_VIEW_ID, CONTEXT_BREAKPOINTS_EXIST, CONTEXT_HAS_DEBUGGED, LOADED_SCRIPTS_VIEW_ID, CONTEXT_LOADED_SCRIPTS_SUPPORTED, DISASSEMBLY_VIEW_ID, INTERNAL_CONSOLE_OPTIONS_SCHEMA, CONTEXT_JUMP_TO_CURSOR_SUPPORTED, CONTEXT_STACK_FRAME_SUPPORTS_RESTART, CONTEXT_CAN_VIEW_MEMORY, CONTEXT_BREAK_WHEN_VALUE_IS_READ_SUPPORTED, CONTEXT_BREAK_WHEN_VALUE_CHANGES_SUPPORTED, CONTEXT_BREAK_WHEN_VALUE_IS_ACCESSED_SUPPORTED, CONTEXT_VARIABLE_VALUE } from 'vscode/vscode/vs/workbench/contrib/debug/common/debug';
42
43
  import { DebugContentProvider } from '../common/debugContentProvider.js';
43
44
  import { DebugLifecycle } from '../common/debugLifecycle.js';
45
+ import 'vscode/vscode/vs/workbench/contrib/debug/common/debugVisualizers';
44
46
  import { DisassemblyViewInput } from 'vscode/vscode/vs/workbench/contrib/debug/common/disassemblyViewInput';
45
47
  import { COPY_NOTEBOOK_VARIABLE_VALUE_LABEL, COPY_NOTEBOOK_VARIABLE_VALUE_ID } from '../../notebook/browser/contrib/notebookVariables/notebookVariableCommands.js';
46
48
  import { launchSchemaId } from 'vscode/vscode/vs/workbench/services/configuration/common/configuration';
@@ -609,6 +611,38 @@ configurationRegistry.registerConfiguration({
609
611
  )),
610
612
  default: false
611
613
  },
614
+ 'debug.gutterMiddleClickAction': {
615
+ type: 'string',
616
+ enum: ['logpoint', 'conditionalBreakpoint', 'triggeredBreakpoint', 'none'],
617
+ description: ( localizeWithPath(
618
+ 'vs/workbench/contrib/debug/browser/debug.contribution',
619
+ { comment: ['This is the description for a setting'], key: 'gutterMiddleClickAction' },
620
+ 'Controls the action to perform when clicking the editor gutter with the middle mouse button.'
621
+ )),
622
+ enumDescriptions: [
623
+ ( localizeWithPath(
624
+ 'vs/workbench/contrib/debug/browser/debug.contribution',
625
+ 'debug.gutterMiddleClickAction.logpoint',
626
+ "Add Logpoint."
627
+ )),
628
+ ( localizeWithPath(
629
+ 'vs/workbench/contrib/debug/browser/debug.contribution',
630
+ 'debug.gutterMiddleClickAction.conditionalBreakpoint',
631
+ "Add Conditional Breakpoint."
632
+ )),
633
+ ( localizeWithPath(
634
+ 'vs/workbench/contrib/debug/browser/debug.contribution',
635
+ 'debug.gutterMiddleClickAction.triggeredBreakpoint',
636
+ "Add Triggered Breakpoint."
637
+ )),
638
+ ( localizeWithPath(
639
+ 'vs/workbench/contrib/debug/browser/debug.contribution',
640
+ 'debug.gutterMiddleClickAction.none',
641
+ "Don't perform any action."
642
+ )),
643
+ ],
644
+ default: 'logpoint',
645
+ },
612
646
  'debug.openExplorerOnEnd': {
613
647
  type: 'boolean',
614
648
  description: ( localizeWithPath(
@@ -7,7 +7,17 @@ import { IConfigurationService } from 'vscode/vscode/vs/platform/configuration/c
7
7
  import { ICommandService } from 'vscode/vscode/vs/platform/commands/common/commands';
8
8
  import { IDebugService } from 'vscode/vscode/vs/workbench/contrib/debug/common/debug';
9
9
  import { ThemeIcon } from 'vscode/vscode/vs/base/common/themables';
10
- import { asCssVariable, selectBorder, selectBackground } from 'vscode/vscode/vs/platform/theme/common/colorRegistry';
10
+ import { asCssVariable } from 'vscode/vscode/vs/platform/theme/common/colorUtils';
11
+ import 'vscode/vscode/vs/platform/theme/common/colors/baseColors';
12
+ import 'vscode/vscode/vs/platform/theme/common/colors/chartsColors';
13
+ import 'vscode/vscode/vs/platform/theme/common/colors/editorColors';
14
+ import { selectBorder, selectBackground } from 'vscode/vscode/vs/platform/theme/common/colors/inputColors';
15
+ import 'vscode/vscode/vs/platform/theme/common/colors/listColors';
16
+ import 'vscode/vscode/vs/platform/theme/common/colors/menuColors';
17
+ import 'vscode/vscode/vs/platform/theme/common/colors/minimapColors';
18
+ import 'vscode/vscode/vs/platform/theme/common/colors/miscColors';
19
+ import 'vscode/vscode/vs/platform/theme/common/colors/quickpickColors';
20
+ import 'vscode/vscode/vs/platform/theme/common/colors/searchColors';
11
21
  import { IContextViewService } from 'vscode/vscode/vs/platform/contextview/browser/contextView';
12
22
  import { IWorkspaceContextService } from 'vscode/vscode/vs/platform/workspace/common/workspace';
13
23
  import { dispose } from 'vscode/vscode/vs/base/common/lifecycle';
@@ -16,6 +26,8 @@ import { BaseActionViewItem, SelectActionViewItem } from 'vscode/vscode/vs/base/
16
26
  import { debugStart } from 'vscode/vscode/vs/workbench/contrib/debug/browser/debugIcons';
17
27
  import { IKeybindingService } from 'vscode/vscode/vs/platform/keybinding/common/keybinding';
18
28
  import { defaultSelectBoxStyles } from 'vscode/vscode/vs/platform/theme/browser/defaultStyles';
29
+ import { setupCustomHover } from 'vscode/vscode/vs/base/browser/ui/hover/updatableHoverWidget';
30
+ import { getDefaultHoverDelegate } from 'vscode/vscode/vs/base/browser/ui/hover/hoverDelegateFactory';
19
31
 
20
32
  var StartDebugActionViewItem_1;
21
33
  const $ = $$1;
@@ -65,9 +77,10 @@ let StartDebugActionViewItem = class StartDebugActionViewItem extends BaseAction
65
77
  this.start = append(container, $(ThemeIcon.asCSSSelector(debugStart)));
66
78
  const keybinding = this.keybindingService.lookupKeybinding(this.action.id)?.getLabel();
67
79
  const keybindingLabel = keybinding ? ` (${keybinding})` : '';
68
- this.start.title = this.action.label + keybindingLabel;
80
+ const title = this.action.label + keybindingLabel;
81
+ this.toDispose.push(setupCustomHover(getDefaultHoverDelegate('mouse'), this.start, title));
69
82
  this.start.setAttribute('role', 'button');
70
- this.start.ariaLabel = this.start.title;
83
+ this.start.ariaLabel = title;
71
84
  this.toDispose.push(addDisposableListener(this.start, EventType.CLICK, () => {
72
85
  this.start.blur();
73
86
  if (this.debugService.state !== 1 ) {
@@ -1,7 +1,7 @@
1
1
  import { __decorate, __param } from '../../../../../../../external/tslib/tslib.es6.js';
2
2
  import { Emitter } from 'vscode/vscode/vs/base/common/event';
3
3
  import { Disposable } from 'vscode/vscode/vs/base/common/lifecycle';
4
- import Severity from 'vscode/vscode/vs/base/common/severity';
4
+ import Severity$1 from 'vscode/vscode/vs/base/common/severity';
5
5
  import { equalsIgnoreCase } from 'vscode/vscode/vs/base/common/strings';
6
6
  import { isCodeEditor } from 'vscode/vscode/vs/editor/browser/editorBrowser';
7
7
  import { ILanguageService } from 'vscode/vscode/vs/editor/common/languages/language';
@@ -317,7 +317,7 @@ let AdapterManager = class AdapterManager extends Disposable {
317
317
  languageLabel = `'${languageLabel}'`;
318
318
  }
319
319
  const { confirmed } = await this.dialogService.confirm({
320
- type: Severity.Warning,
320
+ type: Severity$1.Warning,
321
321
  message: ( localizeWithPath(
322
322
  'vs/workbench/contrib/debug/browser/debugAdapterManager',
323
323
  'CouldNotFindLanguage',
@@ -297,7 +297,7 @@ async function goToBottomOfCallStack(debugService) {
297
297
  if (callStack.length > 0) {
298
298
  const nextVisibleFrame = findNextVisibleFrame(false, callStack, 0);
299
299
  if (nextVisibleFrame) {
300
- debugService.focusStackFrame(nextVisibleFrame);
300
+ debugService.focusStackFrame(nextVisibleFrame, undefined, undefined, { preserveFocus: false });
301
301
  }
302
302
  }
303
303
  }
@@ -305,7 +305,7 @@ async function goToBottomOfCallStack(debugService) {
305
305
  function goToTopOfCallStack(debugService) {
306
306
  const thread = debugService.getViewModel().focusedThread;
307
307
  if (thread) {
308
- debugService.focusStackFrame(thread.getTopStackFrame());
308
+ debugService.focusStackFrame(thread.getTopStackFrame(), undefined, undefined, { preserveFocus: false });
309
309
  }
310
310
  }
311
311
  function findNextVisibleFrame(down, callStack, startIndex) {
@@ -2,7 +2,7 @@ import { __decorate, __param } from '../../../../../../../external/tslib/tslib.e
2
2
  import { addDisposableListener, isKeyboardEvent } from 'vscode/vscode/vs/base/browser/dom';
3
3
  import { DomEmitter } from 'vscode/vscode/vs/base/browser/event';
4
4
  import { StandardKeyboardEvent } from 'vscode/vscode/vs/base/browser/keyboardEvent';
5
- import { flatten, distinct } from 'vscode/vscode/vs/base/common/arrays';
5
+ import { distinct } from 'vscode/vscode/vs/base/common/arrays';
6
6
  import { RunOnceScheduler } from 'vscode/vscode/vs/base/common/async';
7
7
  import { CancellationToken, CancellationTokenSource } from 'vscode/vscode/vs/base/common/cancellation';
8
8
  import { memoize } from 'vscode/vscode/vs/base/common/decorators';
@@ -10,7 +10,7 @@ import { illegalArgument, onUnexpectedExternalError } from 'vscode/vscode/vs/bas
10
10
  import { Event } from 'vscode/vscode/vs/base/common/event';
11
11
  import { visit } from 'vscode/vscode/vs/base/common/json';
12
12
  import { setProperty } from 'vscode/vscode/vs/base/common/jsonEdit';
13
- import { MutableDisposable, dispose } from 'vscode/vscode/vs/base/common/lifecycle';
13
+ import { MutableDisposable, DisposableStore, toDisposable, dispose } from 'vscode/vscode/vs/base/common/lifecycle';
14
14
  import { clamp } from 'vscode/vscode/vs/base/common/numbers';
15
15
  import { basename } from 'vscode/vscode/vs/base/common/path';
16
16
  import { isMacintosh } from 'vscode/vscode/vs/base/common/platform';
@@ -32,7 +32,17 @@ import { CommandsRegistry, ICommandService } from 'vscode/vscode/vs/platform/com
32
32
  import { IConfigurationService } from 'vscode/vscode/vs/platform/configuration/common/configuration';
33
33
  import { IContextKeyService } from 'vscode/vscode/vs/platform/contextkey/common/contextkey';
34
34
  import { IInstantiationService } from 'vscode/vscode/vs/platform/instantiation/common/instantiation';
35
- import { registerColor } from 'vscode/vscode/vs/platform/theme/common/colorRegistry';
35
+ import { registerColor } from 'vscode/vscode/vs/platform/theme/common/colorUtils';
36
+ import 'vscode/vscode/vs/platform/theme/common/colors/baseColors';
37
+ import 'vscode/vscode/vs/platform/theme/common/colors/chartsColors';
38
+ import 'vscode/vscode/vs/platform/theme/common/colors/editorColors';
39
+ import 'vscode/vscode/vs/platform/theme/common/colors/inputColors';
40
+ import 'vscode/vscode/vs/platform/theme/common/colors/listColors';
41
+ import 'vscode/vscode/vs/platform/theme/common/colors/menuColors';
42
+ import 'vscode/vscode/vs/platform/theme/common/colors/minimapColors';
43
+ import 'vscode/vscode/vs/platform/theme/common/colors/miscColors';
44
+ import 'vscode/vscode/vs/platform/theme/common/colors/quickpickColors';
45
+ import 'vscode/vscode/vs/platform/theme/common/colors/searchColors';
36
46
  import { IUriIdentityService } from 'vscode/vscode/vs/platform/uriIdentity/common/uriIdentity';
37
47
  import { DebugHoverWidget } from './debugHover.js';
38
48
  import { ExceptionWidget } from './exceptionWidget.js';
@@ -190,10 +200,11 @@ let DebugEditorContribution = class DebugEditorContribution {
190
200
  this.altListener = ( new MutableDisposable());
191
201
  this.altPressed = false;
192
202
  this.oldDecorations = this.editor.createDecorationsCollection();
203
+ this.displayedStore = ( new DisposableStore());
193
204
  this.defaultHoverLockout = ( new MutableDisposable());
194
205
  this.debounceInfo = featureDebounceService.for(languageFeaturesService.inlineValuesProvider, 'InlineValues', { min: DEAFULT_INLINE_DEBOUNCE_DELAY });
195
206
  this.hoverWidget = this.instantiationService.createInstance(DebugHoverWidget, this.editor);
196
- this.toDispose = [this.defaultHoverLockout, this.altListener];
207
+ this.toDispose = [this.defaultHoverLockout, this.altListener, this.displayedStore];
197
208
  this.registerListeners();
198
209
  this.exceptionWidgetVisible = CONTEXT_EXCEPTION_WIDGET_VISIBLE.bindTo(contextKeyService);
199
210
  this.toggleExceptionWidget();
@@ -519,7 +530,7 @@ let DebugEditorContribution = class DebugEditorContribution {
519
530
  }
520
531
  get removeInlineValuesScheduler() {
521
532
  return ( new RunOnceScheduler(() => {
522
- this.oldDecorations.clear();
533
+ this.displayedStore.clear();
523
534
  }, 100));
524
535
  }
525
536
  get updateInlineValuesScheduler() {
@@ -542,8 +553,11 @@ let DebugEditorContribution = class DebugEditorContribution {
542
553
  return;
543
554
  }
544
555
  this.removeInlineValuesScheduler.cancel();
556
+ this.displayedStore.clear();
545
557
  const viewRanges = this.editor.getVisibleRangesPlusViewportAboveBelow();
546
558
  let allDecorations;
559
+ const cts = ( new CancellationTokenSource());
560
+ this.displayedStore.add(toDisposable(() => cts.dispose(true)));
547
561
  if (( this.languageFeaturesService.inlineValuesProvider.has(model))) {
548
562
  const findVariable = async (_key, caseSensitiveLookup) => {
549
563
  const scopes = await stackFrame.getMostSpecificScopes(stackFrame.range);
@@ -566,12 +580,11 @@ let DebugEditorContribution = class DebugEditorContribution {
566
580
  stackFrame.range.endColumn + 1
567
581
  ))
568
582
  };
569
- const token = ( new CancellationTokenSource()).token;
570
583
  const providers = this.languageFeaturesService.inlineValuesProvider.ordered(model).reverse();
571
584
  allDecorations = [];
572
585
  const lineDecorations = ( new Map());
573
- const promises = flatten(( providers.map(provider => ( viewRanges.map(
574
- range => Promise.resolve(provider.provideInlineValues(model, range, ctx, token)).then(async (result) => {
586
+ const promises = providers.flatMap(provider => ( viewRanges.map(
587
+ range => Promise.resolve(provider.provideInlineValues(model, range, ctx, cts.token)).then(async (result) => {
575
588
  if (result) {
576
589
  for (const iv of result) {
577
590
  let text = undefined;
@@ -623,7 +636,7 @@ let DebugEditorContribution = class DebugEditorContribution {
623
636
  }, err => {
624
637
  onUnexpectedExternalError(err);
625
638
  })
626
- )))));
639
+ )));
627
640
  const startTime = Date.now();
628
641
  await Promise.all(promises);
629
642
  this.updateInlineValuesScheduler.delay = this.debounceInfo.update(model, Date.now() - startTime);
@@ -650,10 +663,13 @@ let DebugEditorContribution = class DebugEditorContribution {
650
663
  }
651
664
  return createInlineValueDecorationsInsideRange(variables, ownRanges, model, this._wordToLineNumbersMap.value);
652
665
  })));
653
- allDecorations = distinct(decorationsPerScope.reduce((previous, current) => previous.concat(current), []),
666
+ allDecorations = distinct(decorationsPerScope.flat(),
654
667
  decoration => `${decoration.range.startLineNumber}:${decoration?.options.after?.content}`);
655
668
  }
656
- this.oldDecorations.set(allDecorations);
669
+ if (!cts.token.isCancellationRequested) {
670
+ this.oldDecorations.set(allDecorations);
671
+ this.displayedStore.add(toDisposable(() => this.oldDecorations.clear()));
672
+ }
657
673
  }
658
674
  dispose() {
659
675
  if (this.hoverWidget) {
@@ -663,7 +679,6 @@ let DebugEditorContribution = class DebugEditorContribution {
663
679
  this.configurationWidget.dispose();
664
680
  }
665
681
  this.toDispose = dispose(this.toDispose);
666
- this.oldDecorations.clear();
667
682
  }
668
683
  };
669
684
  DebugEditorContribution.__decorator = ( __decorate([
@@ -16,7 +16,17 @@ import { IContextMenuService } from 'vscode/vscode/vs/platform/contextview/brows
16
16
  import { IInstantiationService } from 'vscode/vscode/vs/platform/instantiation/common/instantiation';
17
17
  import { WorkbenchAsyncDataTree } from 'vscode/vscode/vs/platform/list/browser/listService';
18
18
  import { ILogService } from 'vscode/vscode/vs/platform/log/common/log';
19
- import { editorHoverBackground, asCssVariable, editorHoverBorder, editorHoverForeground } from 'vscode/vscode/vs/platform/theme/common/colorRegistry';
19
+ import { asCssVariable } from 'vscode/vscode/vs/platform/theme/common/colorUtils';
20
+ import 'vscode/vscode/vs/platform/theme/common/colors/baseColors';
21
+ import 'vscode/vscode/vs/platform/theme/common/colors/chartsColors';
22
+ import { editorHoverBackground, editorHoverBorder, editorHoverForeground } from 'vscode/vscode/vs/platform/theme/common/colors/editorColors';
23
+ import 'vscode/vscode/vs/platform/theme/common/colors/inputColors';
24
+ import 'vscode/vscode/vs/platform/theme/common/colors/listColors';
25
+ import 'vscode/vscode/vs/platform/theme/common/colors/menuColors';
26
+ import 'vscode/vscode/vs/platform/theme/common/colors/minimapColors';
27
+ import 'vscode/vscode/vs/platform/theme/common/colors/miscColors';
28
+ import 'vscode/vscode/vs/platform/theme/common/colors/quickpickColors';
29
+ import 'vscode/vscode/vs/platform/theme/common/colors/searchColors';
20
30
  import { renderExpressionValue, AbstractExpressionDataSource } from 'vscode/vscode/vs/workbench/contrib/debug/browser/baseDebugView';
21
31
  import { LinkDetector } from './linkDetector.js';
22
32
  import { VariablesRenderer, VisualizedVariableRenderer, openContextMenuForVariableTreeElement } from './variablesView.js';
@@ -9,7 +9,7 @@ import { isCancellationError } from 'vscode/vscode/vs/base/common/errors';
9
9
  import { Emitter, Event } from 'vscode/vscode/vs/base/common/event';
10
10
  import { DisposableStore } from 'vscode/vscode/vs/base/common/lifecycle';
11
11
  import { deepClone, equals } from 'vscode/vscode/vs/base/common/objects';
12
- import Severity from 'vscode/vscode/vs/base/common/severity';
12
+ import Severity$1 from 'vscode/vscode/vs/base/common/severity';
13
13
  import { URI } from 'vscode/vscode/vs/base/common/uri';
14
14
  import { generateUuid } from 'vscode/vscode/vs/base/common/uuid';
15
15
  import { isCodeEditor } from 'vscode/vscode/vs/editor/browser/editorBrowser';
@@ -27,7 +27,6 @@ import { IUriIdentityService } from 'vscode/vscode/vs/platform/uriIdentity/commo
27
27
  import { IWorkspaceContextService } from 'vscode/vscode/vs/platform/workspace/common/workspace';
28
28
  import { IWorkspaceTrustRequestService } from 'vscode/vscode/vs/platform/workspace/common/workspaceTrust';
29
29
  import { IViewDescriptorService } from 'vscode/vscode/vs/workbench/common/views';
30
- import { IViewsService } from 'vscode/vscode/vs/workbench/services/views/common/viewsService';
31
30
  import { AdapterManager } from './debugAdapterManager.js';
32
31
  import { DEBUG_CONFIGURE_COMMAND_ID, DEBUG_CONFIGURE_LABEL } from './debugCommands.js';
33
32
  import { ConfigurationManager } from './debugConfigurationManager.js';
@@ -50,6 +49,7 @@ import { IExtensionService } from 'vscode/vscode/vs/workbench/services/extension
50
49
  import { IWorkbenchLayoutService } from 'vscode/vscode/vs/workbench/services/layout/browser/layoutService';
51
50
  import { ILifecycleService } from 'vscode/vscode/vs/workbench/services/lifecycle/common/lifecycle';
52
51
  import { IPaneCompositePartService } from 'vscode/vscode/vs/workbench/services/panecomposite/browser/panecomposite';
52
+ import { IViewsService } from 'vscode/vscode/vs/workbench/services/views/common/viewsService';
53
53
  import { IDialogService } from 'vscode/vscode/vs/platform/dialogs/common/dialogs';
54
54
 
55
55
  let DebugService = class DebugService {
@@ -811,7 +811,7 @@ let DebugService = class DebugService {
811
811
  errorActions :
812
812
  [...errorActions, ...(promptLaunchJson ? [configureAction] : [])];
813
813
  await this.dialogService.prompt({
814
- type: Severity.Error,
814
+ type: Severity$1.Error,
815
815
  message,
816
816
  buttons: ( actions.map(action => ({
817
817
  label: action.label,
@@ -965,8 +965,8 @@ let DebugService = class DebugService {
965
965
  this.debugStorage.storeBreakpoints(this.model);
966
966
  await this.sendFunctionBreakpoints();
967
967
  }
968
- async addDataBreakpoint(description, dataId, canPersist, accessTypes, accessType, mode) {
969
- this.model.addDataBreakpoint({ description, dataId, canPersist, accessTypes, accessType, mode });
968
+ async addDataBreakpoint(opts) {
969
+ this.model.addDataBreakpoint(opts);
970
970
  this.debugStorage.storeBreakpoints(this.model);
971
971
  await this.sendDataBreakpoints();
972
972
  this.debugStorage.storeBreakpoints(this.model);
@@ -10,7 +10,7 @@ import { DisposableStore, MutableDisposable, dispose, Disposable, DisposableMap
10
10
  import { mixin } from 'vscode/vscode/vs/base/common/objects';
11
11
  import { language } from 'vscode/vscode/vs/base/common/platform';
12
12
  import { basenameOrAuthority } from 'vscode/vscode/vs/base/common/resources';
13
- import Severity from 'vscode/vscode/vs/base/common/severity';
13
+ import Severity$1 from 'vscode/vscode/vs/base/common/severity';
14
14
  import { URI } from 'vscode/vscode/vs/base/common/uri';
15
15
  import { generateUuid } from 'vscode/vscode/vs/base/common/uuid';
16
16
  import { localizeWithPath } from 'vscode/vscode/vs/nls';
@@ -34,6 +34,7 @@ import { ILifecycleService } from 'vscode/vscode/vs/workbench/services/lifecycle
34
34
  import { IPaneCompositePartService } from 'vscode/vscode/vs/workbench/services/panecomposite/browser/panecomposite';
35
35
  import { getActiveWindow } from 'vscode/vscode/vs/base/browser/dom';
36
36
  import { mainWindow } from 'vscode/vscode/vs/base/browser/window';
37
+ import { isDefined } from 'vscode/vscode/vs/base/common/types';
37
38
 
38
39
  const TRIGGERED_BREAKPOINT_MAX_DELAY = 1500;
39
40
  let DebugSession = class DebugSession {
@@ -351,7 +352,7 @@ let DebugSession = class DebugSession {
351
352
  breakpoints: ( breakpointsToSend.map(bp => bp.toDAP())),
352
353
  sourceModified
353
354
  });
354
- if (response && response.body) {
355
+ if (response?.body) {
355
356
  const data = ( new Map());
356
357
  for (let i = 0; i < breakpointsToSend.length; i++) {
357
358
  data.set(breakpointsToSend[i].getId(), response.body.breakpoints[i]);
@@ -365,7 +366,7 @@ let DebugSession = class DebugSession {
365
366
  }
366
367
  if (this.raw.readyForBreakpoints) {
367
368
  const response = await this.raw.setFunctionBreakpoints({ breakpoints: ( fbpts.map(bp => bp.toDAP())) });
368
- if (response && response.body) {
369
+ if (response?.body) {
369
370
  const data = ( new Map());
370
371
  for (let i = 0; i < fbpts.length; i++) {
371
372
  data.set(fbpts[i].getId(), response.body.breakpoints[i]);
@@ -389,7 +390,7 @@ let DebugSession = class DebugSession {
389
390
  }))
390
391
  } : { filters: ( exbpts.map(exb => exb.filter)) };
391
392
  const response = await this.raw.setExceptionBreakpoints(args);
392
- if (response && response.body && response.body.breakpoints) {
393
+ if (response?.body && response.body.breakpoints) {
393
394
  const data = ( new Map());
394
395
  for (let i = 0; i < exbpts.length; i++) {
395
396
  data.set(exbpts[i].getId(), response.body.breakpoints[i]);
@@ -398,14 +399,23 @@ let DebugSession = class DebugSession {
398
399
  }
399
400
  }
400
401
  }
401
- async dataBreakpointInfo(name, variablesReference) {
402
+ dataBytesBreakpointInfo(address, bytes) {
403
+ if (this.raw?.capabilities.supportsDataBreakpointBytes === false) {
404
+ throw new Error(localizeWithPath('vs/workbench/contrib/debug/browser/debugSession', 'sessionDoesNotSupporBytesBreakpoints', "Session does not support breakpoints with bytes"));
405
+ }
406
+ return this._dataBreakpointInfo({ name: address, bytes, asAddress: true });
407
+ }
408
+ dataBreakpointInfo(name, variablesReference) {
409
+ return this._dataBreakpointInfo({ name, variablesReference });
410
+ }
411
+ async _dataBreakpointInfo(args) {
402
412
  if (!this.raw) {
403
413
  throw new Error(localizeWithPath('vs/workbench/contrib/debug/browser/debugSession', 'noDebugAdapter', "No debugger available, can not send '{0}'", 'data breakpoints info'));
404
414
  }
405
415
  if (!this.raw.readyForBreakpoints) {
406
416
  throw new Error(localizeWithPath('vs/workbench/contrib/debug/browser/debugSession', 'sessionNotReadyForBreakpoints', "Session is not ready for breakpoints"));
407
417
  }
408
- const response = await this.raw.dataBreakpointInfo({ name, variablesReference });
418
+ const response = await this.raw.dataBreakpointInfo(args);
409
419
  return response?.body;
410
420
  }
411
421
  async sendDataBreakpoints(dataBreakpoints) {
@@ -413,11 +423,26 @@ let DebugSession = class DebugSession {
413
423
  throw new Error(localizeWithPath('vs/workbench/contrib/debug/browser/debugSession', 'noDebugAdapter', "No debugger available, can not send '{0}'", 'data breakpoints'));
414
424
  }
415
425
  if (this.raw.readyForBreakpoints) {
416
- const response = await this.raw.setDataBreakpoints({ breakpoints: ( dataBreakpoints.map(bp => bp.toDAP())) });
417
- if (response && response.body) {
426
+ const converted = await Promise.all(( dataBreakpoints.map(async (bp) => {
427
+ try {
428
+ const dap = await bp.toDAP(this);
429
+ return { dap, bp };
430
+ }
431
+ catch (e) {
432
+ return { bp, message: e.message };
433
+ }
434
+ })));
435
+ const response = await this.raw.setDataBreakpoints({ breakpoints: ( converted.map(d => d.dap)).filter(isDefined) });
436
+ if (response?.body) {
418
437
  const data = ( new Map());
419
- for (let i = 0; i < dataBreakpoints.length; i++) {
420
- data.set(dataBreakpoints[i].getId(), response.body.breakpoints[i]);
438
+ let i = 0;
439
+ for (const dap of converted) {
440
+ if (!dap.dap) {
441
+ data.set(dap.bp.getId(), dap.message);
442
+ }
443
+ else if (i < response.body.breakpoints.length) {
444
+ data.set(dap.bp.getId(), response.body.breakpoints[i++]);
445
+ }
421
446
  }
422
447
  this.model.setBreakpointSessionData(this.getId(), this.capabilities, data);
423
448
  }
@@ -429,7 +454,7 @@ let DebugSession = class DebugSession {
429
454
  }
430
455
  if (this.raw.readyForBreakpoints) {
431
456
  const response = await this.raw.setInstructionBreakpoints({ breakpoints: ( instructionBreakpoints.map(ib => ib.toDAP())) });
432
- if (response && response.body) {
457
+ if (response?.body) {
433
458
  const data = ( new Map());
434
459
  for (let i = 0; i < instructionBreakpoints.length; i++) {
435
460
  data.set(instructionBreakpoints[i].getId(), response.body.breakpoints[i]);
@@ -626,7 +651,7 @@ let DebugSession = class DebugSession {
626
651
  )))));
627
652
  }
628
653
  const response = await this.raw.loadedSources({});
629
- if (response && response.body && response.body.sources) {
654
+ if (response?.body && response.body.sources) {
630
655
  return ( response.body.sources.map(src => this.getSource(src)));
631
656
  }
632
657
  else {
@@ -795,7 +820,7 @@ let DebugSession = class DebugSession {
795
820
  async fetchThreads(stoppedDetails) {
796
821
  if (this.raw) {
797
822
  const response = await this.raw.threads();
798
- if (response && response.body && response.body.threads) {
823
+ if (response?.body && response.body.threads) {
799
824
  this.model.rawUpdate({
800
825
  sessionId: this.getId(),
801
826
  threads: response.body.threads,
@@ -903,7 +928,7 @@ let DebugSession = class DebugSession {
903
928
  }));
904
929
  const outputQueue = ( new Queue());
905
930
  this.rawListeners.add(this.raw.onDidOutput(async (event) => {
906
- const outputSeverity = event.body.category === 'stderr' ? Severity.Error : event.body.category === 'console' ? Severity.Warning : Severity.Info;
931
+ const outputSeverity = event.body.category === 'stderr' ? Severity$1.Error : event.body.category === 'console' ? Severity$1.Warning : Severity$1.Info;
907
932
  if (event.body.variablesReference) {
908
933
  const source = event.body.source && event.body.line ? {
909
934
  lineNumber: event.body.line,
@@ -1,6 +1,6 @@
1
1
  import { __decorate, __param } from '../../../../../../../external/tslib/tslib.es6.js';
2
2
  import { localizeWithPath } from 'vscode/vscode/vs/nls';
3
- import Severity from 'vscode/vscode/vs/base/common/severity';
3
+ import Severity$1 from 'vscode/vscode/vs/base/common/severity';
4
4
  import { Markers } from 'vscode/vscode/vs/workbench/contrib/markers/common/markers';
5
5
  import { ITaskService } from 'vscode/vscode/vs/workbench/contrib/tasks/common/taskService';
6
6
  import { IConfigurationService } from 'vscode/vscode/vs/platform/configuration/common/configuration';
@@ -97,7 +97,7 @@ let DebugTaskRunner = class DebugTaskRunner {
97
97
  DebugChoice[DebugChoice["Cancel"] = 0] = "Cancel";
98
98
  })(DebugChoice || (DebugChoice = {})));
99
99
  const { result, checkboxChecked } = await this.dialogService.prompt({
100
- type: Severity.Warning,
100
+ type: Severity$1.Warning,
101
101
  message,
102
102
  buttons: [
103
103
  {
@@ -158,7 +158,7 @@ let DebugTaskRunner = class DebugTaskRunner {
158
158
  }
159
159
  else {
160
160
  const { result, checkboxChecked } = await this.dialogService.prompt({
161
- type: Severity.Error,
161
+ type: Severity$1.Error,
162
162
  message: err.message,
163
163
  buttons: [
164
164
  {
@@ -287,7 +287,7 @@ let DebugTaskRunner = class DebugTaskRunner {
287
287
  "The task '{0}' cannot be tracked. Make sure to have a problem matcher defined.",
288
288
  JSON.stringify(taskId)
289
289
  ));
290
- e({ severity: Severity.Error, message: errorMessage });
290
+ e({ severity: Severity$1.Error, message: errorMessage });
291
291
  }
292
292
  }, waitTime);
293
293
  });
@@ -19,7 +19,17 @@ import { IInstantiationService } from 'vscode/vscode/vs/platform/instantiation/c
19
19
  import { INotificationService } from 'vscode/vscode/vs/platform/notification/common/notification';
20
20
  import { IStorageService } from 'vscode/vscode/vs/platform/storage/common/storage';
21
21
  import { ITelemetryService } from 'vscode/vscode/vs/platform/telemetry/common/telemetry';
22
- import { widgetShadow, widgetBorder } from 'vscode/vscode/vs/platform/theme/common/colorRegistry';
22
+ import 'vscode/vscode/vs/platform/theme/common/colorUtils';
23
+ import 'vscode/vscode/vs/platform/theme/common/colors/baseColors';
24
+ import 'vscode/vscode/vs/platform/theme/common/colors/chartsColors';
25
+ import { widgetShadow, widgetBorder } from 'vscode/vscode/vs/platform/theme/common/colors/editorColors';
26
+ import 'vscode/vscode/vs/platform/theme/common/colors/inputColors';
27
+ import 'vscode/vscode/vs/platform/theme/common/colors/listColors';
28
+ import 'vscode/vscode/vs/platform/theme/common/colors/menuColors';
29
+ import 'vscode/vscode/vs/platform/theme/common/colors/minimapColors';
30
+ import 'vscode/vscode/vs/platform/theme/common/colors/miscColors';
31
+ import 'vscode/vscode/vs/platform/theme/common/colors/quickpickColors';
32
+ import 'vscode/vscode/vs/platform/theme/common/colors/searchColors';
23
33
  import { Themable, IThemeService } from 'vscode/vscode/vs/platform/theme/common/themeService';
24
34
  import { ThemeIcon } from 'vscode/vscode/vs/base/common/themables';
25
35
  import { FocusSessionActionViewItem } from './debugActionViewItems.js';
@@ -129,15 +139,14 @@ let DebugToolBar = class DebugToolBar extends Themable {
129
139
  }));
130
140
  this._register(this.layoutService.onDidChangePartVisibility(() => this.setYCoordinate()));
131
141
  const resizeListener = this._register(( new MutableDisposable()));
132
- this._register(this.layoutService.onDidChangeActiveContainer(() => {
142
+ this._register(this.layoutService.onDidChangeActiveContainer(async () => {
133
143
  this._yRange = undefined;
134
- this.layoutService.whenActiveContainerStylesLoaded.then(() => {
135
- if (this.isBuilt) {
136
- this.doShowInActiveContainer();
137
- this.setCoordinates();
138
- }
139
- resizeListener.value = this._register(addDisposableListener(getWindow(this.layoutService.activeContainer), EventType.RESIZE, () => this.setYCoordinate()));
140
- });
144
+ await this.layoutService.whenContainerStylesLoaded(getWindow(this.layoutService.activeContainer));
145
+ if (this.isBuilt) {
146
+ this.doShowInActiveContainer();
147
+ this.setCoordinates();
148
+ }
149
+ resizeListener.value = this._register(addDisposableListener(getWindow(this.layoutService.activeContainer), EventType.RESIZE, () => this.setYCoordinate()));
141
150
  }));
142
151
  }
143
152
  storePosition() {
@@ -1,6 +1,6 @@
1
1
  import { __decorate, __param } from '../../../../../../../external/tslib/tslib.es6.js';
2
2
  import { PixelRatio } from 'vscode/vscode/vs/base/browser/pixelRatio';
3
- import { getWindowById, append, $, addStandardDisposableListener } from 'vscode/vscode/vs/base/browser/dom';
3
+ import { append, $, addStandardDisposableListener } from 'vscode/vscode/vs/base/browser/dom';
4
4
  import { binarySearch2 } from 'vscode/vscode/vs/base/common/arrays';
5
5
  import { Emitter } from 'vscode/vscode/vs/base/common/event';
6
6
  import { dispose, Disposable } from 'vscode/vscode/vs/base/common/lifecycle';
@@ -20,7 +20,17 @@ import { WorkbenchTable } from 'vscode/vscode/vs/platform/list/browser/listServi
20
20
  import { ILogService } from 'vscode/vscode/vs/platform/log/common/log';
21
21
  import { IStorageService } from 'vscode/vscode/vs/platform/storage/common/storage';
22
22
  import { ITelemetryService } from 'vscode/vscode/vs/platform/telemetry/common/telemetry';
23
- import { editorBackground } from 'vscode/vscode/vs/platform/theme/common/colorRegistry';
23
+ import 'vscode/vscode/vs/platform/theme/common/colorUtils';
24
+ import 'vscode/vscode/vs/platform/theme/common/colors/baseColors';
25
+ import 'vscode/vscode/vs/platform/theme/common/colors/chartsColors';
26
+ import { editorBackground } from 'vscode/vscode/vs/platform/theme/common/colors/editorColors';
27
+ import 'vscode/vscode/vs/platform/theme/common/colors/inputColors';
28
+ import 'vscode/vscode/vs/platform/theme/common/colors/listColors';
29
+ import 'vscode/vscode/vs/platform/theme/common/colors/menuColors';
30
+ import 'vscode/vscode/vs/platform/theme/common/colors/minimapColors';
31
+ import 'vscode/vscode/vs/platform/theme/common/colors/miscColors';
32
+ import 'vscode/vscode/vs/platform/theme/common/colors/quickpickColors';
33
+ import 'vscode/vscode/vs/platform/theme/common/colors/searchColors';
24
34
  import { IThemeService } from 'vscode/vscode/vs/platform/theme/common/themeService';
25
35
  import { IUriIdentityService } from 'vscode/vscode/vs/platform/uriIdentity/common/uriIdentity';
26
36
  import { EditorPane } from 'vscode/vscode/vs/workbench/browser/parts/editor/editorPane';
@@ -53,8 +63,8 @@ const disassemblyNotAvailable = {
53
63
  let DisassemblyView = class DisassemblyView extends EditorPane {
54
64
  static { DisassemblyView_1 = this; }
55
65
  static { this.NUM_INSTRUCTIONS_TO_LOAD = 50; }
56
- constructor(telemetryService, themeService, storageService, _configurationService, _instantiationService, _debugService) {
57
- super(DISASSEMBLY_VIEW_ID, telemetryService, themeService, storageService);
66
+ constructor(group, telemetryService, themeService, storageService, _configurationService, _instantiationService, _debugService) {
67
+ super(DISASSEMBLY_VIEW_ID, group, telemetryService, themeService, storageService);
58
68
  this._configurationService = _configurationService;
59
69
  this._instantiationService = _instantiationService;
60
70
  this._debugService = _debugService;
@@ -89,8 +99,7 @@ let DisassemblyView = class DisassemblyView extends EditorPane {
89
99
  return this._fontInfo;
90
100
  }
91
101
  createFontInfo() {
92
- const window = getWindowById(this.group?.windowId, true).window;
93
- return BareFontInfo.createFromRawSettings(this._configurationService.getValue('editor'), PixelRatio.getInstance(window).value);
102
+ return BareFontInfo.createFromRawSettings(this._configurationService.getValue('editor'), PixelRatio.getInstance(this.window).value);
94
103
  }
95
104
  get currentInstructionAddresses() {
96
105
  return ( ( ( ( this._debugService.getModel().getSessions(false).
@@ -476,12 +485,12 @@ let DisassemblyView = class DisassemblyView extends EditorPane {
476
485
  }
477
486
  };
478
487
  DisassemblyView = DisassemblyView_1 = ( __decorate([
479
- ( __param(0, ITelemetryService)),
480
- ( __param(1, IThemeService)),
481
- ( __param(2, IStorageService)),
482
- ( __param(3, IConfigurationService)),
483
- ( __param(4, IInstantiationService)),
484
- ( __param(5, IDebugService))
488
+ ( __param(1, ITelemetryService)),
489
+ ( __param(2, IThemeService)),
490
+ ( __param(3, IStorageService)),
491
+ ( __param(4, IConfigurationService)),
492
+ ( __param(5, IInstantiationService)),
493
+ ( __param(6, IDebugService))
485
494
  ], DisassemblyView));
486
495
  let BreakpointRenderer = class BreakpointRenderer {
487
496
  static { BreakpointRenderer_1 = this; }
@@ -7,7 +7,17 @@ import { EDITOR_CONTRIBUTION_ID } from 'vscode/vscode/vs/workbench/contrib/debug
7
7
  import { RunOnceScheduler } from 'vscode/vscode/vs/base/common/async';
8
8
  import { IThemeService } from 'vscode/vscode/vs/platform/theme/common/themeService';
9
9
  import { ThemeIcon } from 'vscode/vscode/vs/base/common/themables';
10
- import { registerColor } from 'vscode/vscode/vs/platform/theme/common/colorRegistry';
10
+ import { registerColor } from 'vscode/vscode/vs/platform/theme/common/colorUtils';
11
+ import 'vscode/vscode/vs/platform/theme/common/colors/baseColors';
12
+ import 'vscode/vscode/vs/platform/theme/common/colors/chartsColors';
13
+ import 'vscode/vscode/vs/platform/theme/common/colors/editorColors';
14
+ import 'vscode/vscode/vs/platform/theme/common/colors/inputColors';
15
+ import 'vscode/vscode/vs/platform/theme/common/colors/listColors';
16
+ import 'vscode/vscode/vs/platform/theme/common/colors/menuColors';
17
+ import 'vscode/vscode/vs/platform/theme/common/colors/minimapColors';
18
+ import 'vscode/vscode/vs/platform/theme/common/colors/miscColors';
19
+ import 'vscode/vscode/vs/platform/theme/common/colors/quickpickColors';
20
+ import 'vscode/vscode/vs/platform/theme/common/colors/searchColors';
11
21
  import { IInstantiationService } from 'vscode/vscode/vs/platform/instantiation/common/instantiation';
12
22
  import { LinkDetector } from './linkDetector.js';
13
23
  import { ActionBar } from 'vscode/vscode/vs/base/browser/ui/actionbar/actionbar';
@@ -1,6 +1,7 @@
1
1
  import { __decorate, __param } from '../../../../../../../external/tslib/tslib.es6.js';
2
2
  import { Event } from 'vscode/vscode/vs/base/common/event';
3
3
  import { URI } from 'vscode/vscode/vs/base/common/uri';
4
+ import 'vscode/vscode/vs/platform/instantiation/common/instantiation';
4
5
  import { ExtensionHostDebugChannelClient, ExtensionHostDebugBroadcastChannel } from '../../../../platform/debug/common/extensionHostDebugIpc.js';
5
6
  import { IFileService } from 'vscode/vscode/vs/platform/files/common/files';
6
7
  import { ILogService } from 'vscode/vscode/vs/platform/log/common/log';
@@ -14,7 +14,7 @@ import './media/repl.css.js';
14
14
  import { isCodeEditor } from 'vscode/vscode/vs/editor/browser/editorBrowser';
15
15
  import { registerEditorAction, EditorAction } from 'vscode/vscode/vs/editor/browser/editorExtensions';
16
16
  import { ICodeEditorService } from 'vscode/vscode/vs/editor/browser/services/codeEditorService';
17
- import { CodeEditorWidget } from 'vscode/vscode/vs/editor/browser/widget/codeEditorWidget';
17
+ import { CodeEditorWidget } from 'vscode/vscode/vs/editor/browser/widget/codeEditor/codeEditorWidget';
18
18
  import { EDITOR_FONT_DEFAULTS } from 'vscode/vscode/vs/editor/common/config/editorOptions';
19
19
  import { Range } from 'vscode/vscode/vs/editor/common/core/range';
20
20
  import { EditorContextKeys } from 'vscode/vscode/vs/editor/common/editorContextKeys';
@@ -39,7 +39,17 @@ import { ILogService } from 'vscode/vscode/vs/platform/log/common/log';
39
39
  import { IOpenerService } from 'vscode/vscode/vs/platform/opener/common/opener';
40
40
  import { IStorageService } from 'vscode/vscode/vs/platform/storage/common/storage';
41
41
  import { ITelemetryService } from 'vscode/vscode/vs/platform/telemetry/common/telemetry';
42
- import { resolveColorValue, editorForeground } from 'vscode/vscode/vs/platform/theme/common/colorRegistry';
42
+ import { resolveColorValue } from 'vscode/vscode/vs/platform/theme/common/colorUtils';
43
+ import 'vscode/vscode/vs/platform/theme/common/colors/baseColors';
44
+ import 'vscode/vscode/vs/platform/theme/common/colors/chartsColors';
45
+ import { editorForeground } from 'vscode/vscode/vs/platform/theme/common/colors/editorColors';
46
+ import 'vscode/vscode/vs/platform/theme/common/colors/inputColors';
47
+ import 'vscode/vscode/vs/platform/theme/common/colors/listColors';
48
+ import 'vscode/vscode/vs/platform/theme/common/colors/menuColors';
49
+ import 'vscode/vscode/vs/platform/theme/common/colors/minimapColors';
50
+ import 'vscode/vscode/vs/platform/theme/common/colors/miscColors';
51
+ import 'vscode/vscode/vs/platform/theme/common/colors/quickpickColors';
52
+ import 'vscode/vscode/vs/platform/theme/common/colors/searchColors';
43
53
  import { IThemeService } from 'vscode/vscode/vs/platform/theme/common/themeService';
44
54
  import { FilterViewPane, ViewAction } from 'vscode/vscode/vs/workbench/browser/parts/views/viewPane';
45
55
  import { IViewDescriptorService } from 'vscode/vscode/vs/workbench/common/views';
@@ -1,12 +1,12 @@
1
1
  import { __decorate, __param } from '../../../../../../../external/tslib/tslib.es6.js';
2
- import { append, clearNode, addDisposableListener, $ as $$1 } from 'vscode/vscode/vs/base/browser/dom';
2
+ import { append, clearNode, $ as $$1, addDisposableListener } from 'vscode/vscode/vs/base/browser/dom';
3
3
  import { CountBadge } from 'vscode/vscode/vs/base/browser/ui/countBadge/countBadge';
4
4
  import { HighlightedLabel } from 'vscode/vscode/vs/base/browser/ui/highlightedlabel/highlightedLabel';
5
5
  import { CachedListVirtualDelegate } from 'vscode/vscode/vs/base/browser/ui/list/list';
6
6
  import { createMatches } from 'vscode/vscode/vs/base/common/filters';
7
7
  import { dispose } from 'vscode/vscode/vs/base/common/lifecycle';
8
8
  import { basename } from 'vscode/vscode/vs/base/common/path';
9
- import Severity from 'vscode/vscode/vs/base/common/severity';
9
+ import Severity$1 from 'vscode/vscode/vs/base/common/severity';
10
10
  import { localizeWithPath } from 'vscode/vscode/vs/nls';
11
11
  import { IContextViewService } from 'vscode/vscode/vs/platform/contextview/browser/contextView';
12
12
  import { ILabelService } from 'vscode/vscode/vs/platform/label/common/label';
@@ -20,6 +20,8 @@ import { IDebugService } from 'vscode/vscode/vs/workbench/contrib/debug/common/d
20
20
  import { Variable } from 'vscode/vscode/vs/workbench/contrib/debug/common/debugModel';
21
21
  import { ReplVariableElement, ReplEvaluationResult, ReplOutputElement, ReplEvaluationInput, ReplGroup, RawObjectReplElement } from 'vscode/vscode/vs/workbench/contrib/debug/common/replModel';
22
22
  import { IEditorService } from 'vscode/vscode/vs/workbench/services/editor/common/editorService';
23
+ import { setupCustomHover } from 'vscode/vscode/vs/base/browser/ui/hover/updatableHoverWidget';
24
+ import { getDefaultHoverDelegate } from 'vscode/vscode/vs/base/browser/ui/hover/hoverDelegateFactory';
23
25
 
24
26
  var ReplGroupRenderer_1, ReplOutputElementRenderer_1, ReplVariablesRenderer_1;
25
27
  const $ = $$1;
@@ -39,6 +41,7 @@ class ReplEvaluationInputsRenderer {
39
41
  templateData.label.set(evaluation.value, createMatches(element.filterData));
40
42
  }
41
43
  disposeTemplate(templateData) {
44
+ templateData.label.dispose();
42
45
  }
43
46
  }
44
47
  let ReplGroupRenderer = class ReplGroupRenderer {
@@ -134,9 +137,9 @@ let ReplOutputElementRenderer = class ReplOutputElementRenderer {
134
137
  clearNode(templateData.value);
135
138
  templateData.value.className = 'value';
136
139
  templateData.value.appendChild(handleANSIOutput(element.value, this.linkDetector, this.themeService, element.session.root));
137
- templateData.value.classList.add((element.severity === Severity.Warning) ? 'warn' : (element.severity === Severity.Error) ? 'error' : (element.severity === Severity.Ignore) ? 'ignore' : 'info');
140
+ templateData.value.classList.add((element.severity === Severity$1.Warning) ? 'warn' : (element.severity === Severity$1.Error) ? 'error' : (element.severity === Severity$1.Ignore) ? 'ignore' : 'info');
138
141
  templateData.source.textContent = element.sourceData ? `${basename(element.sourceData.source.name)}:${element.sourceData.lineNumber}` : '';
139
- templateData.source.title = element.sourceData ? `${this.labelService.getUriLabel(element.sourceData.source.uri)}:${element.sourceData.lineNumber}` : '';
142
+ templateData.toDispose.push(setupCustomHover(getDefaultHoverDelegate('mouse'), templateData.source, element.sourceData ? `${this.labelService.getUriLabel(element.sourceData.source.uri)}:${element.sourceData.lineNumber}` : ''));
140
143
  templateData.getReplElementSource = () => element.sourceData;
141
144
  }
142
145
  setElementCount(element, templateData) {
@@ -225,6 +228,7 @@ class ReplRawObjectsRenderer {
225
228
  });
226
229
  }
227
230
  disposeTemplate(templateData) {
231
+ templateData.label.dispose();
228
232
  }
229
233
  }
230
234
  function isNestedVariable(element) {
@@ -1,6 +1,16 @@
1
1
  import { __decorate, __param } from '../../../../../../../external/tslib/tslib.es6.js';
2
2
  import { localizeWithPath } from 'vscode/vscode/vs/nls';
3
- import { registerColor, asCssVariableName, asCssVariable } from 'vscode/vscode/vs/platform/theme/common/colorRegistry';
3
+ import { registerColor, asCssVariableName, asCssVariable } from 'vscode/vscode/vs/platform/theme/common/colorUtils';
4
+ import 'vscode/vscode/vs/platform/theme/common/colors/baseColors';
5
+ import 'vscode/vscode/vs/platform/theme/common/colors/chartsColors';
6
+ import 'vscode/vscode/vs/platform/theme/common/colors/editorColors';
7
+ import 'vscode/vscode/vs/platform/theme/common/colors/inputColors';
8
+ import 'vscode/vscode/vs/platform/theme/common/colors/listColors';
9
+ import 'vscode/vscode/vs/platform/theme/common/colors/menuColors';
10
+ import 'vscode/vscode/vs/platform/theme/common/colors/minimapColors';
11
+ import 'vscode/vscode/vs/platform/theme/common/colors/miscColors';
12
+ import 'vscode/vscode/vs/platform/theme/common/colors/quickpickColors';
13
+ import 'vscode/vscode/vs/platform/theme/common/colors/searchColors';
4
14
  import { IDebugService } from 'vscode/vscode/vs/workbench/contrib/debug/common/debug';
5
15
  import { IWorkspaceContextService } from 'vscode/vscode/vs/platform/workspace/common/workspace';
6
16
  import { STATUS_BAR_FOREGROUND, STATUS_BAR_BORDER, COMMAND_CENTER_BACKGROUND } from 'vscode/vscode/vs/workbench/common/theme';
@@ -80,7 +90,7 @@ let StatusBarColorProvider = class StatusBarColorProvider {
80
90
  if (e.affectsConfiguration('debug.enableStatusBarColor') || e.affectsConfiguration('debug.toolBarLocation')) {
81
91
  this.update();
82
92
  }
83
- });
93
+ }, this.disposables);
84
94
  this.update();
85
95
  }
86
96
  update() {
@@ -3,7 +3,7 @@ import { append, $ as $$1 } from 'vscode/vscode/vs/base/browser/dom';
3
3
  import { HighlightedLabel } from 'vscode/vscode/vs/base/browser/ui/highlightedlabel/highlightedLabel';
4
4
  import { Action } from 'vscode/vscode/vs/base/common/actions';
5
5
  import { coalesce } from 'vscode/vscode/vs/base/common/arrays';
6
- import { timeout, RunOnceScheduler } from 'vscode/vscode/vs/base/common/async';
6
+ import { RunOnceScheduler } from 'vscode/vscode/vs/base/common/async';
7
7
  import { CancellationTokenSource } from 'vscode/vscode/vs/base/common/cancellation';
8
8
  import { Codicon } from 'vscode/vscode/vs/base/common/codicons';
9
9
  import { createMatches } from 'vscode/vscode/vs/base/common/filters';
@@ -13,16 +13,15 @@ import { localizeWithPath } from 'vscode/vscode/vs/nls';
13
13
  import { createAndFillInContextMenuActions } from 'vscode/vscode/vs/platform/actions/browser/menuEntryActionViewItem';
14
14
  import { MenuId, registerAction2, IMenuService } from 'vscode/vscode/vs/platform/actions/common/actions';
15
15
  import { IClipboardService } from 'vscode/vscode/vs/platform/clipboard/common/clipboardService';
16
- import { CommandsRegistry, ICommandService } from 'vscode/vscode/vs/platform/commands/common/commands';
16
+ import { CommandsRegistry } from 'vscode/vscode/vs/platform/commands/common/commands';
17
17
  import { IConfigurationService } from 'vscode/vscode/vs/platform/configuration/common/configuration';
18
18
  import { ContextKeyExpr, IContextKeyService } from 'vscode/vscode/vs/platform/contextkey/common/contextkey';
19
19
  import { IContextMenuService, IContextViewService } from 'vscode/vscode/vs/platform/contextview/browser/contextView';
20
20
  import { IInstantiationService } from 'vscode/vscode/vs/platform/instantiation/common/instantiation';
21
21
  import { IKeybindingService } from 'vscode/vscode/vs/platform/keybinding/common/keybinding';
22
22
  import { WorkbenchAsyncDataTree } from 'vscode/vscode/vs/platform/list/browser/listService';
23
- import { INotificationService, Severity } from 'vscode/vscode/vs/platform/notification/common/notification';
23
+ import { INotificationService } from 'vscode/vscode/vs/platform/notification/common/notification';
24
24
  import { IOpenerService } from 'vscode/vscode/vs/platform/opener/common/opener';
25
- import { IProgressService } from 'vscode/vscode/vs/platform/progress/common/progress';
26
25
  import { ITelemetryService } from 'vscode/vscode/vs/platform/telemetry/common/telemetry';
27
26
  import { IThemeService } from 'vscode/vscode/vs/platform/theme/common/themeService';
28
27
  import { ViewAction, ViewPane } from 'vscode/vscode/vs/workbench/browser/parts/views/viewPane';
@@ -33,6 +32,7 @@ import { IDebugService, VARIABLES_VIEW_ID, CONTEXT_VARIABLES_FOCUSED, CONTEXT_BR
33
32
  import { getContextForVariable } from 'vscode/vscode/vs/workbench/contrib/debug/common/debugContext';
34
33
  import { VisualizedExpression, Variable, getUriForDebugMemory, Expression, ErrorScope, Scope, StackFrame } from 'vscode/vscode/vs/workbench/contrib/debug/common/debugModel';
35
34
  import { IDebugVisualizerService } from 'vscode/vscode/vs/workbench/contrib/debug/common/debugVisualizers';
35
+ import { IExtensionsWorkbenchService } from 'vscode/vscode/vs/workbench/contrib/extensions/common/extensions';
36
36
  import { IEditorService, SIDE_GROUP } from 'vscode/vscode/vs/workbench/services/editor/common/editorService';
37
37
  import { IExtensionService } from 'vscode/vscode/vs/workbench/services/extensions/common/extensions';
38
38
 
@@ -301,6 +301,7 @@ class ScopesRenderer {
301
301
  templateData.label.set(element.element.name, createMatches(element.filterData));
302
302
  }
303
303
  disposeTemplate(templateData) {
304
+ templateData.label.dispose();
304
305
  }
305
306
  }
306
307
  class ScopeErrorRenderer {
@@ -623,14 +624,13 @@ CommandsRegistry.registerCommand({
623
624
  sessionId = focused.getId();
624
625
  memoryReference = arg.memoryReference;
625
626
  }
626
- const commandService = accessor.get(ICommandService);
627
+ const extensionsWorkbenchService = accessor.get(IExtensionsWorkbenchService);
627
628
  const editorService = accessor.get(IEditorService);
628
- const notifications = accessor.get(INotificationService);
629
- const progressService = accessor.get(IProgressService);
629
+ const notificationService = accessor.get(INotificationService);
630
630
  const extensionService = accessor.get(IExtensionService);
631
631
  const telemetryService = accessor.get(ITelemetryService);
632
632
  const ext = await extensionService.getExtension(HEX_EDITOR_EXTENSION_ID);
633
- if (ext || (await tryInstallHexEditor(notifications, progressService, extensionService, commandService))) {
633
+ if (ext || (await tryInstallHexEditor(extensionsWorkbenchService, notificationService))) {
634
634
  telemetryService.publicLog('debug/didViewMemory', {
635
635
  debugType: debugService.getModel().getSession(sessionId)?.configuration.type,
636
636
  });
@@ -644,51 +644,22 @@ CommandsRegistry.registerCommand({
644
644
  }
645
645
  }
646
646
  });
647
- function tryInstallHexEditor(notifications, progressService, extensionService, commandService) {
648
- return ( new Promise(resolve => {
649
- let installing = false;
650
- const handle = notifications.prompt(Severity.Info, ( localizeWithPath(
651
- 'vs/workbench/contrib/debug/browser/variablesView',
652
- "viewMemory.prompt",
653
- "Inspecting binary data requires the Hex Editor extension. Would you like to install it now?"
654
- )), [
655
- {
656
- label: ( localizeWithPath('vs/workbench/contrib/debug/browser/variablesView', "cancel", "Cancel")),
657
- run: () => resolve(false),
658
- },
659
- {
660
- label: ( localizeWithPath('vs/workbench/contrib/debug/browser/variablesView', "install", "Install")),
661
- run: async () => {
662
- installing = true;
663
- try {
664
- await progressService.withProgress({
665
- location: 15 ,
666
- title: ( localizeWithPath(
667
- 'vs/workbench/contrib/debug/browser/variablesView',
668
- "viewMemory.install.progress",
669
- "Installing the Hex Editor..."
670
- )),
671
- }, async () => {
672
- await commandService.executeCommand('workbench.extensions.installExtension', HEX_EDITOR_EXTENSION_ID);
673
- while (!(await extensionService.getExtension(HEX_EDITOR_EXTENSION_ID))) {
674
- await timeout(30);
675
- }
676
- });
677
- resolve(true);
678
- }
679
- catch (e) {
680
- notifications.error(e);
681
- resolve(false);
682
- }
683
- }
684
- },
685
- ], { sticky: true });
686
- handle.onDidClose(e => {
687
- if (!installing) {
688
- resolve(false);
689
- }
690
- });
691
- }));
647
+ async function tryInstallHexEditor(extensionsWorkbenchService, notificationService) {
648
+ try {
649
+ await extensionsWorkbenchService.install(HEX_EDITOR_EXTENSION_ID, {
650
+ justification: ( localizeWithPath(
651
+ 'vs/workbench/contrib/debug/browser/variablesView',
652
+ "viewMemory.prompt",
653
+ "Inspecting binary data requires this extension."
654
+ )),
655
+ enable: true
656
+ }, 15 );
657
+ return true;
658
+ }
659
+ catch (error) {
660
+ notificationService.error(error);
661
+ return false;
662
+ }
692
663
  }
693
664
  const BREAK_WHEN_VALUE_CHANGES_ID = 'debug.breakWhenValueChanges';
694
665
  CommandsRegistry.registerCommand({
@@ -696,7 +667,7 @@ CommandsRegistry.registerCommand({
696
667
  handler: async (accessor) => {
697
668
  const debugService = accessor.get(IDebugService);
698
669
  if (dataBreakpointInfoResponse) {
699
- await debugService.addDataBreakpoint(dataBreakpointInfoResponse.description, dataBreakpointInfoResponse.dataId, !!dataBreakpointInfoResponse.canPersist, dataBreakpointInfoResponse.accessTypes, 'write', undefined);
670
+ await debugService.addDataBreakpoint({ description: dataBreakpointInfoResponse.description, src: { type: 0 , dataId: dataBreakpointInfoResponse.dataId }, canPersist: !!dataBreakpointInfoResponse.canPersist, accessTypes: dataBreakpointInfoResponse.accessTypes, accessType: 'write' });
700
671
  }
701
672
  }
702
673
  });
@@ -706,7 +677,7 @@ CommandsRegistry.registerCommand({
706
677
  handler: async (accessor) => {
707
678
  const debugService = accessor.get(IDebugService);
708
679
  if (dataBreakpointInfoResponse) {
709
- await debugService.addDataBreakpoint(dataBreakpointInfoResponse.description, dataBreakpointInfoResponse.dataId, !!dataBreakpointInfoResponse.canPersist, dataBreakpointInfoResponse.accessTypes, 'readWrite', undefined);
680
+ await debugService.addDataBreakpoint({ description: dataBreakpointInfoResponse.description, src: { type: 0 , dataId: dataBreakpointInfoResponse.dataId }, canPersist: !!dataBreakpointInfoResponse.canPersist, accessTypes: dataBreakpointInfoResponse.accessTypes, accessType: 'readWrite' });
710
681
  }
711
682
  }
712
683
  });
@@ -716,7 +687,7 @@ CommandsRegistry.registerCommand({
716
687
  handler: async (accessor) => {
717
688
  const debugService = accessor.get(IDebugService);
718
689
  if (dataBreakpointInfoResponse) {
719
- await debugService.addDataBreakpoint(dataBreakpointInfoResponse.description, dataBreakpointInfoResponse.dataId, !!dataBreakpointInfoResponse.canPersist, dataBreakpointInfoResponse.accessTypes, 'read', undefined);
690
+ await debugService.addDataBreakpoint({ description: dataBreakpointInfoResponse.description, src: { type: 0 , dataId: dataBreakpointInfoResponse.dataId }, canPersist: !!dataBreakpointInfoResponse.canPersist, accessTypes: dataBreakpointInfoResponse.accessTypes, accessType: 'read' });
720
691
  }
721
692
  }
722
693
  });
@@ -1,12 +1,16 @@
1
1
  import { __decorate, __param } from '../../../../../../../external/tslib/tslib.es6.js';
2
2
  import { Disposable } from 'vscode/vscode/vs/base/common/lifecycle';
3
+ import { observableValue } from 'vscode/vscode/vs/base/common/observableInternal/base';
4
+ import 'vscode/vscode/vs/base/common/observableInternal/derived';
5
+ import 'vscode/vscode/vs/base/common/observableInternal/autorun';
6
+ import 'vscode/vscode/vs/base/common/observableInternal/utils';
7
+ import 'vscode/vscode/vs/base/common/cancellation';
3
8
  import { URI } from 'vscode/vscode/vs/base/common/uri';
4
9
  import { ILogService } from 'vscode/vscode/vs/platform/log/common/log';
5
10
  import { IStorageService } from 'vscode/vscode/vs/platform/storage/common/storage';
6
11
  import { IUriIdentityService } from 'vscode/vscode/vs/platform/uriIdentity/common/uriIdentity';
7
12
  import { Breakpoint, FunctionBreakpoint, ExceptionBreakpoint, DataBreakpoint, Expression } from 'vscode/vscode/vs/workbench/contrib/debug/common/debugModel';
8
13
  import { ITextFileService } from 'vscode/vscode/vs/workbench/services/textfile/common/textfiles';
9
- import { observableValue } from 'vscode/vscode/vs/base/common/observableInternal/base';
10
14
 
11
15
  const DEBUG_BREAKPOINTS_KEY = 'debug.breakpoint';
12
16
  const DEBUG_FUNCTION_BREAKPOINTS_KEY = 'debug.functionbreakpoint';
@@ -1,5 +1,5 @@
1
1
  import { Emitter } from 'vscode/vscode/vs/base/common/event';
2
- import { CONTEXT_EXPRESSION_SELECTED, CONTEXT_LOADED_SCRIPTS_SUPPORTED, CONTEXT_STEP_BACK_SUPPORTED, CONTEXT_FOCUSED_SESSION_IS_ATTACH, CONTEXT_FOCUSED_SESSION_IS_NO_DEBUG, CONTEXT_RESTART_FRAME_SUPPORTED, CONTEXT_STEP_INTO_TARGETS_SUPPORTED, CONTEXT_JUMP_TO_CURSOR_SUPPORTED, CONTEXT_SET_VARIABLE_SUPPORTED, CONTEXT_SET_EXPRESSION_SUPPORTED, CONTEXT_MULTI_SESSION_DEBUG, CONTEXT_TERMINATE_DEBUGGEE_SUPPORTED, CONTEXT_SUSPEND_DEBUGGEE_SUPPORTED, CONTEXT_DISASSEMBLE_REQUEST_SUPPORTED, CONTEXT_FOCUSED_STACK_FRAME_HAS_INSTRUCTION_POINTER_REFERENCE } from 'vscode/vscode/vs/workbench/contrib/debug/common/debug';
2
+ import { CONTEXT_EXPRESSION_SELECTED, CONTEXT_LOADED_SCRIPTS_SUPPORTED, CONTEXT_STEP_BACK_SUPPORTED, CONTEXT_FOCUSED_SESSION_IS_ATTACH, CONTEXT_FOCUSED_SESSION_IS_NO_DEBUG, CONTEXT_RESTART_FRAME_SUPPORTED, CONTEXT_STEP_INTO_TARGETS_SUPPORTED, CONTEXT_JUMP_TO_CURSOR_SUPPORTED, CONTEXT_SET_VARIABLE_SUPPORTED, CONTEXT_SET_DATA_BREAKPOINT_BYTES_SUPPORTED, CONTEXT_SET_EXPRESSION_SUPPORTED, CONTEXT_MULTI_SESSION_DEBUG, CONTEXT_TERMINATE_DEBUGGEE_SUPPORTED, CONTEXT_SUSPEND_DEBUGGEE_SUPPORTED, CONTEXT_DISASSEMBLE_REQUEST_SUPPORTED, CONTEXT_FOCUSED_STACK_FRAME_HAS_INSTRUCTION_POINTER_REFERENCE } from 'vscode/vscode/vs/workbench/contrib/debug/common/debug';
3
3
  import { isSessionAttach } from 'vscode/vscode/vs/workbench/contrib/debug/common/debugUtils';
4
4
 
5
5
  class ViewModel {
@@ -25,6 +25,7 @@ class ViewModel {
25
25
  this.stepIntoTargetsSupported = CONTEXT_STEP_INTO_TARGETS_SUPPORTED.bindTo(contextKeyService);
26
26
  this.jumpToCursorSupported = CONTEXT_JUMP_TO_CURSOR_SUPPORTED.bindTo(contextKeyService);
27
27
  this.setVariableSupported = CONTEXT_SET_VARIABLE_SUPPORTED.bindTo(contextKeyService);
28
+ this.setDataBreakpointAtByteSupported = CONTEXT_SET_DATA_BREAKPOINT_BYTES_SUPPORTED.bindTo(contextKeyService);
28
29
  this.setExpressionSupported = CONTEXT_SET_EXPRESSION_SUPPORTED.bindTo(contextKeyService);
29
30
  this.multiSessionDebug = CONTEXT_MULTI_SESSION_DEBUG.bindTo(contextKeyService);
30
31
  this.terminateDebuggeeSupported = CONTEXT_TERMINATE_DEBUGGEE_SUPPORTED.bindTo(contextKeyService);
@@ -53,15 +54,16 @@ class ViewModel {
53
54
  this._focusedThread = thread;
54
55
  this._focusedSession = session;
55
56
  this.contextKeyService.bufferChangeEvents(() => {
56
- this.loadedScriptsSupportedContextKey.set(session ? !!session.capabilities.supportsLoadedSourcesRequest : false);
57
- this.stepBackSupportedContextKey.set(session ? !!session.capabilities.supportsStepBack : false);
58
- this.restartFrameSupportedContextKey.set(session ? !!session.capabilities.supportsRestartFrame : false);
59
- this.stepIntoTargetsSupported.set(session ? !!session.capabilities.supportsStepInTargetsRequest : false);
60
- this.jumpToCursorSupported.set(session ? !!session.capabilities.supportsGotoTargetsRequest : false);
61
- this.setVariableSupported.set(session ? !!session.capabilities.supportsSetVariable : false);
62
- this.setExpressionSupported.set(session ? !!session.capabilities.supportsSetExpression : false);
63
- this.terminateDebuggeeSupported.set(session ? !!session.capabilities.supportTerminateDebuggee : false);
64
- this.suspendDebuggeeSupported.set(session ? !!session.capabilities.supportSuspendDebuggee : false);
57
+ this.loadedScriptsSupportedContextKey.set(!!session?.capabilities.supportsLoadedSourcesRequest);
58
+ this.stepBackSupportedContextKey.set(!!session?.capabilities.supportsStepBack);
59
+ this.restartFrameSupportedContextKey.set(!!session?.capabilities.supportsRestartFrame);
60
+ this.stepIntoTargetsSupported.set(!!session?.capabilities.supportsStepInTargetsRequest);
61
+ this.jumpToCursorSupported.set(!!session?.capabilities.supportsGotoTargetsRequest);
62
+ this.setVariableSupported.set(!!session?.capabilities.supportsSetVariable);
63
+ this.setDataBreakpointAtByteSupported.set(!!session?.capabilities.supportsDataBreakpointBytes);
64
+ this.setExpressionSupported.set(!!session?.capabilities.supportsSetExpression);
65
+ this.terminateDebuggeeSupported.set(!!session?.capabilities.supportTerminateDebuggee);
66
+ this.suspendDebuggeeSupported.set(!!session?.capabilities.supportSuspendDebuggee);
65
67
  this.disassembleRequestSupported.set(!!session?.capabilities.supportsDisassembleRequest);
66
68
  this.focusedStackFrameHasInstructionPointerReference.set(!!stackFrame?.instructionPointerReference);
67
69
  const attach = !!session && isSessionAttach(session);
@@ -5,6 +5,7 @@ import { ILabelService } from 'vscode/vscode/vs/platform/label/common/label';
5
5
  import { IQuickInputService } from 'vscode/vscode/vs/platform/quickinput/common/quickInput';
6
6
  import { IWorkspaceContextService } from 'vscode/vscode/vs/platform/workspace/common/workspace';
7
7
  import { BaseConfigurationResolverService } from './baseConfigurationResolverService.js';
8
+ import 'vscode/vscode/vs/workbench/services/configurationResolver/common/configurationResolver';
8
9
  import { IEditorService } from 'vscode/vscode/vs/workbench/services/editor/common/editorService';
9
10
  import { IExtensionService } from 'vscode/vscode/vs/workbench/services/extensions/common/extensions';
10
11
  import { IPathService } from 'vscode/vscode/vs/workbench/services/path/common/pathService';