@codingame/monaco-vscode-debug-service-override 6.0.2 → 7.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 (20) hide show
  1. package/package.json +2 -2
  2. package/vscode/src/vs/workbench/contrib/debug/browser/callStackView.js +5 -5
  3. package/vscode/src/vs/workbench/contrib/debug/browser/debug.contribution.js +58 -53
  4. package/vscode/src/vs/workbench/contrib/debug/browser/debugActionViewItems.js +1 -1
  5. package/vscode/src/vs/workbench/contrib/debug/browser/debugEditorActions.js +4 -3
  6. package/vscode/src/vs/workbench/contrib/debug/browser/debugEditorContribution.js +34 -29
  7. package/vscode/src/vs/workbench/contrib/debug/browser/debugHover.js +22 -15
  8. package/vscode/src/vs/workbench/contrib/debug/browser/debugService.js +14 -3
  9. package/vscode/src/vs/workbench/contrib/debug/browser/debugSession.js +21 -6
  10. package/vscode/src/vs/workbench/contrib/debug/browser/debugToolBar.js +3 -3
  11. package/vscode/src/vs/workbench/contrib/debug/browser/exceptionWidget.js +1 -1
  12. package/vscode/src/vs/workbench/contrib/debug/browser/media/debugToolBar.css.js +1 -1
  13. package/vscode/src/vs/workbench/contrib/debug/browser/media/repl.css.js +1 -1
  14. package/vscode/src/vs/workbench/contrib/debug/browser/repl.js +10 -2
  15. package/vscode/src/vs/workbench/contrib/debug/browser/replViewer.js +58 -37
  16. package/vscode/src/vs/workbench/contrib/debug/browser/statusbarColorProvider.js +4 -14
  17. package/vscode/src/vs/workbench/contrib/debug/browser/variablesView.js +13 -3
  18. package/vscode/src/vs/workbench/contrib/debug/browser/watchExpressionsView.js +30 -8
  19. package/vscode/src/vs/workbench/contrib/debug/common/debugLifecycle.js +4 -1
  20. package/vscode/src/vs/workbench/services/configurationResolver/browser/baseConfigurationResolverService.js +1 -1
@@ -1,5 +1,5 @@
1
1
  import { __decorate, __param } from 'vscode/external/tslib/tslib.es6.js';
2
- import { $ as $$1, append, addStandardDisposableListener, isAncestorOfActiveElement } from 'vscode/vscode/vs/base/browser/dom';
2
+ import { $ as $$1, append, addStandardDisposableListener, SafeTriangle, isAncestorOfActiveElement } from 'vscode/vscode/vs/base/browser/dom';
3
3
  import { DomScrollableElement } from 'vscode/vscode/vs/base/browser/ui/scrollbar/scrollableElement';
4
4
  import { coalesce } from 'vscode/vscode/vs/base/common/arrays';
5
5
  import { CancellationTokenSource } from 'vscode/vscode/vs/base/common/cancellation';
@@ -187,7 +187,10 @@ let DebugHoverWidget = class DebugHoverWidget {
187
187
  getDomNode() {
188
188
  return this.domNode;
189
189
  }
190
- async showAt(position, focus) {
190
+ isInSafeTriangle(x, y) {
191
+ return this._isVisible && !!this.safeTriangle?.contains(x, y);
192
+ }
193
+ async showAt(position, focus, mouseEvent) {
191
194
  this.showCancellationSource?.cancel();
192
195
  const cancellationSource = this.showCancellationSource = ( (new CancellationTokenSource()));
193
196
  const session = this.debugService.getViewModel().focusedSession;
@@ -220,19 +223,19 @@ let DebugHoverWidget = class DebugHoverWidget {
220
223
  range: result.range,
221
224
  options: DebugHoverWidget_1._HOVER_HIGHLIGHT_DECORATION_OPTIONS
222
225
  }]);
223
- return this.doShow(result.range.getStartPosition(), expression, focus);
226
+ return this.doShow(result.range.getStartPosition(), expression, focus, mouseEvent);
224
227
  }
225
228
  static { this._HOVER_HIGHLIGHT_DECORATION_OPTIONS = ModelDecorationOptions.register({
226
229
  description: 'bdebug-hover-highlight',
227
230
  className: 'hoverHighlight'
228
231
  }); }
229
- async doShow(position, expression, focus, forceValueHover = false) {
232
+ async doShow(position, expression, focus, mouseEvent) {
230
233
  if (!this.domNode) {
231
234
  this.create();
232
235
  }
233
236
  this.showAtPosition = position;
234
237
  this._isVisible = true;
235
- if (!expression.hasChildren || forceValueHover) {
238
+ if (!expression.hasChildren) {
236
239
  this.complexValueContainer.hidden = true;
237
240
  this.valueContainer.hidden = false;
238
241
  renderExpressionValue(expression, this.valueContainer, {
@@ -256,6 +259,7 @@ let DebugHoverWidget = class DebugHoverWidget {
256
259
  this.tree.scrollTop = 0;
257
260
  this.tree.scrollLeft = 0;
258
261
  this.complexValueContainer.hidden = false;
262
+ this.safeTriangle = mouseEvent && new SafeTriangle(mouseEvent.posx, mouseEvent.posy, this.domNode);
259
263
  if (focus) {
260
264
  this.editor.render();
261
265
  this.tree.domFocus();
@@ -384,27 +388,30 @@ let DebugHoverComputer = class DebugHoverComputer {
384
388
  return { rangeChanged: false };
385
389
  }
386
390
  const { range, matchingExpression } = result;
387
- const rangeChanged = this._currentRange ?
388
- !this._currentRange.equalsRange(range) :
389
- true;
390
- this._currentExpression = matchingExpression;
391
- this._currentRange = Range.lift(range);
392
- return { rangeChanged, range: this._currentRange };
391
+ const rangeChanged = !this._current?.range.equalsRange(range);
392
+ this._current = { expression: matchingExpression, range: Range.lift(range) };
393
+ return { rangeChanged, range: this._current.range };
393
394
  }
394
395
  async evaluate(session) {
395
- if (!this._currentExpression) {
396
+ if (!this._current) {
396
397
  this.logService.error('No expression to evaluate');
397
398
  return;
398
399
  }
400
+ const textModel = this.editor.getModel();
401
+ const debugSource = textModel && session.getSourceForUri(textModel?.uri);
399
402
  if (session.capabilities.supportsEvaluateForHovers) {
400
- const expression = ( (new Expression(this._currentExpression)));
401
- await expression.evaluate(session, this.debugService.getViewModel().focusedStackFrame, 'hover');
403
+ const expression = ( (new Expression(this._current.expression)));
404
+ await expression.evaluate(session, this.debugService.getViewModel().focusedStackFrame, 'hover', undefined, debugSource ? {
405
+ line: this._current.range.startLineNumber,
406
+ column: this._current.range.startColumn,
407
+ source: debugSource.raw,
408
+ } : undefined);
402
409
  return expression;
403
410
  }
404
411
  else {
405
412
  const focusedStackFrame = this.debugService.getViewModel().focusedStackFrame;
406
413
  if (focusedStackFrame) {
407
- return await findExpressionInStackFrame(focusedStackFrame, coalesce(( (this._currentExpression.split('.').map(word => word.trim())))));
414
+ return await findExpressionInStackFrame(focusedStackFrame, coalesce(( (this._current.expression.split('.').map(word => word.trim())))));
408
415
  }
409
416
  }
410
417
  return undefined;
@@ -47,6 +47,7 @@ import { saveAllBeforeDebugStart, getExtensionHostDebugSession } from 'vscode/vs
47
47
  import { ViewModel } from '../common/debugViewModel.js';
48
48
  import { DisassemblyViewInput } from 'vscode/vscode/vs/workbench/contrib/debug/common/disassemblyViewInput';
49
49
  import { VIEWLET_ID as VIEWLET_ID$1 } from 'vscode/vscode/vs/workbench/contrib/files/common/files';
50
+ import { ITestService } from 'vscode/vscode/vs/workbench/contrib/testing/common/testService.service';
50
51
  import { NumberBadge } from 'vscode/vscode/vs/workbench/services/activity/common/activity';
51
52
  import { IActivityService } from 'vscode/vscode/vs/workbench/services/activity/common/activity.service';
52
53
  import { IEditorService } from 'vscode/vscode/vs/workbench/services/editor/common/editorService.service';
@@ -59,7 +60,7 @@ import { IViewsService } from 'vscode/vscode/vs/workbench/services/views/common/
59
60
 
60
61
  const _moduleId = "vs/workbench/contrib/debug/browser/debugService";
61
62
  let DebugService = class DebugService {
62
- constructor(editorService, paneCompositeService, viewsService, viewDescriptorService, notificationService, dialogService, layoutService, contextService, contextKeyService, lifecycleService, instantiationService, extensionService, fileService, configurationService, extensionHostDebugService, activityService, commandService, quickInputService, workspaceTrustRequestService, uriIdentityService) {
63
+ constructor(editorService, paneCompositeService, viewsService, viewDescriptorService, notificationService, dialogService, layoutService, contextService, contextKeyService, lifecycleService, instantiationService, extensionService, fileService, configurationService, extensionHostDebugService, activityService, commandService, quickInputService, workspaceTrustRequestService, uriIdentityService, testService) {
63
64
  this.editorService = editorService;
64
65
  this.paneCompositeService = paneCompositeService;
65
66
  this.viewsService = viewsService;
@@ -80,6 +81,7 @@ let DebugService = class DebugService {
80
81
  this.quickInputService = quickInputService;
81
82
  this.workspaceTrustRequestService = workspaceTrustRequestService;
82
83
  this.uriIdentityService = uriIdentityService;
84
+ this.testService = testService;
83
85
  this.restartingSessions = ( (new Set()));
84
86
  this.disposables = ( (new DisposableStore()));
85
87
  this.initializing = false;
@@ -159,7 +161,7 @@ let DebugService = class DebugService {
159
161
  }
160
162
  }));
161
163
  this.disposables.add(extensionService.onWillStop(evt => {
162
- evt.veto(this.stopSession(undefined).then(() => false), ( localizeWithPath(_moduleId, 2, 'Stopping debug sessions...')));
164
+ evt.veto(this.model.getSessions().length > 0, ( localizeWithPath(_moduleId, 2, 'A debug session is still running.')));
163
165
  }));
164
166
  this.initContextKeys(contextKeyService);
165
167
  }
@@ -735,6 +737,14 @@ let DebugService = class DebugService {
735
737
  }
736
738
  }
737
739
  };
740
+ if (session.correlatedTestRun) {
741
+ if (!session.correlatedTestRun.completedAt) {
742
+ this.testService.cancelTestRun(session.correlatedTestRun.id);
743
+ await Event.toPromise(session.correlatedTestRun.onComplete);
744
+ }
745
+ this.testService.runResolvedTests(session.correlatedTestRun.request);
746
+ return;
747
+ }
738
748
  if (session.capabilities.supportsRestartRequest) {
739
749
  const taskResult = await runTasks();
740
750
  if (taskResult === TaskRunResult.Success) {
@@ -1258,7 +1268,8 @@ DebugService = ( (__decorate([
1258
1268
  ( (__param(16, ICommandService))),
1259
1269
  ( (__param(17, IQuickInputService))),
1260
1270
  ( (__param(18, IWorkspaceTrustRequestService))),
1261
- ( (__param(19, IUriIdentityService)))
1271
+ ( (__param(19, IUriIdentityService))),
1272
+ ( (__param(20, ITestService)))
1262
1273
  ], DebugService)));
1263
1274
  function getStackFrameThreadAndSessionToFocus(model, stackFrame, thread, session, avoidSession) {
1264
1275
  if (!session) {
@@ -38,11 +38,13 @@ import { IPaneCompositePartService } from 'vscode/vscode/vs/workbench/services/p
38
38
  import { getActiveWindow } from 'vscode/vscode/vs/base/browser/dom';
39
39
  import { mainWindow } from 'vscode/vscode/vs/base/browser/window';
40
40
  import { isDefined } from 'vscode/vscode/vs/base/common/types';
41
+ import { ITestService } from 'vscode/vscode/vs/workbench/contrib/testing/common/testService.service';
42
+ import { ITestResultService } from 'vscode/vscode/vs/workbench/contrib/testing/common/testResultService.service';
41
43
 
42
44
  const _moduleId = "vs/workbench/contrib/debug/browser/debugSession";
43
45
  const TRIGGERED_BREAKPOINT_MAX_DELAY = 1500;
44
46
  let DebugSession = class DebugSession {
45
- constructor(id, _configuration, root, model, options, debugService, telemetryService, hostService, configurationService, paneCompositeService, workspaceContextService, productService, notificationService, lifecycleService, uriIdentityService, instantiationService, customEndpointTelemetryService, workbenchEnvironmentService, logService) {
47
+ constructor(id, _configuration, root, model, options, debugService, telemetryService, hostService, configurationService, paneCompositeService, workspaceContextService, productService, notificationService, lifecycleService, uriIdentityService, instantiationService, customEndpointTelemetryService, workbenchEnvironmentService, logService, testService, testResultService) {
46
48
  this.id = id;
47
49
  this._configuration = _configuration;
48
50
  this.root = root;
@@ -60,6 +62,7 @@ let DebugSession = class DebugSession {
60
62
  this.customEndpointTelemetryService = customEndpointTelemetryService;
61
63
  this.workbenchEnvironmentService = workbenchEnvironmentService;
62
64
  this.logService = logService;
65
+ this.testService = testService;
63
66
  this.initialized = false;
64
67
  this.sources = ( (new Map()));
65
68
  this.threads = ( (new Map()));
@@ -96,6 +99,12 @@ let DebugSession = class DebugSession {
96
99
  dispose(toDispose);
97
100
  }));
98
101
  }
102
+ this.correlatedTestRun = options?.testRun
103
+ ? testResultService.getResult(options.testRun.runId)
104
+ : this.parentSession?.correlatedTestRun;
105
+ if (this.correlatedTestRun) {
106
+ toDispose.add(this.correlatedTestRun.onComplete(() => this.terminate()));
107
+ }
99
108
  const compoundRoot = this._options.compoundRoot;
100
109
  if (compoundRoot) {
101
110
  toDispose.add(compoundRoot.onDidSessionStop(() => this.terminate()));
@@ -304,6 +313,10 @@ let DebugSession = class DebugSession {
304
313
  if (this._options.lifecycleManagedByParent && this.parentSession) {
305
314
  await this.parentSession.terminate(restart);
306
315
  }
316
+ else if (this.correlatedTestRun && !this.correlatedTestRun.completedAt && !this.didTerminateTestRun) {
317
+ this.didTerminateTestRun = true;
318
+ this.testService.cancelTestRun(this.correlatedTestRun.id);
319
+ }
307
320
  else if (this.raw) {
308
321
  if (this.raw.capabilities.supportsTerminateRequest && this._configuration.resolved.request === 'launch') {
309
322
  await this.raw.terminate(restart);
@@ -577,13 +590,13 @@ let DebugSession = class DebugSession {
577
590
  const token = threadId ? this.getNewCancellationToken(threadId) : undefined;
578
591
  return this.raw.variables({ variablesReference, filter, start, count }, token);
579
592
  }
580
- evaluate(expression, frameId, context) {
593
+ evaluate(expression, frameId, context, location) {
581
594
  if (!this.raw) {
582
595
  throw ( (new Error(
583
596
  localizeWithPath(_moduleId, 0, "No debugger available, can not send '{0}'", 'evaluate')
584
597
  )));
585
598
  }
586
- return this.raw.evaluate({ expression, frameId, context });
599
+ return this.raw.evaluate({ expression, frameId, context, line: location?.line, column: location?.column, source: location?.source });
587
600
  }
588
601
  async restartFrame(frameId, threadId) {
589
602
  await this.waitForTriggeredBreakpoints();
@@ -1289,8 +1302,8 @@ let DebugSession = class DebugSession {
1289
1302
  removeReplExpressions() {
1290
1303
  this.repl.removeReplExpressions();
1291
1304
  }
1292
- async addReplExpression(stackFrame, name) {
1293
- await this.repl.addReplExpression(this, stackFrame, name);
1305
+ async addReplExpression(stackFrame, expression) {
1306
+ await this.repl.addReplExpression(this, stackFrame, expression);
1294
1307
  this.debugService.getViewModel().updateViews();
1295
1308
  }
1296
1309
  appendToRepl(data, isImportant) {
@@ -1314,7 +1327,9 @@ DebugSession = ( (__decorate([
1314
1327
  ( (__param(15, IInstantiationService))),
1315
1328
  ( (__param(16, ICustomEndpointTelemetryService))),
1316
1329
  ( (__param(17, IWorkbenchEnvironmentService))),
1317
- ( (__param(18, ILogService)))
1330
+ ( (__param(18, ILogService))),
1331
+ ( (__param(19, ITestService))),
1332
+ ( (__param(20, ITestResultService)))
1318
1333
  ], DebugSession)));
1319
1334
  class ThreadStatusScheduler extends Disposable {
1320
1335
  constructor() {
@@ -6,7 +6,7 @@ import { Action } from 'vscode/vscode/vs/base/common/actions';
6
6
  import { equals } from 'vscode/vscode/vs/base/common/arrays';
7
7
  import { RunOnceScheduler } from 'vscode/vscode/vs/base/common/async';
8
8
  import { isCancellationError } from 'vscode/vscode/vs/base/common/errors';
9
- import { DisposableStore, MutableDisposable, dispose } from 'vscode/vscode/vs/base/common/lifecycle';
9
+ import { DisposableStore, MutableDisposable, markAsSingleton, dispose } from 'vscode/vscode/vs/base/common/lifecycle';
10
10
  import './media/debugToolBar.css.js';
11
11
  import { localizeWithPath } from 'vscode/vscode/vs/nls';
12
12
  import { DropdownWithPrimaryActionViewItem } from 'vscode/vscode/vs/platform/actions/browser/dropdownWithPrimaryActionViewItem';
@@ -337,7 +337,7 @@ const registerDebugToolBarItem = (id, title, order, icon, when, precondition, al
337
337
  }
338
338
  }));
339
339
  };
340
- MenuRegistry.onDidChangeMenu(e => {
340
+ markAsSingleton(MenuRegistry.onDidChangeMenu(e => {
341
341
  if (( (e.has(MenuId.DebugToolBar)))) {
342
342
  dispose(debugViewTitleItems);
343
343
  const items = MenuRegistry.getMenuItems(MenuId.DebugToolBar);
@@ -353,7 +353,7 @@ MenuRegistry.onDidChangeMenu(e => {
353
353
  }));
354
354
  }
355
355
  }
356
- });
356
+ }));
357
357
  const CONTEXT_TOOLBAR_COMMAND_CENTER = ( (ContextKeyExpr.equals('config.debug.toolBarLocation', 'commandCenter')));
358
358
  MenuRegistry.appendMenuItem(MenuId.CommandCenterCenter, {
359
359
  submenu: MenuId.DebugToolBar,
@@ -27,7 +27,7 @@ import { widgetClose } from 'vscode/vscode/vs/platform/theme/common/iconRegistry
27
27
 
28
28
  const _moduleId = "vs/workbench/contrib/debug/browser/exceptionWidget";
29
29
  const $ = $$1;
30
- const debugExceptionWidgetBorder = registerColor('debugExceptionWidget.border', { dark: '#a31515', light: '#a31515', hcDark: '#a31515', hcLight: '#a31515' }, ( localizeWithPath(_moduleId, 0, 'Exception widget border color.')));
30
+ const debugExceptionWidgetBorder = registerColor('debugExceptionWidget.border', '#a31515', ( localizeWithPath(_moduleId, 0, 'Exception widget border color.')));
31
31
  const debugExceptionWidgetBackground = registerColor('debugExceptionWidget.background', { dark: '#420b0d', light: '#f1dfde', hcDark: '#420b0d', hcLight: '#f1dfde' }, ( localizeWithPath(_moduleId, 1, 'Exception widget background color.')));
32
32
  let ExceptionWidget = class ExceptionWidget extends ZoneWidget {
33
33
  constructor(editor, exceptionInfo, debugSession, themeService, instantiationService) {
@@ -1,6 +1,6 @@
1
1
  import n from 'vscode/external/rollup-plugin-styles/dist/runtime/inject-css.js';
2
2
 
3
- var css = ".monaco-workbench .debug-toolbar{-webkit-app-region:no-drag;border-radius:4px;display:flex;height:26px;padding-left:7px;position:absolute;z-index:3000}.monaco-workbench .debug-toolbar .monaco-action-bar .action-item{margin-right:4px}.monaco-workbench .debug-toolbar .monaco-action-bar .action-item.select-container{margin-right:7px}.monaco-workbench .debug-toolbar .monaco-action-bar .action-item.select-container .monaco-select-box,.monaco-workbench .start-debug-action-item .select-container .monaco-select-box{padding:0 22px 0 6px}.monaco-workbench .debug-toolbar .drag-area{align-items:center;cursor:grab;display:flex;justify-content:center;opacity:.5;width:16px}.monaco-workbench .debug-toolbar .drag-area.dragged{cursor:grabbing}.monaco-workbench .debug-toolbar .monaco-action-bar .action-item .action-label{align-items:center;background-position:50%;background-repeat:no-repeat;background-size:16px;display:flex;justify-content:center;margin-right:0}";
3
+ var css = ".monaco-workbench .debug-toolbar{-webkit-app-region:no-drag;border-radius:4px;display:flex;height:26px;padding-left:7px;position:absolute;z-index:2520}.monaco-workbench .debug-toolbar .monaco-action-bar .action-item{margin-right:4px}.monaco-workbench .debug-toolbar .monaco-action-bar .action-item.select-container{margin-right:7px}.monaco-workbench .debug-toolbar .monaco-action-bar .action-item.select-container .monaco-select-box,.monaco-workbench .start-debug-action-item .select-container .monaco-select-box{padding:0 22px 0 6px}.monaco-workbench .debug-toolbar .drag-area{align-items:center;cursor:grab;display:flex;justify-content:center;opacity:.5;width:16px}.monaco-workbench .debug-toolbar .drag-area.dragged{cursor:grabbing}.monaco-workbench .debug-toolbar .monaco-action-bar .action-item .action-label{align-items:center;background-position:50%;background-repeat:no-repeat;background-size:16px;display:flex;justify-content:center;margin-right:0}";
4
4
  n(css,{});
5
5
 
6
6
  export { css, css as default };
@@ -1,6 +1,6 @@
1
1
  import n from 'vscode/external/rollup-plugin-styles/dist/runtime/inject-css.js';
2
2
 
3
- var css = ".monaco-workbench .repl{box-sizing:border-box;height:100%;overflow:hidden}.monaco-workbench .repl .repl-tree .monaco-tl-contents{user-select:text;-webkit-user-select:text;white-space:pre}.monaco-workbench .repl .repl-tree .monaco-tl-contents .expression{font-family:var(--vscode-repl-font-family);font-size:var(--vscode-repl-font-size);line-height:var(--vscode-repl-line-height)}.monaco-workbench .repl .repl-tree .monaco-tl-contents .expression .lazy-button{cursor:pointer}.monaco-workbench .repl .repl-tree .monaco-tl-twistie{background-position-y:calc(100% - var(--vscode-repl-font-size-for-twistie))}.monaco-workbench .repl .repl-tree.word-wrap .monaco-tl-contents{word-wrap:break-word;white-space:pre-wrap;word-break:break-all}.monaco-workbench .repl .repl-tree.word-wrap .monaco-tl-contents .expression.nested-variable{white-space:pre}.monaco-workbench .repl .repl-tree .monaco-tl-twistie,.monaco-workbench .repl .repl-tree .monaco-tl-twistie.collapsible+.monaco-tl-contents{cursor:pointer}.monaco-workbench .repl .repl-tree .output.expression.value-and-source{display:flex}.monaco-workbench .repl .repl-tree .output.expression.value-and-source .count-badge-wrapper,.monaco-workbench .repl .repl-tree .output.expression.value-and-source .value{margin-right:4px}.monaco-workbench .repl .repl-tree .output.expression.value-and-source .count-badge-wrapper .monaco-count-badge{min-height:16px;word-break:keep-all}.monaco-workbench .repl .repl-tree .monaco-tl-contents .arrow{left:2px;position:absolute}.monaco-workbench .repl .repl-tree .output.expression.value-and-source .source{cursor:pointer;direction:rtl;margin-left:auto;margin-right:8px;max-width:400px;overflow:hidden;text-align:right;text-decoration:underline;text-overflow:ellipsis;white-space:nowrap}.monaco-workbench .repl .repl-tree .evaluation-result.expression>.value,.monaco-workbench .repl .repl-tree .output.expression>.value{margin-left:0}.monaco-workbench .repl .repl-tree .output.expression .name:not(:empty){margin-right:6px}.monaco-workbench .repl .repl-input-wrapper{align-items:center;display:flex}.monaco-workbench .repl .repl-input-wrapper .suggest-status-bar .monaco-action-bar.right{display:none}.monaco-workbench .repl .repl-input-wrapper .repl-input-chevron{display:flex;flex-shrink:0;font-weight:600;height:100%;justify-content:center;padding:0 6px 0 8px;width:16px}.monaco-workbench .repl .repl-tree .output.expression>.ignore{font-style:italic}.monaco-workbench .repl .repl-tree .output.expression .code-bold{font-weight:700}.monaco-workbench .repl .repl-tree .output.expression .code-italic{font-style:italic}.monaco-workbench .repl .repl-tree .output.expression .code-underline{text-decoration:underline;text-decoration-style:solid}.monaco-workbench .repl .repl-tree .output.expression .code-double-underline{text-decoration:underline;text-decoration-style:double}.monaco-workbench .repl .repl-tree .output.expression .code-strike-through{text-decoration:line-through;text-decoration-style:solid}.monaco-workbench .repl .repl-tree .output.expression .code-overline{text-decoration:overline;text-decoration-style:solid}.monaco-workbench .repl .repl-tree .output.expression .code-overline.code-underline.code-strike-through{text-decoration:overline underline line-through;text-decoration-style:solid}.monaco-workbench .repl .repl-tree .output.expression .code-overline.code-underline{text-decoration:overline underline;text-decoration-style:solid}.monaco-workbench .repl .repl-tree .output.expression .code-overline.code-strike-through{text-decoration:overline line-through;text-decoration-style:solid}.monaco-workbench .repl .repl-tree .output.expression .code-underline.code-strike-through{text-decoration:underline line-through;text-decoration-style:solid}.monaco-workbench .repl .repl-tree .output.expression .code-overline.code-double-underline.code-strike-through{text-decoration:overline underline line-through;text-decoration-style:double}.monaco-workbench .repl .repl-tree .output.expression .code-overline.code-double-underline{text-decoration:overline underline;text-decoration-style:double}.monaco-workbench .repl .repl-tree .output.expression .code-double-underline.code-strike-through{text-decoration:underline line-through;text-decoration-style:double}.monaco-workbench .repl .repl-tree .output.expression .code-dim{opacity:.4}.monaco-workbench .repl .repl-tree .output.expression .code-hidden{opacity:0}.monaco-workbench .repl .repl-tree .output.expression .code-blink{animation:code-blink-key 1s cubic-bezier(1,0,0,1) infinite alternate}.monaco-workbench .repl .repl-tree .output.expression .code-rapid-blink{animation:code-blink-key .3s cubic-bezier(1,0,0,1) infinite alternate}@keyframes code-blink-key{to{opacity:.4}}.monaco-workbench .repl .repl-tree .output.expression .code-subscript{font-size:smaller;line-height:normal;vertical-align:sub}.monaco-workbench .repl .repl-tree .output.expression .code-superscript{font-size:smaller;line-height:normal;vertical-align:super}";
3
+ var css = ".monaco-workbench .repl{box-sizing:border-box;height:100%;overflow:hidden}.monaco-workbench .repl .repl-tree .monaco-tl-contents{user-select:text;-webkit-user-select:text;white-space:pre}.monaco-workbench .repl .repl-tree .monaco-tl-contents .expression{font-family:var(--vscode-repl-font-family);font-size:var(--vscode-repl-font-size);line-height:var(--vscode-repl-line-height)}.monaco-workbench .repl .repl-tree .monaco-tl-contents .expression .lazy-button{cursor:pointer}.monaco-workbench .repl .repl-tree .monaco-tl-twistie{background-position-y:calc(100% - var(--vscode-repl-font-size-for-twistie))}.monaco-workbench .repl .repl-tree.word-wrap .monaco-tl-contents{word-wrap:break-word;white-space:pre-wrap;word-break:break-all}.monaco-workbench .repl .repl-tree.word-wrap .monaco-tl-contents .expression.nested-variable{white-space:pre}.monaco-workbench .repl .repl-tree .monaco-tl-twistie,.monaco-workbench .repl .repl-tree .monaco-tl-twistie.collapsible+.monaco-tl-contents{cursor:pointer}.monaco-workbench .repl .repl-tree .output.expression.value-and-source{display:flex}.monaco-workbench .repl .repl-tree .output.expression.value-and-source .count-badge-wrapper,.monaco-workbench .repl .repl-tree .output.expression.value-and-source .label{margin-right:4px}.monaco-workbench .repl .repl-tree .output.expression.value-and-source .count-badge-wrapper .monaco-count-badge{min-height:16px;word-break:keep-all}.monaco-workbench .repl .repl-tree .monaco-tl-contents .arrow{left:2px;position:absolute}.monaco-workbench .repl .repl-tree .group .source,.monaco-workbench .repl .repl-tree .output.expression.value-and-source .source{cursor:pointer;direction:rtl;margin-left:auto;margin-right:8px;max-width:400px;overflow:hidden;text-align:right;text-decoration:underline;text-overflow:ellipsis;white-space:nowrap}.monaco-workbench .repl .repl-tree .evaluation-result.expression>.value,.monaco-workbench .repl .repl-tree .output.expression>.value{margin-left:0}.monaco-workbench .repl .repl-tree .output.expression .name:not(:empty){margin-right:6px}.monaco-workbench .repl .repl-input-wrapper{align-items:center;display:flex}.monaco-workbench .repl .repl-input-wrapper .suggest-status-bar .monaco-action-bar.right{display:none}.monaco-workbench .repl .repl-input-wrapper .repl-input-chevron{display:flex;flex-shrink:0;font-weight:600;height:100%;justify-content:center;padding:0 6px 0 8px;width:16px}.monaco-workbench .repl .repl-tree .output.expression>.ignore{font-style:italic}.monaco-workbench .repl .repl-tree .output.expression .code-bold{font-weight:700}.monaco-workbench .repl .repl-tree .output.expression .code-italic{font-style:italic}.monaco-workbench .repl .repl-tree .output.expression .code-underline{text-decoration:underline;text-decoration-style:solid}.monaco-workbench .repl .repl-tree .output.expression .code-double-underline{text-decoration:underline;text-decoration-style:double}.monaco-workbench .repl .repl-tree .output.expression .code-strike-through{text-decoration:line-through;text-decoration-style:solid}.monaco-workbench .repl .repl-tree .output.expression .code-overline{text-decoration:overline;text-decoration-style:solid}.monaco-workbench .repl .repl-tree .output.expression .code-overline.code-underline.code-strike-through{text-decoration:overline underline line-through;text-decoration-style:solid}.monaco-workbench .repl .repl-tree .output.expression .code-overline.code-underline{text-decoration:overline underline;text-decoration-style:solid}.monaco-workbench .repl .repl-tree .output.expression .code-overline.code-strike-through{text-decoration:overline line-through;text-decoration-style:solid}.monaco-workbench .repl .repl-tree .output.expression .code-underline.code-strike-through{text-decoration:underline line-through;text-decoration-style:solid}.monaco-workbench .repl .repl-tree .output.expression .code-overline.code-double-underline.code-strike-through{text-decoration:overline underline line-through;text-decoration-style:double}.monaco-workbench .repl .repl-tree .output.expression .code-overline.code-double-underline{text-decoration:overline underline;text-decoration-style:double}.monaco-workbench .repl .repl-tree .output.expression .code-double-underline.code-strike-through{text-decoration:underline line-through;text-decoration-style:double}.monaco-workbench .repl .repl-tree .output.expression .code-dim{opacity:.4}.monaco-workbench .repl .repl-tree .output.expression .code-hidden{opacity:0}.monaco-workbench .repl .repl-tree .output.expression .code-blink{animation:code-blink-key 1s cubic-bezier(1,0,0,1) infinite alternate}.monaco-workbench .repl .repl-tree .output.expression .code-rapid-blink{animation:code-blink-key .3s cubic-bezier(1,0,0,1) infinite alternate}@keyframes code-blink-key{to{opacity:.4}}.monaco-workbench .repl .repl-tree .output.expression .code-subscript{font-size:smaller;line-height:normal;vertical-align:sub}.monaco-workbench .repl .repl-tree .output.expression .code-superscript{font-size:smaller;line-height:normal;vertical-align:super}";
4
4
  n(css,{});
5
5
 
6
6
  export { css, css as default };
@@ -116,7 +116,7 @@ let Repl = class Repl extends FilterViewPane {
116
116
  this._register(this.menu);
117
117
  this.history = ( (new HistoryNavigator(
118
118
  JSON.parse(this.storageService.get(HISTORY_STORAGE_KEY, StorageScope.WORKSPACE, '[]')),
119
- 50
119
+ 100
120
120
  )));
121
121
  this.filter = ( (new ReplFilter()));
122
122
  this.filter.filterQuery = filterText;
@@ -394,6 +394,14 @@ let Repl = class Repl extends FilterViewPane {
394
394
  }
395
395
  }
396
396
  }
397
+ sendReplInput(input) {
398
+ const session = this.tree?.getInput();
399
+ if (session && !this.isReadonly) {
400
+ session.addReplExpression(this.debugService.getViewModel().focusedStackFrame, input);
401
+ revealLastElement(this.tree);
402
+ this.history.add(input);
403
+ }
404
+ }
397
405
  getVisibleContent() {
398
406
  let text = '';
399
407
  if (this.model && this.tree) {
@@ -571,7 +579,7 @@ let Repl = class Repl extends FilterViewPane {
571
579
  historyNavigationForwardsEnablement.set(enabled);
572
580
  };
573
581
  CONTEXT_IN_DEBUG_REPL.bindTo(this.scopedContextKeyService).set(true);
574
- this.scopedInstantiationService = this.instantiationService.createChild(( (new ServiceCollection([IContextKeyService, this.scopedContextKeyService]))));
582
+ this.scopedInstantiationService = this._register(this.instantiationService.createChild(( (new ServiceCollection([IContextKeyService, this.scopedContextKeyService])))));
575
583
  const options = getSimpleEditorOptions(this.configurationService);
576
584
  options.readOnly = true;
577
585
  options.suggest = { showStatusBar: true };
@@ -2,17 +2,21 @@ import { __decorate, __param } from 'vscode/external/tslib/tslib.es6.js';
2
2
  import { $ as $$1, append, clearNode, 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
+ import { getDefaultHoverDelegate } from 'vscode/vscode/vs/base/browser/ui/hover/hoverDelegateFactory';
5
6
  import { CachedListVirtualDelegate } from 'vscode/vscode/vs/base/browser/ui/list/list';
6
7
  import { createMatches } from 'vscode/vscode/vs/base/common/filters';
7
- import { dispose } from 'vscode/vscode/vs/base/common/lifecycle';
8
+ import { Disposable } from 'vscode/vscode/vs/base/common/lifecycle';
8
9
  import { basename } from 'vscode/vscode/vs/base/common/path';
9
10
  import Severity$1 from 'vscode/vscode/vs/base/common/severity';
11
+ import { ThemeIcon } from 'vscode/vscode/vs/base/common/themables';
10
12
  import { localizeWithPath } from 'vscode/vscode/vs/nls';
13
+ import { ICommandService } from 'vscode/vscode/vs/platform/commands/common/commands.service';
11
14
  import { IContextViewService } from 'vscode/vscode/vs/platform/contextview/browser/contextView.service';
15
+ import { IHoverService } from 'vscode/vscode/vs/platform/hover/browser/hover.service';
16
+ import { IInstantiationService } from 'vscode/vscode/vs/platform/instantiation/common/instantiation';
12
17
  import { ILabelService } from 'vscode/vscode/vs/platform/label/common/label.service';
13
18
  import { defaultCountBadgeStyles } from 'vscode/vscode/vs/platform/theme/browser/defaultStyles';
14
19
  import { IThemeService } from 'vscode/vscode/vs/platform/theme/common/themeService.service';
15
- import { ThemeIcon } from 'vscode/vscode/vs/base/common/themables';
16
20
  import { renderExpressionValue, AbstractExpressionsRenderer, renderVariable } from 'vscode/vscode/vs/workbench/contrib/debug/browser/baseDebugView';
17
21
  import { handleANSIOutput } from './debugANSIHandling.js';
18
22
  import { debugConsoleEvaluationInput } from 'vscode/vscode/vs/workbench/contrib/debug/browser/debugIcons';
@@ -20,9 +24,6 @@ import { IDebugService } from 'vscode/vscode/vs/workbench/contrib/debug/common/d
20
24
  import { Variable } from 'vscode/vscode/vs/workbench/contrib/debug/common/debugModel';
21
25
  import { ReplVariableElement, ReplEvaluationResult, ReplOutputElement, ReplEvaluationInput, ReplGroup, RawObjectReplElement } from 'vscode/vscode/vs/workbench/contrib/debug/common/replModel';
22
26
  import { IEditorService } from 'vscode/vscode/vs/workbench/services/editor/common/editorService.service';
23
- import { getDefaultHoverDelegate } from 'vscode/vscode/vs/base/browser/ui/hover/hoverDelegateFactory';
24
- import { ICommandService } from 'vscode/vscode/vs/platform/commands/common/commands.service';
25
- import { IHoverService } from 'vscode/vscode/vs/platform/hover/browser/hover.service';
26
27
 
27
28
  var ReplGroupRenderer_1, ReplOutputElementRenderer_1, ReplVariablesRenderer_1;
28
29
  const _moduleId = "vs/workbench/contrib/debug/browser/replViewer";
@@ -49,28 +50,35 @@ class ReplEvaluationInputsRenderer {
49
50
  let ReplGroupRenderer = class ReplGroupRenderer {
50
51
  static { ReplGroupRenderer_1 = this; }
51
52
  static { this.ID = 'replGroup'; }
52
- constructor(linkDetector, themeService) {
53
+ constructor(linkDetector, themeService, instaService) {
53
54
  this.linkDetector = linkDetector;
54
55
  this.themeService = themeService;
56
+ this.instaService = instaService;
55
57
  }
56
58
  get templateId() {
57
59
  return ReplGroupRenderer_1.ID;
58
60
  }
59
61
  renderTemplate(container) {
60
- const label = append(container, $('.expression'));
61
- return { label };
62
+ container.classList.add('group');
63
+ const expression = append(container, $('.output.expression.value-and-source'));
64
+ const label = append(expression, $('span.label'));
65
+ const source = this.instaService.createInstance(SourceWidget, expression);
66
+ return { label, source };
62
67
  }
63
68
  renderElement(element, _index, templateData) {
64
69
  const replGroup = element.element;
65
70
  clearNode(templateData.label);
66
71
  const result = handleANSIOutput(replGroup.name, this.linkDetector, this.themeService, undefined);
67
72
  templateData.label.appendChild(result);
73
+ templateData.source.setSource(replGroup.sourceData);
68
74
  }
69
- disposeTemplate(_templateData) {
75
+ disposeTemplate(templateData) {
76
+ templateData.source.dispose();
70
77
  }
71
78
  };
72
79
  ReplGroupRenderer = ReplGroupRenderer_1 = ( (__decorate([
73
- ( (__param(1, IThemeService)))
80
+ ( (__param(1, IThemeService))),
81
+ ( (__param(2, IInstantiationService)))
74
82
  ], ReplGroupRenderer)));
75
83
  class ReplEvaluationResultsRenderer {
76
84
  static { this.ID = 'replEvaluationResult'; }
@@ -99,12 +107,10 @@ class ReplEvaluationResultsRenderer {
99
107
  let ReplOutputElementRenderer = class ReplOutputElementRenderer {
100
108
  static { ReplOutputElementRenderer_1 = this; }
101
109
  static { this.ID = 'outputReplElement'; }
102
- constructor(linkDetector, editorService, hoverService, labelService, themeService) {
110
+ constructor(linkDetector, themeService, instaService) {
103
111
  this.linkDetector = linkDetector;
104
- this.editorService = editorService;
105
- this.hoverService = hoverService;
106
- this.labelService = labelService;
107
112
  this.themeService = themeService;
113
+ this.instaService = instaService;
108
114
  }
109
115
  get templateId() {
110
116
  return ReplOutputElementRenderer_1.ID;
@@ -116,22 +122,8 @@ let ReplOutputElementRenderer = class ReplOutputElementRenderer {
116
122
  data.container = container;
117
123
  data.countContainer = append(expression, $('.count-badge-wrapper'));
118
124
  data.count = ( (new CountBadge(data.countContainer, {}, defaultCountBadgeStyles)));
119
- data.value = append(expression, $('span.value'));
120
- data.source = append(expression, $('.source'));
121
- data.toDispose = [];
122
- data.toDispose.push(addDisposableListener(data.source, 'click', e => {
123
- e.preventDefault();
124
- e.stopPropagation();
125
- const source = data.getReplElementSource();
126
- if (source) {
127
- source.source.openInEditor(this.editorService, {
128
- startLineNumber: source.lineNumber,
129
- startColumn: source.column,
130
- endLineNumber: source.lineNumber,
131
- endColumn: source.column
132
- });
133
- }
134
- }));
125
+ data.value = append(expression, $('span.value.label'));
126
+ data.source = this.instaService.createInstance(SourceWidget, expression);
135
127
  return data;
136
128
  }
137
129
  renderElement({ element }, index, templateData) {
@@ -141,8 +133,7 @@ let ReplOutputElementRenderer = class ReplOutputElementRenderer {
141
133
  templateData.value.className = 'value';
142
134
  templateData.value.appendChild(handleANSIOutput(element.value, this.linkDetector, this.themeService, element.session.root));
143
135
  templateData.value.classList.add((element.severity === Severity$1.Warning) ? 'warn' : (element.severity === Severity$1.Error) ? 'error' : (element.severity === Severity$1.Ignore) ? 'ignore' : 'info');
144
- templateData.source.textContent = element.sourceData ? `${basename(element.sourceData.source.name)}:${element.sourceData.lineNumber}` : '';
145
- templateData.toDispose.push(this.hoverService.setupUpdatableHover(getDefaultHoverDelegate('mouse'), templateData.source, element.sourceData ? `${this.labelService.getUriLabel(element.sourceData.source.uri)}:${element.sourceData.lineNumber}` : ''));
136
+ templateData.source.setSource(element.sourceData);
146
137
  templateData.getReplElementSource = () => element.sourceData;
147
138
  }
148
139
  setElementCount(element, templateData) {
@@ -155,17 +146,15 @@ let ReplOutputElementRenderer = class ReplOutputElementRenderer {
155
146
  }
156
147
  }
157
148
  disposeTemplate(templateData) {
158
- dispose(templateData.toDispose);
149
+ templateData.source.dispose();
159
150
  }
160
151
  disposeElement(_element, _index, templateData) {
161
152
  templateData.elementListener.dispose();
162
153
  }
163
154
  };
164
155
  ReplOutputElementRenderer = ReplOutputElementRenderer_1 = ( (__decorate([
165
- ( (__param(1, IEditorService))),
166
- ( (__param(2, IHoverService))),
167
- ( (__param(3, ILabelService))),
168
- ( (__param(4, IThemeService)))
156
+ ( (__param(1, IThemeService))),
157
+ ( (__param(2, IInstantiationService)))
169
158
  ], ReplOutputElementRenderer)));
170
159
  let ReplVariablesRenderer = class ReplVariablesRenderer extends AbstractExpressionsRenderer {
171
160
  static { ReplVariablesRenderer_1 = this; }
@@ -180,6 +169,7 @@ let ReplVariablesRenderer = class ReplVariablesRenderer extends AbstractExpressi
180
169
  }
181
170
  renderElement(node, _index, data) {
182
171
  const element = node.element;
172
+ data.elementDisposable.clear();
183
173
  super.renderExpressionElement(element instanceof ReplVariableElement ? element.expression : element, node, data);
184
174
  }
185
175
  renderExpression(expression, data, highlights) {
@@ -335,5 +325,36 @@ class ReplAccessibilityProvider {
335
325
  return '';
336
326
  }
337
327
  }
328
+ let SourceWidget = class SourceWidget extends Disposable {
329
+ constructor(container, editorService, hoverService, labelService) {
330
+ super();
331
+ this.hoverService = hoverService;
332
+ this.labelService = labelService;
333
+ this.el = append(container, $('.source'));
334
+ this._register(addDisposableListener(this.el, 'click', e => {
335
+ e.preventDefault();
336
+ e.stopPropagation();
337
+ if (this.source) {
338
+ this.source.source.openInEditor(editorService, {
339
+ startLineNumber: this.source.lineNumber,
340
+ startColumn: this.source.column,
341
+ endLineNumber: this.source.lineNumber,
342
+ endColumn: this.source.column
343
+ });
344
+ }
345
+ }));
346
+ }
347
+ setSource(source) {
348
+ this.source = source;
349
+ this.el.textContent = source ? `${basename(source.source.name)}:${source.lineNumber}` : '';
350
+ this.hover ??= this._register(this.hoverService.setupManagedHover(getDefaultHoverDelegate('mouse'), this.el, ''));
351
+ this.hover.update(source ? `${this.labelService.getUriLabel(source.source.uri)}:${source.lineNumber}` : '');
352
+ }
353
+ };
354
+ SourceWidget = ( (__decorate([
355
+ ( (__param(1, IEditorService))),
356
+ ( (__param(2, IHoverService))),
357
+ ( (__param(3, ILabelService)))
358
+ ], SourceWidget)));
338
359
 
339
360
  export { ReplAccessibilityProvider, ReplDataSource, ReplDelegate, ReplEvaluationInputsRenderer, ReplEvaluationResultsRenderer, ReplGroupRenderer, ReplOutputElementRenderer, ReplRawObjectsRenderer, ReplVariablesRenderer };
@@ -1,6 +1,6 @@
1
1
  import { __decorate, __param } from 'vscode/external/tslib/tslib.es6.js';
2
2
  import { localizeWithPath } from 'vscode/vscode/vs/nls';
3
- import { registerColor, ColorTransformType, asCssVariableName, asCssVariable } from 'vscode/vscode/vs/platform/theme/common/colorUtils';
3
+ import { registerColor, transparent, asCssVariableName, asCssVariable } from 'vscode/vscode/vs/platform/theme/common/colorUtils';
4
4
  import 'vscode/vscode/vs/platform/theme/common/colors/baseColors';
5
5
  import 'vscode/vscode/vs/platform/theme/common/colors/chartsColors';
6
6
  import 'vscode/vscode/vs/platform/theme/common/colors/editorColors';
@@ -41,22 +41,12 @@ const STATUS_BAR_DEBUGGING_FOREGROUND = registerColor('statusBar.debuggingForegr
41
41
  1,
42
42
  "Status bar foreground color when a program is being debugged. The status bar is shown in the bottom of the window"
43
43
  )));
44
- const STATUS_BAR_DEBUGGING_BORDER = registerColor('statusBar.debuggingBorder', {
45
- dark: STATUS_BAR_BORDER,
46
- light: STATUS_BAR_BORDER,
47
- hcDark: STATUS_BAR_BORDER,
48
- hcLight: STATUS_BAR_BORDER
49
- }, ( localizeWithPath(
44
+ const STATUS_BAR_DEBUGGING_BORDER = registerColor('statusBar.debuggingBorder', STATUS_BAR_BORDER, ( localizeWithPath(
50
45
  _moduleId,
51
46
  2,
52
47
  "Status bar border color separating to the sidebar and editor when a program is being debugged. The status bar is shown in the bottom of the window"
53
48
  )));
54
- const COMMAND_CENTER_DEBUGGING_BACKGROUND = registerColor('commandCenter.debuggingBackground', {
55
- dark: { value: STATUS_BAR_DEBUGGING_BACKGROUND, op: ColorTransformType.Transparent, factor: 0.258 },
56
- hcDark: { value: STATUS_BAR_DEBUGGING_BACKGROUND, op: ColorTransformType.Transparent, factor: 0.258 },
57
- light: { value: STATUS_BAR_DEBUGGING_BACKGROUND, op: ColorTransformType.Transparent, factor: 0.258 },
58
- hcLight: { value: STATUS_BAR_DEBUGGING_BACKGROUND, op: ColorTransformType.Transparent, factor: 0.258 }
59
- }, ( localizeWithPath(
49
+ const COMMAND_CENTER_DEBUGGING_BACKGROUND = registerColor('commandCenter.debuggingBackground', ( (transparent(STATUS_BAR_DEBUGGING_BACKGROUND, 0.258))), ( localizeWithPath(
60
50
  _moduleId,
61
51
  3,
62
52
  "Command center background color when a program is being debugged"
@@ -92,7 +82,7 @@ let StatusBarColorProvider = class StatusBarColorProvider {
92
82
  if (e.affectsConfiguration('debug.enableStatusBarColor') || e.affectsConfiguration('debug.toolBarLocation')) {
93
83
  this.update();
94
84
  }
95
- }, this.disposables);
85
+ }, undefined, this.disposables);
96
86
  this.update();
97
87
  }
98
88
  update() {
@@ -350,6 +350,7 @@ let VisualizedVariableRenderer = class VisualizedVariableRenderer extends Abstra
350
350
  return VisualizedVariableRenderer_1.ID;
351
351
  }
352
352
  renderElement(node, index, data) {
353
+ data.elementDisposable.clear();
353
354
  super.renderExpressionElement(node.element, node, data);
354
355
  }
355
356
  renderExpression(expression, data, highlights) {
@@ -414,7 +415,7 @@ VisualizedVariableRenderer = VisualizedVariableRenderer_1 = ( (__decorate([
414
415
  let VariablesRenderer = class VariablesRenderer extends AbstractExpressionsRenderer {
415
416
  static { VariablesRenderer_1 = this; }
416
417
  static { this.ID = 'variable'; }
417
- constructor(linkDetector, menuService, contextKeyService, visualization, contextMenuService, commandService, debugService, contextViewService, hoverService) {
418
+ constructor(linkDetector, menuService, contextKeyService, visualization, contextMenuService, commandService, debugService, contextViewService, hoverService, configurationService) {
418
419
  super(debugService, contextViewService, hoverService);
419
420
  this.linkDetector = linkDetector;
420
421
  this.menuService = menuService;
@@ -422,14 +423,22 @@ let VariablesRenderer = class VariablesRenderer extends AbstractExpressionsRende
422
423
  this.visualization = visualization;
423
424
  this.contextMenuService = contextMenuService;
424
425
  this.commandService = commandService;
426
+ this.configurationService = configurationService;
425
427
  }
426
428
  get templateId() {
427
429
  return VariablesRenderer_1.ID;
428
430
  }
429
431
  renderExpression(expression, data, highlights) {
430
- renderVariable(data.elementDisposable, this.commandService, this.hoverService, expression, data, true, highlights, this.linkDetector);
432
+ const showType = this.configurationService.getValue('debug').showVariableTypes;
433
+ renderVariable(data.elementDisposable, this.commandService, this.hoverService, expression, data, true, highlights, this.linkDetector, showType);
431
434
  }
432
435
  renderElement(node, index, data) {
436
+ data.elementDisposable.clear();
437
+ data.elementDisposable.add(this.configurationService.onDidChangeConfiguration(e => {
438
+ if (e.affectsConfiguration('debug.showVariableTypes')) {
439
+ super.renderExpressionElement(node.element, node, data);
440
+ }
441
+ }));
433
442
  super.renderExpressionElement(node.element, node, data);
434
443
  }
435
444
  getInputBoxOptions(expression) {
@@ -516,7 +525,8 @@ VariablesRenderer = VariablesRenderer_1 = ( (__decorate([
516
525
  ( (__param(5, ICommandService))),
517
526
  ( (__param(6, IDebugService))),
518
527
  ( (__param(7, IContextViewService))),
519
- ( (__param(8, IHoverService)))
528
+ ( (__param(8, IHoverService))),
529
+ ( (__param(9, IConfigurationService)))
520
530
  ], VariablesRenderer)));
521
531
  class VariablesAccessibilityProvider {
522
532
  getWidgetAriaLabel() {