@opensumi/ide-debug 2.24.3 → 2.24.4

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 (85) hide show
  1. package/lib/browser/breakpoint/breakpoint-manager.d.ts +4 -3
  2. package/lib/browser/breakpoint/breakpoint-manager.d.ts.map +1 -1
  3. package/lib/browser/breakpoint/breakpoint-manager.js +7 -0
  4. package/lib/browser/breakpoint/breakpoint-manager.js.map +1 -1
  5. package/lib/browser/contextkeys/debug-contextkey.service.d.ts +1 -0
  6. package/lib/browser/contextkeys/debug-contextkey.service.d.ts.map +1 -1
  7. package/lib/browser/contextkeys/debug-contextkey.service.js +2 -1
  8. package/lib/browser/contextkeys/debug-contextkey.service.js.map +1 -1
  9. package/lib/browser/debug-contribution.d.ts.map +1 -1
  10. package/lib/browser/debug-contribution.js +42 -4
  11. package/lib/browser/debug-contribution.js.map +1 -1
  12. package/lib/browser/debug-style.less +34 -5
  13. package/lib/browser/editor/debug-hover-model.d.ts +0 -3
  14. package/lib/browser/editor/debug-hover-model.d.ts.map +1 -1
  15. package/lib/browser/editor/debug-hover-model.js +0 -5
  16. package/lib/browser/editor/debug-hover-model.js.map +1 -1
  17. package/lib/browser/editor/debug-hover-tree.model.service.d.ts.map +1 -1
  18. package/lib/browser/editor/debug-hover-tree.model.service.js +0 -9
  19. package/lib/browser/editor/debug-hover-tree.model.service.js.map +1 -1
  20. package/lib/browser/editor/debug-model.d.ts +2 -0
  21. package/lib/browser/editor/debug-model.d.ts.map +1 -1
  22. package/lib/browser/editor/debug-model.js +31 -2
  23. package/lib/browser/editor/debug-model.js.map +1 -1
  24. package/lib/browser/editor/debug-styles.d.ts +1 -0
  25. package/lib/browser/editor/debug-styles.d.ts.map +1 -1
  26. package/lib/browser/editor/debug-styles.js +7 -1
  27. package/lib/browser/editor/debug-styles.js.map +1 -1
  28. package/lib/browser/view/breakpoints/debug-breakpoints.module.less +64 -8
  29. package/lib/browser/view/breakpoints/debug-breakpoints.service.d.ts +10 -1
  30. package/lib/browser/view/breakpoints/debug-breakpoints.service.d.ts.map +1 -1
  31. package/lib/browser/view/breakpoints/debug-breakpoints.service.js +5 -0
  32. package/lib/browser/view/breakpoints/debug-breakpoints.service.js.map +1 -1
  33. package/lib/browser/view/breakpoints/debug-breakpoints.view.d.ts +7 -0
  34. package/lib/browser/view/breakpoints/debug-breakpoints.view.d.ts.map +1 -1
  35. package/lib/browser/view/breakpoints/debug-breakpoints.view.js +80 -26
  36. package/lib/browser/view/breakpoints/debug-breakpoints.view.js.map +1 -1
  37. package/lib/browser/view/console/debug-console-model.d.ts +0 -3
  38. package/lib/browser/view/console/debug-console-model.d.ts.map +1 -1
  39. package/lib/browser/view/console/debug-console-model.js +0 -5
  40. package/lib/browser/view/console/debug-console-model.js.map +1 -1
  41. package/lib/browser/view/console/debug-console-tree.model.service.d.ts.map +1 -1
  42. package/lib/browser/view/console/debug-console-tree.model.service.js +0 -9
  43. package/lib/browser/view/console/debug-console-tree.model.service.js.map +1 -1
  44. package/lib/browser/view/variables/debug-variables-model.d.ts +0 -3
  45. package/lib/browser/view/variables/debug-variables-model.d.ts.map +1 -1
  46. package/lib/browser/view/variables/debug-variables-model.js +0 -5
  47. package/lib/browser/view/variables/debug-variables-model.js.map +1 -1
  48. package/lib/browser/view/variables/debug-variables-tree.model.service.d.ts.map +1 -1
  49. package/lib/browser/view/variables/debug-variables-tree.model.service.js +0 -9
  50. package/lib/browser/view/variables/debug-variables-tree.model.service.js.map +1 -1
  51. package/lib/browser/view/watch/debug-watch-model.d.ts +0 -3
  52. package/lib/browser/view/watch/debug-watch-model.d.ts.map +1 -1
  53. package/lib/browser/view/watch/debug-watch-model.js +0 -5
  54. package/lib/browser/view/watch/debug-watch-model.js.map +1 -1
  55. package/lib/browser/view/watch/debug-watch-tree.model.service.d.ts.map +1 -1
  56. package/lib/browser/view/watch/debug-watch-tree.model.service.js +0 -9
  57. package/lib/browser/view/watch/debug-watch-tree.model.service.js.map +1 -1
  58. package/lib/common/commands.d.ts +2 -0
  59. package/lib/common/commands.d.ts.map +1 -1
  60. package/lib/common/commands.js +6 -0
  61. package/lib/common/commands.js.map +1 -1
  62. package/lib/common/constants.d.ts +1 -0
  63. package/lib/common/constants.d.ts.map +1 -1
  64. package/lib/common/constants.js +2 -1
  65. package/lib/common/constants.js.map +1 -1
  66. package/package.json +23 -23
  67. package/src/browser/breakpoint/breakpoint-manager.ts +8 -3
  68. package/src/browser/contextkeys/debug-contextkey.service.ts +4 -1
  69. package/src/browser/debug-contribution.ts +47 -4
  70. package/src/browser/debug-style.less +34 -5
  71. package/src/browser/editor/debug-hover-model.ts +0 -6
  72. package/src/browser/editor/debug-hover-tree.model.service.ts +0 -10
  73. package/src/browser/editor/debug-model.ts +35 -3
  74. package/src/browser/editor/debug-styles.ts +7 -0
  75. package/src/browser/view/breakpoints/debug-breakpoints.module.less +64 -8
  76. package/src/browser/view/breakpoints/debug-breakpoints.service.ts +8 -0
  77. package/src/browser/view/breakpoints/debug-breakpoints.view.tsx +139 -32
  78. package/src/browser/view/console/debug-console-model.ts +0 -6
  79. package/src/browser/view/console/debug-console-tree.model.service.ts +0 -10
  80. package/src/browser/view/variables/debug-variables-model.ts +0 -6
  81. package/src/browser/view/variables/debug-variables-tree.model.service.ts +0 -10
  82. package/src/browser/view/watch/debug-watch-model.ts +0 -6
  83. package/src/browser/view/watch/debug-watch-tree.model.service.ts +0 -10
  84. package/src/common/commands.ts +6 -0
  85. package/src/common/constants.ts +2 -0
@@ -1 +1 @@
1
- {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/common/constants.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/common/constants.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@opensumi/ide-debug",
3
- "version": "2.24.3",
3
+ "version": "2.24.4",
4
4
  "files": [
5
5
  "lib",
6
6
  "src"
@@ -17,33 +17,33 @@
17
17
  "url": "git@github.com:opensumi/core.git"
18
18
  },
19
19
  "dependencies": {
20
- "@opensumi/ide-connection": "2.24.3",
21
- "@opensumi/ide-core-common": "2.24.3",
22
- "@opensumi/ide-core-node": "2.24.3",
23
- "@opensumi/ide-file-service": "2.24.3",
24
- "@opensumi/ide-task": "2.24.3",
25
- "@opensumi/ide-terminal-next": "2.24.3",
20
+ "@opensumi/ide-connection": "2.24.4",
21
+ "@opensumi/ide-core-common": "2.24.4",
22
+ "@opensumi/ide-core-node": "2.24.4",
23
+ "@opensumi/ide-file-service": "2.24.4",
24
+ "@opensumi/ide-task": "2.24.4",
25
+ "@opensumi/ide-terminal-next": "2.24.4",
26
26
  "anser": "^1.4.9",
27
27
  "btoa": "^1.2.1"
28
28
  },
29
29
  "devDependencies": {
30
- "@opensumi/ide-components": "2.24.3",
31
- "@opensumi/ide-core-browser": "2.24.3",
30
+ "@opensumi/ide-components": "2.24.4",
31
+ "@opensumi/ide-core-browser": "2.24.4",
32
32
  "@opensumi/ide-dev-tool": "1.3.1",
33
- "@opensumi/ide-editor": "2.24.3",
34
- "@opensumi/ide-main-layout": "2.24.3",
35
- "@opensumi/ide-monaco": "2.24.3",
36
- "@opensumi/ide-monaco-enhance": "2.24.3",
37
- "@opensumi/ide-output": "2.24.3",
38
- "@opensumi/ide-overlay": "2.24.3",
39
- "@opensumi/ide-preferences": "2.24.3",
40
- "@opensumi/ide-quick-open": "2.24.3",
41
- "@opensumi/ide-storage": "2.24.3",
42
- "@opensumi/ide-theme": "2.24.3",
43
- "@opensumi/ide-variable": "2.24.3",
44
- "@opensumi/ide-workspace": "2.24.3",
45
- "@opensumi/ide-workspace-edit": "2.24.3",
33
+ "@opensumi/ide-editor": "2.24.4",
34
+ "@opensumi/ide-main-layout": "2.24.4",
35
+ "@opensumi/ide-monaco": "2.24.4",
36
+ "@opensumi/ide-monaco-enhance": "2.24.4",
37
+ "@opensumi/ide-output": "2.24.4",
38
+ "@opensumi/ide-overlay": "2.24.4",
39
+ "@opensumi/ide-preferences": "2.24.4",
40
+ "@opensumi/ide-quick-open": "2.24.4",
41
+ "@opensumi/ide-storage": "2.24.4",
42
+ "@opensumi/ide-theme": "2.24.4",
43
+ "@opensumi/ide-variable": "2.24.4",
44
+ "@opensumi/ide-workspace": "2.24.4",
45
+ "@opensumi/ide-workspace-edit": "2.24.4",
46
46
  "@types/btoa": "^1.2.3"
47
47
  },
48
- "gitHead": "8ffdb43f5d9ff6bdbe4e18ef33108beae0aac896"
48
+ "gitHead": "9248a630c5a3717c9357d4565c41532e9729ca11"
49
49
  }
@@ -13,8 +13,8 @@ import { Deferred } from '@opensumi/ide-core-common';
13
13
  import * as monaco from '@opensumi/monaco-editor-core/esm/vs/editor/editor.api';
14
14
  import { DebugProtocol } from '@opensumi/vscode-debugprotocol';
15
15
 
16
- import { BreakpointsChangeEvent, DEBUG_REPORT_NAME, IDebugBreakpoint } from '../../common';
17
- import { DebugModel } from '../editor';
16
+ import { BreakpointsChangeEvent, DEBUG_REPORT_NAME, IDebugBreakpoint, IDebugModel } from '../../common';
17
+ import { DebugContextKey } from '../contextkeys/debug-contextkey.service';
18
18
  import { MarkerManager, Marker } from '../markers';
19
19
 
20
20
  import { DebugExceptionBreakpoint, BREAKPOINT_KIND } from './breakpoint-marker';
@@ -25,7 +25,7 @@ export interface ExceptionBreakpointsChangeEvent {
25
25
 
26
26
  export interface SelectedBreakpoint {
27
27
  breakpoint?: IDebugBreakpoint;
28
- model: DebugModel;
28
+ model: IDebugModel;
29
29
  }
30
30
 
31
31
  @Injectable()
@@ -43,6 +43,9 @@ export class BreakpointManager extends MarkerManager<IDebugBreakpoint> {
43
43
  @Autowired(IReporterService)
44
44
  private readonly reporterService: IReporterService;
45
45
 
46
+ @Autowired(DebugContextKey)
47
+ protected readonly debugContextKey: DebugContextKey;
48
+
46
49
  getKind(): string {
47
50
  return BREAKPOINT_KIND;
48
51
  }
@@ -248,6 +251,7 @@ export class BreakpointManager extends MarkerManager<IDebugBreakpoint> {
248
251
  this.fireOnDidChangeMarkers(new URI(uri));
249
252
  }
250
253
  this.updateBreakpoints(this.getBreakpoints());
254
+ this.debugContextKey.contextActiveBreakpoints.set(breakpointsEnabled);
251
255
  }
252
256
  }
253
257
 
@@ -259,6 +263,7 @@ export class BreakpointManager extends MarkerManager<IDebugBreakpoint> {
259
263
  defaultExceptionFilter: [],
260
264
  });
261
265
  this._breakpointsEnabled = data!.breakpointsEnabled;
266
+ this.debugContextKey.contextActiveBreakpoints.set(this._breakpointsEnabled);
262
267
  // eslint-disable-next-line guard-for-in
263
268
  for (const uri in data!.breakpoints) {
264
269
  this.setBreakpoints(
@@ -14,6 +14,7 @@ import {
14
14
  CONTEXT_DEBUG_PROTOCOL_VARIABLE_MENU_CONTEXT,
15
15
  CONTEXT_CAN_VIEW_MEMORY,
16
16
  CONTEXT_EXCEPTION_WIDGET_VISIBLE,
17
+ CONTEXT_ACTIVE_BREAKPOINTS,
17
18
  } from './../../common/constants';
18
19
 
19
20
  @Injectable()
@@ -33,6 +34,7 @@ export class DebugContextKey {
33
34
  public readonly contextDebugProtocolVariableMenu: IContextKey<string>;
34
35
  public readonly contextCanViewMemory: IContextKey<boolean>;
35
36
  public readonly contextExceptionWidgetVisible: IContextKey<boolean>;
37
+ public readonly contextActiveBreakpoints: IContextKey<boolean>;
36
38
 
37
39
  constructor(@Optional() dom?: HTMLElement) {
38
40
  this._contextKeyService = this.globalContextKeyService.createScoped(dom);
@@ -45,7 +47,8 @@ export class DebugContextKey {
45
47
  this.contextRestartFrameSupported = CONTEXT_RESTART_FRAME_SUPPORTED.bind(this.contextKeyScoped);
46
48
  this.contextDebugProtocolVariableMenu = CONTEXT_DEBUG_PROTOCOL_VARIABLE_MENU_CONTEXT.bind(this.contextKeyScoped);
47
49
  this.contextCanViewMemory = CONTEXT_CAN_VIEW_MEMORY.bind(this.contextKeyScoped);
48
- this.contextExceptionWidgetVisible = CONTEXT_EXCEPTION_WIDGET_VISIBLE.bind(this._contextKeyService);
50
+ this.contextExceptionWidgetVisible = CONTEXT_EXCEPTION_WIDGET_VISIBLE.bind(this.contextKeyScoped);
51
+ this.contextActiveBreakpoints = CONTEXT_ACTIVE_BREAKPOINTS.bind(this.globalContextKeyService);
49
52
  }
50
53
 
51
54
  public get contextKeyScoped(): IScopedContextKeyService {
@@ -60,6 +60,7 @@ import {
60
60
  CONTEXT_IN_DEBUG_MODE,
61
61
  CONTEXT_BREAKPOINT_INPUT_FOCUSED,
62
62
  CONTEXT_EXCEPTION_WIDGET_VISIBLE,
63
+ CONTEXT_ACTIVE_BREAKPOINTS,
63
64
  } from './../common/constants';
64
65
  import { BreakpointManager, SelectedBreakpoint } from './breakpoint';
65
66
  import { FloatingClickWidget } from './components/floating-click-widget';
@@ -72,6 +73,7 @@ import { DebugSession } from './debug-session';
72
73
  import { DebugSessionManager } from './debug-session-manager';
73
74
  import { DebugEditorContribution } from './editor/debug-editor-contribution';
74
75
  import { DebugRunToCursorService } from './editor/debug-run-to-cursor.service';
76
+ import breakpointViewStyles from './view/breakpoints/debug-breakpoints.module.less';
75
77
  import { DebugBreakpointsService } from './view/breakpoints/debug-breakpoints.service';
76
78
  import { DebugBreakpointView } from './view/breakpoints/debug-breakpoints.view';
77
79
  import { DebugConfigurationService } from './view/configuration/debug-configuration.service';
@@ -409,10 +411,42 @@ export class DebugContribution
409
411
  this.debugBreakpointsService.toggleBreakpoints();
410
412
  },
411
413
  });
414
+ commands.registerCommand(DEBUG_COMMANDS.ACTIVE_BREAKPOINTS, {
415
+ execute: () => {
416
+ const { enable } = this.debugBreakpointsService;
417
+ if (!enable) {
418
+ this.debugBreakpointsService.toggleBreakpoints();
419
+ }
420
+ },
421
+ });
422
+ commands.registerCommand(DEBUG_COMMANDS.DEACTIVE_BREAKPOINTS, {
423
+ execute: () => {
424
+ const { enable } = this.debugBreakpointsService;
425
+ if (enable) {
426
+ this.debugBreakpointsService.toggleBreakpoints();
427
+ }
428
+ },
429
+ });
412
430
  commands.registerCommand(DEBUG_COMMANDS.EDIT_BREAKPOINT, {
413
431
  execute: async (position: monaco.Position) => {
414
432
  this.reporterService.point(DEBUG_REPORT_NAME?.DEBUG_BREAKPOINT, 'edit');
433
+ const model = this.debugEditorController.model;
434
+ if (!model) {
435
+ return;
436
+ }
437
+
438
+ const { uri } = model;
439
+ const breakpoint = this.breakpointManager.getBreakpoint(uri, position!.lineNumber);
440
+ // 更新当前选中的断点
441
+ if (breakpoint) {
442
+ this.breakpointManager.selectedBreakpoint = {
443
+ breakpoint,
444
+ model,
445
+ };
446
+ }
447
+
415
448
  const { selectedBreakpoint } = this;
449
+
416
450
  if (selectedBreakpoint) {
417
451
  const { openBreakpointView } = selectedBreakpoint.model;
418
452
  let defaultContext: TSourceBrekpointProperties = 'condition';
@@ -434,7 +468,6 @@ export class DebugContribution
434
468
  }
435
469
  },
436
470
  isVisible: () => !!this.selectedBreakpoint && !!this.selectedBreakpoint.breakpoint,
437
- isEnabled: () => !!this.selectedBreakpoint && !!this.selectedBreakpoint.breakpoint,
438
471
  });
439
472
  commands.registerCommand(DEBUG_COMMANDS.DISABLE_BREAKPOINT, {
440
473
  execute: async (position: monaco.Position) => {
@@ -598,11 +631,21 @@ export class DebugContribution
598
631
  });
599
632
 
600
633
  registry.registerItem({
601
- id: DEBUG_COMMANDS.TOGGLE_BREAKPOINTS.id,
602
- command: DEBUG_COMMANDS.TOGGLE_BREAKPOINTS.id,
634
+ id: DEBUG_COMMANDS.DEACTIVE_BREAKPOINTS.id,
635
+ command: DEBUG_COMMANDS.DEACTIVE_BREAKPOINTS.id,
603
636
  iconClass: getIcon('deactivate-breakpoints'),
604
637
  viewId: DEBUG_BREAKPOINTS_ID,
605
- tooltip: localize('debug.breakpoint.toggle'),
638
+ tooltip: localize('debug.breakpoint.deactive'),
639
+ when: CONTEXT_ACTIVE_BREAKPOINTS.equalsTo(true),
640
+ });
641
+
642
+ registry.registerItem({
643
+ id: DEBUG_COMMANDS.ACTIVE_BREAKPOINTS.id,
644
+ command: DEBUG_COMMANDS.ACTIVE_BREAKPOINTS.id,
645
+ iconClass: `${getIcon('activate-breakpoints')} ${breakpointViewStyles.debug_activate_breakpoints_icon}`,
646
+ viewId: DEBUG_BREAKPOINTS_ID,
647
+ tooltip: localize('debug.breakpoint.active'),
648
+ when: CONTEXT_ACTIVE_BREAKPOINTS.equalsTo(false),
606
649
  });
607
650
  /**
608
651
  * end
@@ -1,3 +1,9 @@
1
+ @top_stack_frame_line_bg_color: #ffff6673;
2
+ @dark_top_stack_frame_line_bg_color: #ffff0033;
3
+ @focused_stack_frame_line_bg_color: #cee7ce73;
4
+ @dark_focused_stack_frame_line_bg_color: #7abd7a4d;
5
+ @dark_exception_line_bg_color: #6c2022;
6
+
1
7
  .sumi-breakpoint-icon-size {
2
8
  background-size: 16px 16px;
3
9
  cursor: pointer;
@@ -73,11 +79,34 @@
73
79
  }
74
80
 
75
81
  .monaco-editor .view-overlays .sumi-debug-top-stack-frame-line {
76
- background: #ffff6673;
82
+ background-color: @top_stack_frame_line_bg_color;
77
83
  }
78
84
 
79
85
  .monaco-editor.vs-dark .view-overlays .sumi-debug-top-stack-frame-line {
80
- background: #ffff0033;
86
+ background-color: @dark_top_stack_frame_line_bg_color;
87
+ }
88
+
89
+ @keyframes slide-out {
90
+ 100% {
91
+ background-color: transparent;
92
+ }
93
+ }
94
+
95
+ .monaco-editor .view-overlays .sumi-focus-breakpoints-stack-frame-line,
96
+ .monaco-editor.vs-dark .view-overlays .sumi-focus-breakpoints-stack-frame-line {
97
+ animation: slide-out 0.3s;
98
+ animation-iteration-count: 1;
99
+ animation-timing-function: ease-in;
100
+ animation-fill-mode: forwards;
101
+ -webkit-animation-fill-mode: forwards;
102
+ }
103
+
104
+ .monaco-editor .view-overlays .sumi-focus-breakpoints-stack-frame-line {
105
+ background-color: @top_stack_frame_line_bg_color;
106
+ }
107
+
108
+ .monaco-editor.vs-dark .view-overlays .sumi-focus-breakpoints-stack-frame-line {
109
+ background-color: @dark_top_stack_frame_line_bg_color;
81
110
  }
82
111
 
83
112
  .monaco-editor .sumi-debug-focused-stack-frame {
@@ -91,15 +120,15 @@
91
120
  }
92
121
 
93
122
  .monaco-editor .view-overlays .sumi-debug-focused-stack-frame-line {
94
- background: #cee7ce73;
123
+ background-color: @focused_stack_frame_line_bg_color;
95
124
  }
96
125
 
97
126
  .monaco-editor.vs-dark .view-overlays .sumi-debug-focused-stack-frame-line {
98
- background: #7abd7a4d;
127
+ background-color: @dark_focused_stack_frame_line_bg_color;
99
128
  }
100
129
 
101
130
  .monaco-editor.vs-dark .view-overlays .sumi-debug-top-stack-frame-exception-line {
102
- background-color: #6c2022;
131
+ background-color: @dark_exception_line_bg_color;
103
132
  }
104
133
 
105
134
  .inline-breakpoint-widget.codicon {
@@ -9,17 +9,12 @@ export class DebugHoverModel extends TreeModel {
9
9
  static DEFAULT_FLUSH_DELAY = 100;
10
10
 
11
11
  private flushDispatchChangeDelayer = new ThrottledDelayer<void>(DebugHoverModel.DEFAULT_FLUSH_DELAY);
12
- private onWillUpdateEmitter: Emitter<void> = new Emitter();
13
12
 
14
13
  constructor(@Optional() root: ExpressionContainer) {
15
14
  super();
16
15
  this.init(root);
17
16
  }
18
17
 
19
- get onWillUpdate(): Event<void> {
20
- return this.onWillUpdateEmitter.event;
21
- }
22
-
23
18
  init(root: CompositeTreeNode) {
24
19
  this.root = root;
25
20
  // 分支更新时通知树刷新, 不是立即更新,而是延迟更新,待树稳定后再更新
@@ -30,7 +25,6 @@ export class DebugHoverModel extends TreeModel {
30
25
  this.flushDispatchChangeDelayer.cancel();
31
26
  }
32
27
  this.flushDispatchChangeDelayer.trigger(async () => {
33
- await this.onWillUpdateEmitter.fireAndAwait();
34
28
  this.dispatchChange();
35
29
  });
36
30
  });
@@ -134,16 +134,6 @@ export class DebugHoverTreeModelService {
134
134
  this.loadingDecoration.removeTarget(target);
135
135
  }),
136
136
  );
137
- this.disposableCollection.push(
138
- this.treeModel!.onWillUpdate(() => {
139
- // 更新树前更新下选中节点
140
- if (this.selectedNodes.length !== 0) {
141
- // 仅处理一下单选情况
142
- const node = this.treeModel?.root.getTreeNodeByPath(this.selectedNodes[0].path);
143
- this.selectedDecoration.addTarget(node as ExpressionNode);
144
- }
145
- }),
146
- );
147
137
  }
148
138
 
149
139
  async initTreeModel(root: ExpressionVariable) {
@@ -1,7 +1,7 @@
1
1
  import debounce from 'lodash/debounce';
2
2
 
3
3
  import { Injector, Injectable, Autowired } from '@opensumi/di';
4
- import { DomListener, IContextKeyService, IReporterService } from '@opensumi/ide-core-browser';
4
+ import { DomListener, IContextKeyService, IReporterService, PreferenceService } from '@opensumi/ide-core-browser';
5
5
  import {
6
6
  ICtxMenuRenderer,
7
7
  generateMergedCtxMenu,
@@ -26,6 +26,7 @@ import { BreakpointManager } from '../breakpoint';
26
26
  import { DebugBreakpoint, isDebugBreakpoint } from '../breakpoint';
27
27
  import { DebugDecorator } from '../breakpoint/breakpoint-decoration';
28
28
  import { DebugSessionManager } from '../debug-session-manager';
29
+ import { DebugBreakpointsService } from '../view/breakpoints/debug-breakpoints.service';
29
30
 
30
31
  import { DebugBreakpointWidget } from './debug-breakpoint-widget';
31
32
  import { DebugHoverWidget } from './debug-hover-widget';
@@ -47,6 +48,9 @@ export class DebugModel implements IDebugModel {
47
48
  @Autowired(IDebugSessionManager)
48
49
  private debugSessionManager: DebugSessionManager;
49
50
 
51
+ @Autowired(DebugBreakpointsService)
52
+ private debugBreakpointsService: DebugBreakpointsService;
53
+
50
54
  @Autowired(BreakpointManager)
51
55
  private breakpointManager: BreakpointManager;
52
56
 
@@ -62,6 +66,9 @@ export class DebugModel implements IDebugModel {
62
66
  @Autowired(IReporterService)
63
67
  private readonly reporterService: IReporterService;
64
68
 
69
+ @Autowired(PreferenceService)
70
+ private readonly preferenceService: PreferenceService;
71
+
65
72
  protected frameDecorations: string[] = [];
66
73
  protected topFrameRange: monaco.Range | undefined;
67
74
 
@@ -115,13 +122,38 @@ export class DebugModel implements IDebugModel {
115
122
 
116
123
  async init() {
117
124
  const model = this.editor.getModel()!;
125
+ let timer: number | undefined;
118
126
  this._uri = new URI(model.uri.toString());
119
127
  this.decorator = new DebugDecorator();
128
+
120
129
  this.toDispose.pushAll([
121
130
  this.breakpointWidget,
122
131
  this.editor.onKeyDown(() => this.debugHoverWidget.hide({ immediate: false })),
123
132
  this.editor.onDidChangeModelContent(() => this.renderFrames()),
124
133
  this.debugSessionManager.onDidChange(() => this.renderFrames()),
134
+ this.debugBreakpointsService.onDidFocusedBreakpoints(({ range }) => {
135
+ const enableHint = this.preferenceService.getValid('debug.breakpoint.editorHint', true);
136
+
137
+ if (!enableHint) {
138
+ return;
139
+ }
140
+
141
+ this.renderFrames([
142
+ {
143
+ options: options.FOCUS_BREAKPOINTS_STACK_FRAME_DECORATION,
144
+ range,
145
+ },
146
+ ]);
147
+
148
+ if (timer) {
149
+ clearTimeout(timer);
150
+ }
151
+
152
+ timer = window.setTimeout(() => {
153
+ this.renderFrames();
154
+ clearTimeout(timer);
155
+ }, 300);
156
+ }),
125
157
  this.editor.getModel()!.onDidChangeContent(() => this.updateBreakpoints()),
126
158
  this.editor.onDidChangeModel(() => {
127
159
  this.closeBreakpointView();
@@ -156,14 +188,14 @@ export class DebugModel implements IDebugModel {
156
188
  * @type {*}
157
189
  * @memberof DebugModel
158
190
  */
159
- protected readonly renderFrames: any = debounce(() => {
191
+ protected readonly renderFrames: any = debounce((inflowDecorations: monaco.editor.IModelDeltaDecoration[] = []) => {
160
192
  if (this.toDispose.disposed) {
161
193
  return;
162
194
  }
163
195
  if (this.editor.getModel()?.uri.toString() !== this._uri.toString()) {
164
196
  return;
165
197
  }
166
- const decorations = this.createFrameDecorations();
198
+ const decorations = this.createFrameDecorations().concat(inflowDecorations);
167
199
  this.frameDecorations = this.deltaDecorations(this.frameDecorations, decorations);
168
200
  }, 100);
169
201
 
@@ -28,6 +28,13 @@ export const TOP_STACK_FRAME_DECORATION: monaco.editor.IModelDecorationOptions =
28
28
  stickiness: STICKINESS,
29
29
  };
30
30
 
31
+ export const FOCUS_BREAKPOINTS_STACK_FRAME_DECORATION: monaco.editor.IModelDecorationOptions = {
32
+ description: 'focus-breakpoints-stack-frame-line',
33
+ isWholeLine: true,
34
+ className: 'sumi-focus-breakpoints-stack-frame-line',
35
+ stickiness: STICKINESS,
36
+ };
37
+
31
38
  export const TOP_STACK_FRAME_EXCEPTION_DECORATION: monaco.editor.IModelDecorationOptions = {
32
39
  description: 'debug-top-stack-frame-exception-line',
33
40
  isWholeLine: true,
@@ -19,7 +19,7 @@
19
19
  }
20
20
 
21
21
  .debug_breakpoints_disabled {
22
- opacity: 0.7;
22
+ opacity: 0.4;
23
23
  }
24
24
 
25
25
  .debug_breakpoints_item {
@@ -28,16 +28,19 @@
28
28
  align-items: center;
29
29
  cursor: pointer;
30
30
  flex-direction: row;
31
- .debug_remove_breakpoints_icon {
32
- color: #c5c5c5;
31
+
32
+ .debug_breakpoints_item_control {
33
33
  display: none;
34
- pointer-events: none;
35
34
  }
35
+
36
+ .debug_remove_breakpoints_icon,
37
+ .debug_edit_breakpoints_icon {
38
+ margin-right: 6px;
39
+ }
40
+
36
41
  &:hover {
37
- .debug_remove_breakpoints_icon {
38
- display: inline-block;
39
- pointer-events: all;
40
- margin-right: 6px;
42
+ .debug_breakpoints_item_control {
43
+ display: flex;
41
44
  }
42
45
  .debug_breakpoints_badge {
43
46
  display: none;
@@ -90,3 +93,56 @@
90
93
  margin-left: 4px;
91
94
  flex: 1;
92
95
  }
96
+
97
+ .debug_breakpoints_item_tree_node {
98
+ padding-left: 27px !important;
99
+ }
100
+
101
+ .debug_activate_breakpoints_icon {
102
+ color: var(--debugIcon-activateBreakpointsForeground);
103
+ &:hover {
104
+ color: var(--debugIcon-activateBreakpointsForeground);
105
+ }
106
+ }
107
+
108
+ .debug_breakpoints_file_item {
109
+ display: flex;
110
+ align-items: center;
111
+ justify-content: space-between;
112
+
113
+ .file_item_control {
114
+ display: flex;
115
+ align-items: center;
116
+ min-width: 18px;
117
+ }
118
+
119
+ .file_item_control_right {
120
+ .close_icon {
121
+ display: none;
122
+ }
123
+ }
124
+
125
+ .file_item_checkbox {
126
+ display: none;
127
+ }
128
+
129
+ .file_item_icon {
130
+ display: block;
131
+ margin-left: -2px;
132
+ margin-right: 4px;
133
+ }
134
+
135
+ &:hover {
136
+ .file_item_checkbox {
137
+ display: inherit;
138
+ }
139
+ .file_item_icon {
140
+ display: none;
141
+ }
142
+ .close_icon {
143
+ display: inherit;
144
+ pointer-events: all;
145
+ margin-right: 6px;
146
+ }
147
+ }
148
+ }
@@ -10,6 +10,7 @@ import {
10
10
  Schemes,
11
11
  Emitter,
12
12
  Event,
13
+ IRange,
13
14
  } from '@opensumi/ide-core-browser';
14
15
  import { LabelService } from '@opensumi/ide-core-browser/lib/services';
15
16
  import { ICodeEditor, EditorCollectionService, getSimpleEditorOptions } from '@opensumi/ide-editor';
@@ -66,6 +67,9 @@ export class DebugBreakpointsService extends WithEventBus {
66
67
  readonly onDidChangeBreakpointsTreeNode: Event<Map<string, BreakpointsTreeNode[]>> =
67
68
  this._onDidChangeBreakpointsTreeNode.event;
68
69
 
70
+ private readonly _onDidFocusedBreakpoints = new Emitter<{ uri: URI; range: IRange }>();
71
+ readonly onDidFocusedBreakpoints: Event<{ uri: URI; range: IRange }> = this._onDidFocusedBreakpoints.event;
72
+
69
73
  private _inputEditor: ICodeEditor;
70
74
 
71
75
  public get inputEditor(): ICodeEditor {
@@ -87,6 +91,10 @@ export class DebugBreakpointsService extends WithEventBus {
87
91
  this.init();
88
92
  }
89
93
 
94
+ public launchFocusedBreakpoints(data: { uri: URI; range: IRange }): void {
95
+ this._onDidFocusedBreakpoints.fire(data);
96
+ }
97
+
90
98
  async init() {
91
99
  await this.updateRoots();
92
100
  this.workspaceService.onWorkspaceChanged(async () => {