@opensumi/ide-debug 2.21.3 → 2.21.4-rc-1668395886.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 (214) hide show
  1. package/lib/browser/debug-contribution.d.ts +2 -147
  2. package/lib/browser/debug-contribution.d.ts.map +1 -1
  3. package/lib/browser/debug-contribution.js +48 -197
  4. package/lib/browser/debug-contribution.js.map +1 -1
  5. package/lib/browser/debug-session-manager.d.ts +2 -3
  6. package/lib/browser/debug-session-manager.d.ts.map +1 -1
  7. package/lib/browser/debug-session-manager.js +2 -3
  8. package/lib/browser/debug-session-manager.js.map +1 -1
  9. package/lib/browser/debug-session.d.ts +3 -4
  10. package/lib/browser/debug-session.d.ts.map +1 -1
  11. package/lib/browser/debug-session.js.map +1 -1
  12. package/lib/browser/editor/debug-editor-contribution.d.ts +2 -2
  13. package/lib/browser/editor/debug-editor-contribution.d.ts.map +1 -1
  14. package/lib/browser/editor/debug-editor-contribution.js +2 -3
  15. package/lib/browser/editor/debug-editor-contribution.js.map +1 -1
  16. package/lib/browser/editor/debug-model-manager.d.ts +2 -9
  17. package/lib/browser/editor/debug-model-manager.d.ts.map +1 -1
  18. package/lib/browser/editor/debug-model-manager.js +8 -15
  19. package/lib/browser/editor/debug-model-manager.js.map +1 -1
  20. package/lib/browser/index.d.ts +0 -14
  21. package/lib/browser/index.d.ts.map +1 -1
  22. package/lib/browser/index.js +6 -15
  23. package/lib/browser/index.js.map +1 -1
  24. package/lib/browser/model/debug-source.d.ts +3 -3
  25. package/lib/browser/model/debug-source.d.ts.map +1 -1
  26. package/lib/browser/model/debug-source.js.map +1 -1
  27. package/lib/browser/model/debug-watch.d.ts.map +1 -1
  28. package/lib/browser/model/debug-watch.js +1 -2
  29. package/lib/browser/model/debug-watch.js.map +1 -1
  30. package/lib/browser/view/console/debug-console-session.d.ts +2 -1
  31. package/lib/browser/view/console/debug-console-session.d.ts.map +1 -1
  32. package/lib/browser/view/console/debug-console-session.js.map +1 -1
  33. package/lib/browser/view/console/debug-console.contribution.d.ts.map +1 -1
  34. package/lib/browser/view/console/debug-console.contribution.js +21 -23
  35. package/lib/browser/view/console/debug-console.contribution.js.map +1 -1
  36. package/lib/browser/view/console/debug-console.module.less +1 -1
  37. package/lib/browser/view/console/debug-console.view.js +2 -2
  38. package/lib/browser/view/console/debug-console.view.js.map +1 -1
  39. package/lib/browser/view/frames/debug-call-stack.contribution.js +5 -5
  40. package/lib/browser/view/frames/debug-call-stack.contribution.js.map +1 -1
  41. package/lib/browser/view/variables/debug-variables.contribution.d.ts.map +1 -1
  42. package/lib/browser/view/variables/debug-variables.contribution.js +12 -13
  43. package/lib/browser/view/variables/debug-variables.contribution.js.map +1 -1
  44. package/lib/browser/view/variables/debug-variables.module.less +1 -1
  45. package/lib/browser/view/variables/debug-variables.view.js +1 -1
  46. package/lib/browser/view/variables/debug-variables.view.js.map +1 -1
  47. package/lib/browser/view/watch/debug-watch.contribution.d.ts.map +1 -1
  48. package/lib/browser/view/watch/debug-watch.contribution.js +21 -19
  49. package/lib/browser/view/watch/debug-watch.contribution.js.map +1 -1
  50. package/lib/browser/view/watch/debug-watch.module.less +1 -1
  51. package/lib/browser/view/watch/debug-watch.view.js +1 -1
  52. package/lib/browser/view/watch/debug-watch.view.js.map +1 -1
  53. package/lib/common/commands.d.ts +46 -0
  54. package/lib/common/commands.d.ts.map +1 -0
  55. package/lib/common/commands.js +149 -0
  56. package/lib/common/commands.js.map +1 -0
  57. package/lib/common/debug-console.d.ts +18 -0
  58. package/lib/common/debug-console.d.ts.map +1 -0
  59. package/lib/common/debug-console.js +5 -0
  60. package/lib/common/debug-console.js.map +1 -0
  61. package/lib/common/debug-model.d.ts +17 -2
  62. package/lib/common/debug-model.d.ts.map +1 -1
  63. package/lib/common/debug-model.js +9 -1
  64. package/lib/common/debug-model.js.map +1 -1
  65. package/lib/common/index.d.ts +2 -0
  66. package/lib/common/index.d.ts.map +1 -1
  67. package/lib/common/index.js +2 -0
  68. package/lib/common/index.js.map +1 -1
  69. package/package.json +25 -24
  70. package/src/browser/assets/breakpoint-conditional-disabled.svg +4 -0
  71. package/src/browser/assets/breakpoint-conditional-unverified.svg +4 -0
  72. package/src/browser/assets/breakpoint-conditional.svg +4 -0
  73. package/src/browser/assets/breakpoint-disabled.svg +4 -0
  74. package/src/browser/assets/breakpoint-hint.svg +4 -0
  75. package/src/browser/assets/breakpoint-log-disabled.svg +4 -0
  76. package/src/browser/assets/breakpoint-log-unverified.svg +4 -0
  77. package/src/browser/assets/breakpoint-log.svg +4 -0
  78. package/src/browser/assets/breakpoint-unsupported.svg +4 -0
  79. package/src/browser/assets/breakpoint-unverified.svg +4 -0
  80. package/src/browser/assets/breakpoint.svg +4 -0
  81. package/src/browser/assets/breakpoints-activate-inverse.svg +4 -0
  82. package/src/browser/assets/breakpoints-activate.svg +4 -0
  83. package/src/browser/assets/configure-inverse.svg +4 -0
  84. package/src/browser/assets/configure.svg +4 -0
  85. package/src/browser/assets/continue-inverse.svg +4 -0
  86. package/src/browser/assets/current-and-breakpoint.svg +4 -0
  87. package/src/browser/assets/current-arrow.svg +4 -0
  88. package/src/browser/assets/remove-all-inverse.svg +4 -0
  89. package/src/browser/assets/remove-all.svg +4 -0
  90. package/src/browser/assets/repl-inverse.svg +4 -0
  91. package/src/browser/assets/repl.svg +4 -0
  92. package/src/browser/assets/restart-inverse.svg +4 -0
  93. package/src/browser/assets/stackframe-and-breakpoint.svg +4 -0
  94. package/src/browser/assets/stackframe-arrow.svg +4 -0
  95. package/src/browser/assets/start-inverse.svg +4 -0
  96. package/src/browser/breakpoint/breakpoint-decoration.ts +57 -0
  97. package/src/browser/breakpoint/breakpoint-manager.ts +348 -0
  98. package/src/browser/breakpoint/breakpoint-marker.ts +70 -0
  99. package/src/browser/breakpoint/index.ts +3 -0
  100. package/src/browser/components/debug-action/index.module.less +73 -0
  101. package/src/browser/components/debug-action/index.tsx +40 -0
  102. package/src/browser/components/debug-exception-widget.less +42 -0
  103. package/src/browser/components/floating-click-widget/index.module.less +5 -0
  104. package/src/browser/components/floating-click-widget/index.tsx +21 -0
  105. package/src/browser/components/index.ts +1 -0
  106. package/src/browser/contextkeys/debug-call-stack-item-type-key.ts +4 -0
  107. package/src/browser/contextkeys/debug-contextkey.service.ts +54 -0
  108. package/src/browser/contextkeys/index.ts +1 -0
  109. package/src/browser/debug-ansi-handle.ts +521 -0
  110. package/src/browser/debug-configuration-manager.ts +513 -0
  111. package/src/browser/debug-configuration-model.ts +66 -0
  112. package/src/browser/debug-contribution.ts +751 -0
  113. package/src/browser/debug-exception-widget.tsx +89 -0
  114. package/src/browser/debug-link-detector.ts +234 -0
  115. package/src/browser/debug-memory.ts +220 -0
  116. package/src/browser/debug-preferences.ts +70 -0
  117. package/src/browser/debug-progress.service.ts +122 -0
  118. package/src/browser/debug-schema-updater.ts +67 -0
  119. package/src/browser/debug-service.ts +42 -0
  120. package/src/browser/debug-session-connection.ts +333 -0
  121. package/src/browser/debug-session-contribution.ts +57 -0
  122. package/src/browser/debug-session-manager.ts +622 -0
  123. package/src/browser/debug-session.ts +1178 -0
  124. package/src/browser/debug-style.less +124 -0
  125. package/src/browser/debugUtils.ts +110 -0
  126. package/src/browser/editor/debug-breakpoint-widget.ts +99 -0
  127. package/src/browser/editor/debug-breakpoint-zone-widget.tsx +262 -0
  128. package/src/browser/editor/debug-breakpoint.module.less +29 -0
  129. package/src/browser/editor/debug-editor-contribution.ts +589 -0
  130. package/src/browser/editor/debug-expression-provider.ts +101 -0
  131. package/src/browser/editor/debug-hover-model.ts +38 -0
  132. package/src/browser/editor/debug-hover-source.ts +107 -0
  133. package/src/browser/editor/debug-hover-tree.model.service.ts +332 -0
  134. package/src/browser/editor/debug-hover-widget.tsx +200 -0
  135. package/src/browser/editor/debug-hover.module.less +29 -0
  136. package/src/browser/editor/debug-hover.view.tsx +147 -0
  137. package/src/browser/editor/debug-model-manager.ts +219 -0
  138. package/src/browser/editor/debug-model.ts +853 -0
  139. package/src/browser/editor/debug-run-to-cursor.service.ts +180 -0
  140. package/src/browser/editor/debug-styles.ts +66 -0
  141. package/src/browser/editor/evaluatable-expression.ts +47 -0
  142. package/src/browser/editor/index.ts +6 -0
  143. package/src/browser/index.ts +127 -0
  144. package/src/browser/markers/index.ts +2 -0
  145. package/src/browser/markers/marker-manager.ts +201 -0
  146. package/src/browser/markers/marker.ts +20 -0
  147. package/src/browser/model/debug-source.ts +144 -0
  148. package/src/browser/model/debug-stack-frame.ts +111 -0
  149. package/src/browser/model/debug-thread.ts +186 -0
  150. package/src/browser/model/debug-watch.ts +129 -0
  151. package/src/browser/model/index.ts +4 -0
  152. package/src/browser/preferences/launch-folder-preference-provider.ts +23 -0
  153. package/src/browser/preferences/launch-preferences-contribution.ts +9 -0
  154. package/src/browser/preferences/launch-preferences.ts +16 -0
  155. package/src/browser/tree/debug-console-tree-node.define.tsx +76 -0
  156. package/src/browser/tree/debug-tree-node.define.ts +768 -0
  157. package/src/browser/tree/index.ts +2 -0
  158. package/src/browser/view/breakpoints/debug-breakpoints.module.less +72 -0
  159. package/src/browser/view/breakpoints/debug-breakpoints.service.ts +216 -0
  160. package/src/browser/view/breakpoints/debug-breakpoints.view.tsx +174 -0
  161. package/src/browser/view/configuration/debug-configuration.module.less +110 -0
  162. package/src/browser/view/configuration/debug-configuration.service.ts +170 -0
  163. package/src/browser/view/configuration/debug-configuration.view.tsx +253 -0
  164. package/src/browser/view/configuration/debug-toolbar.service.ts +167 -0
  165. package/src/browser/view/configuration/debug-toolbar.view.tsx +335 -0
  166. package/src/browser/view/console/debug-console-filter.model.ts +49 -0
  167. package/src/browser/view/console/debug-console-filter.service.ts +81 -0
  168. package/src/browser/view/console/debug-console-filter.view.tsx +78 -0
  169. package/src/browser/view/console/debug-console-model.ts +48 -0
  170. package/src/browser/view/console/debug-console-session.ts +165 -0
  171. package/src/browser/view/console/debug-console-toolbar.view.tsx +28 -0
  172. package/src/browser/view/console/debug-console-tree.model.service.ts +550 -0
  173. package/src/browser/view/console/debug-console.contribution.ts +179 -0
  174. package/src/browser/view/console/debug-console.module.less +369 -0
  175. package/src/browser/view/console/debug-console.service.ts +433 -0
  176. package/src/browser/view/console/debug-console.view.tsx +500 -0
  177. package/src/browser/view/debug-view-model.ts +182 -0
  178. package/src/browser/view/frames/debug-call-stack-frame.view.tsx +224 -0
  179. package/src/browser/view/frames/debug-call-stack-session.view.tsx +237 -0
  180. package/src/browser/view/frames/debug-call-stack-thread.view.tsx +93 -0
  181. package/src/browser/view/frames/debug-call-stack.contribution.ts +88 -0
  182. package/src/browser/view/frames/debug-call-stack.module.less +193 -0
  183. package/src/browser/view/frames/debug-call-stack.operation.tsx +97 -0
  184. package/src/browser/view/frames/debug-call-stack.service.ts +105 -0
  185. package/src/browser/view/frames/debug-call-stack.view.tsx +43 -0
  186. package/src/browser/view/variables/debug-variables-model.ts +38 -0
  187. package/src/browser/view/variables/debug-variables-tree.model.service.ts +467 -0
  188. package/src/browser/view/variables/debug-variables.contribution.ts +243 -0
  189. package/src/browser/view/variables/debug-variables.module.less +148 -0
  190. package/src/browser/view/variables/debug-variables.view.tsx +303 -0
  191. package/src/browser/view/watch/debug-watch-model.ts +38 -0
  192. package/src/browser/view/watch/debug-watch-tree.model.service.ts +567 -0
  193. package/src/browser/view/watch/debug-watch.contribution.ts +170 -0
  194. package/src/browser/view/watch/debug-watch.module.less +188 -0
  195. package/src/browser/view/watch/debug-watch.view.tsx +337 -0
  196. package/src/common/commands.ts +146 -0
  197. package/src/common/constants.ts +81 -0
  198. package/src/common/debug-breakpoint.ts +43 -0
  199. package/src/common/debug-configuration.ts +68 -0
  200. package/src/common/debug-console.ts +20 -0
  201. package/src/common/debug-editor.ts +4 -0
  202. package/src/common/debug-hover.ts +31 -0
  203. package/src/common/debug-model.ts +272 -0
  204. package/src/common/debug-progress.ts +8 -0
  205. package/src/common/debug-schema-updater.ts +1 -0
  206. package/src/common/debug-service.ts +176 -0
  207. package/src/common/debug-session-options.ts +19 -0
  208. package/src/common/debug-session.ts +200 -0
  209. package/src/common/evaluatable-expression.ts +43 -0
  210. package/src/common/index.ts +16 -0
  211. package/src/common/inline-values.ts +77 -0
  212. package/src/common/terminal.ts +163 -0
  213. package/src/common/types.ts +86 -0
  214. package/src/index.ts +1 -0
@@ -0,0 +1,751 @@
1
+ import { Injector, Autowired, INJECTOR_TOKEN } from '@opensumi/di';
2
+ import {
3
+ Domain,
4
+ ClientAppContribution,
5
+ localize,
6
+ CommandContribution,
7
+ CommandRegistry,
8
+ KeybindingContribution,
9
+ JsonSchemaContribution,
10
+ IJSONSchemaRegistry,
11
+ PreferenceSchema,
12
+ PreferenceContribution,
13
+ CommandService,
14
+ IReporterService,
15
+ formatLocalize,
16
+ CoreConfiguration,
17
+ ComponentContribution,
18
+ ComponentRegistry,
19
+ KeybindingRegistry,
20
+ getIcon,
21
+ PreferenceService,
22
+ IPreferenceSettingsService,
23
+ COMMON_COMMANDS,
24
+ } from '@opensumi/ide-core-browser';
25
+ import { browserViews } from '@opensumi/ide-core-browser/lib/extensions/schema/browserViews';
26
+ import { ToolbarRegistry, TabBarToolbarContribution } from '@opensumi/ide-core-browser/lib/layout';
27
+ import { MenuContribution, MenuId, IMenuRegistry } from '@opensumi/ide-core-browser/lib/menu/next';
28
+ import { IExtensionsSchemaService, URI } from '@opensumi/ide-core-common';
29
+ import {
30
+ BrowserEditorContribution,
31
+ IEditorFeatureRegistry,
32
+ EditorComponentRegistry,
33
+ IEditor,
34
+ } from '@opensumi/ide-editor/lib/browser';
35
+ import { IFileServiceClient, IShadowFileProvider } from '@opensumi/ide-file-service';
36
+ import { FileServiceClient } from '@opensumi/ide-file-service/lib/browser/file-service-client';
37
+ import { IMainLayoutService, IViewsRegistry } from '@opensumi/ide-main-layout';
38
+ import { WelcomeView } from '@opensumi/ide-main-layout/lib/browser/welcome.view';
39
+ import * as monaco from '@opensumi/monaco-editor-core/esm/vs/editor/editor.api';
40
+
41
+ import {
42
+ IDebugSessionManager,
43
+ launchSchemaUri,
44
+ DEBUG_CONTAINER_ID,
45
+ DEBUG_WATCH_ID,
46
+ DEBUG_VARIABLES_ID,
47
+ DEBUG_STACK_ID,
48
+ DEBUG_BREAKPOINTS_ID,
49
+ DEBUG_FLOATING_CLICK_WIDGET,
50
+ DEBUG_REPORT_NAME,
51
+ DEBUG_WELCOME_ID,
52
+ DEBUG_SCHEME,
53
+ TSourceBrekpointProperties,
54
+ DEBUG_COMMANDS,
55
+ IDebugModelManager,
56
+ } from '../common';
57
+
58
+ import {
59
+ CONTEXT_DEBUGGERS_AVAILABLE,
60
+ CONTEXT_IN_DEBUG_MODE,
61
+ CONTEXT_BREAKPOINT_INPUT_FOCUSED,
62
+ CONTEXT_EXCEPTION_WIDGET_VISIBLE,
63
+ } from './../common/constants';
64
+ import { BreakpointManager, SelectedBreakpoint } from './breakpoint';
65
+ import { FloatingClickWidget } from './components/floating-click-widget';
66
+ import { DebugContextKey } from './contextkeys/debug-contextkey.service';
67
+ import { DebugConfigurationManager } from './debug-configuration-manager';
68
+ import { DebugPreferences, debugPreferencesSchema } from './debug-preferences';
69
+ import { DebugProgressService } from './debug-progress.service';
70
+ import { launchSchema } from './debug-schema-updater';
71
+ import { DebugSession } from './debug-session';
72
+ import { DebugSessionManager } from './debug-session-manager';
73
+ import { DebugEditorContribution } from './editor/debug-editor-contribution';
74
+ import { DebugRunToCursorService } from './editor/debug-run-to-cursor.service';
75
+ import { DebugBreakpointsService } from './view/breakpoints/debug-breakpoints.service';
76
+ import { DebugBreakpointView } from './view/breakpoints/debug-breakpoints.view';
77
+ import { DebugConfigurationService } from './view/configuration/debug-configuration.service';
78
+ import { DebugConfigurationView } from './view/configuration/debug-configuration.view';
79
+ import { DebugToolbarService } from './view/configuration/debug-toolbar.service';
80
+ import { DebugConsoleService } from './view/console/debug-console.service';
81
+ import { DebugViewModel } from './view/debug-view-model';
82
+ import { DebugCallStackView } from './view/frames/debug-call-stack.view';
83
+ import { DebugVariableView } from './view/variables/debug-variables.view';
84
+ import { DebugWatchView } from './view/watch/debug-watch.view';
85
+
86
+ const LAUNCH_JSON_REGEX = /launch\.json$/;
87
+
88
+ export namespace DebugBreakpointWidgetCommands {
89
+ export const ACCEPT = {
90
+ id: 'debug.breakpointWidget.accept',
91
+ };
92
+ export const CLOSE = {
93
+ id: 'debug.breakpointWidget.close',
94
+ };
95
+ }
96
+
97
+ @Domain(
98
+ ClientAppContribution,
99
+ ComponentContribution,
100
+ TabBarToolbarContribution,
101
+ CommandContribution,
102
+ KeybindingContribution,
103
+ JsonSchemaContribution,
104
+ PreferenceContribution,
105
+ MenuContribution,
106
+ BrowserEditorContribution,
107
+ )
108
+ export class DebugContribution
109
+ implements
110
+ ComponentContribution,
111
+ TabBarToolbarContribution,
112
+ CommandContribution,
113
+ KeybindingContribution,
114
+ JsonSchemaContribution,
115
+ PreferenceContribution,
116
+ MenuContribution,
117
+ BrowserEditorContribution
118
+ {
119
+ schema: PreferenceSchema = debugPreferencesSchema;
120
+
121
+ @Autowired(IMainLayoutService)
122
+ protected readonly mainlayoutService: IMainLayoutService;
123
+
124
+ @Autowired(BreakpointManager)
125
+ protected readonly breakpointManager: BreakpointManager;
126
+
127
+ @Autowired(DebugConfigurationManager)
128
+ protected readonly configurations: DebugConfigurationManager;
129
+
130
+ @Autowired(IDebugModelManager)
131
+ protected debugEditorController: IDebugModelManager;
132
+
133
+ @Autowired(DebugBreakpointsService)
134
+ protected debugBreakpointsService: DebugBreakpointsService;
135
+
136
+ @Autowired(DebugViewModel)
137
+ protected readonly debugModel: DebugViewModel;
138
+
139
+ @Autowired(DebugPreferences)
140
+ protected readonly debugPreferences: DebugPreferences;
141
+
142
+ @Autowired(DebugConsoleService)
143
+ protected readonly debugConsole: DebugConsoleService;
144
+
145
+ @Autowired(DebugConfigurationService)
146
+ protected readonly debugConfigurationService: DebugConfigurationService;
147
+
148
+ @Autowired(IDebugSessionManager)
149
+ protected readonly sessionManager: DebugSessionManager;
150
+
151
+ @Autowired(CommandService)
152
+ protected readonly commandService: CommandService;
153
+
154
+ @Autowired(DebugToolbarService)
155
+ protected readonly debugToolbarService: DebugToolbarService;
156
+
157
+ @Autowired(INJECTOR_TOKEN)
158
+ private readonly injector: Injector;
159
+
160
+ @Autowired(PreferenceService)
161
+ protected readonly preferences: PreferenceService;
162
+
163
+ @Autowired(IReporterService)
164
+ private readonly reporterService: IReporterService;
165
+
166
+ @Autowired(IViewsRegistry)
167
+ private viewsRegistry: IViewsRegistry;
168
+
169
+ @Autowired(IShadowFileProvider)
170
+ private shadowFileServiceProvider: IShadowFileProvider;
171
+
172
+ @Autowired(IFileServiceClient)
173
+ protected readonly fileSystem: FileServiceClient;
174
+
175
+ @Autowired(IPreferenceSettingsService)
176
+ protected readonly preferenceSettings: IPreferenceSettingsService;
177
+
178
+ @Autowired(DebugProgressService)
179
+ protected readonly debugProgressService: DebugProgressService;
180
+
181
+ @Autowired(DebugRunToCursorService)
182
+ protected readonly debugRunToCursorService: DebugRunToCursorService;
183
+
184
+ @Autowired(DebugContextKey)
185
+ protected readonly debugContextKey: DebugContextKey;
186
+
187
+ @Autowired(IExtensionsSchemaService)
188
+ protected readonly extensionsPointService: IExtensionsSchemaService;
189
+
190
+ private firstSessionStart = true;
191
+
192
+ get selectedBreakpoint(): SelectedBreakpoint | undefined {
193
+ const { selectedBreakpoint } = this.breakpointManager;
194
+ return selectedBreakpoint;
195
+ }
196
+
197
+ registerEditorComponent(registry: EditorComponentRegistry) {
198
+ registry.registerEditorSideWidget({
199
+ id: DEBUG_FLOATING_CLICK_WIDGET,
200
+ component: FloatingClickWidget as any,
201
+ displaysOnResource: (r) => {
202
+ const { configUri } = this.preferences.resolve('launch');
203
+ if (!configUri) {
204
+ return false;
205
+ }
206
+ return configUri.isEqual(r.uri) && LAUNCH_JSON_REGEX.test(r.uri.toString());
207
+ },
208
+ });
209
+ }
210
+
211
+ registerComponent(registry: ComponentRegistry) {
212
+ registry.register(
213
+ '@opensumi/ide-debug',
214
+ [
215
+ {
216
+ component: DebugWatchView,
217
+ id: DEBUG_WATCH_ID,
218
+ name: localize('debug.watch.title'),
219
+ when: `${CONTEXT_DEBUGGERS_AVAILABLE.equalsTo(true)} || ${CONTEXT_IN_DEBUG_MODE.equalsTo(true)}`,
220
+ collapsed: false,
221
+ },
222
+ {
223
+ component: DebugCallStackView,
224
+ id: DEBUG_STACK_ID,
225
+ name: localize('debug.callStack.title'),
226
+ when: `${CONTEXT_DEBUGGERS_AVAILABLE.equalsTo(true)} || ${CONTEXT_IN_DEBUG_MODE.equalsTo(true)}`,
227
+ collapsed: false,
228
+ },
229
+ {
230
+ component: DebugVariableView,
231
+ id: DEBUG_VARIABLES_ID,
232
+ name: localize('debug.variables.title'),
233
+ when: `${CONTEXT_DEBUGGERS_AVAILABLE.equalsTo(true)} || ${CONTEXT_IN_DEBUG_MODE.equalsTo(true)}`,
234
+ collapsed: false,
235
+ },
236
+ {
237
+ component: DebugBreakpointView,
238
+ id: DEBUG_BREAKPOINTS_ID,
239
+ name: localize('debug.breakpoints.title'),
240
+ when: `${CONTEXT_DEBUGGERS_AVAILABLE.equalsTo(true)} || ${CONTEXT_IN_DEBUG_MODE.equalsTo(true)}`,
241
+ collapsed: false,
242
+ },
243
+ {
244
+ component: WelcomeView,
245
+ id: DEBUG_WELCOME_ID,
246
+ name: 'Debug Welcome',
247
+ when: `${CONTEXT_DEBUGGERS_AVAILABLE.equalsTo(false)} && ${CONTEXT_IN_DEBUG_MODE.equalsTo(false)}`,
248
+ initialProps: { viewId: DEBUG_WELCOME_ID },
249
+ },
250
+ ],
251
+ {
252
+ iconClass: getIcon('debug'),
253
+ priority: 7,
254
+ title: localize('debug.container.title'),
255
+ containerId: DEBUG_CONTAINER_ID,
256
+ titleComponent: DebugConfigurationView,
257
+ activateKeyBinding: 'ctrlcmd+shift+d',
258
+ },
259
+ );
260
+ }
261
+
262
+ async initialize() {
263
+ this.fileSystem.registerProvider(DEBUG_SCHEME, this.shadowFileServiceProvider);
264
+ this.debugEditorController.init();
265
+ this.debugProgressService.run(this.sessionManager);
266
+ }
267
+
268
+ onStart() {
269
+ this.viewsRegistry.registerViewWelcomeContent(DEBUG_WELCOME_ID, {
270
+ content: formatLocalize('welcome-view.noLaunchJson', DEBUG_COMMANDS.START.id),
271
+ when: 'default',
272
+ });
273
+ this.sessionManager.onDidCreateDebugSession((session: DebugSession) => {
274
+ this.debugModel.init(session);
275
+ });
276
+ this.sessionManager.onDidStartDebugSession((session: DebugSession) => {
277
+ const { internalConsoleOptions } = session.configuration;
278
+ const openDebug = session.configuration.openDebug || this.debugPreferences['debug.openDebug'];
279
+ if (openDebug === 'openOnSessionStart' || openDebug === 'openOnFirstSessionStart') {
280
+ if (this.firstSessionStart) {
281
+ this.openDebugView();
282
+ }
283
+ } else if (openDebug !== 'neverOpen') {
284
+ this.openDebugView();
285
+ }
286
+
287
+ if (
288
+ internalConsoleOptions === 'openOnSessionStart' ||
289
+ (internalConsoleOptions === 'openOnFirstSessionStart' && this.firstSessionStart)
290
+ ) {
291
+ this.openDebugConsoleView();
292
+ }
293
+ this.firstSessionStart = false;
294
+ this.commandService.tryExecuteCommand('statusbar.changeBackgroundColor', 'var(--statusBar-debuggingBackground)');
295
+ this.commandService.tryExecuteCommand('statusbar.changeColor', 'var(--statusBar-debuggingForeground)');
296
+ });
297
+ this.sessionManager.onDidStopDebugSession((session) => {
298
+ const { openDebug } = session.configuration;
299
+ if (openDebug === 'openOnDebugBreak') {
300
+ this.openDebugView();
301
+ }
302
+ });
303
+ this.sessionManager.onDidDestroyDebugSession((session) => {
304
+ if (this.sessionManager.sessions.length === 0) {
305
+ this.commandService.tryExecuteCommand('statusbar.changeBackgroundColor', 'var(--statusBar-background)');
306
+ this.commandService.tryExecuteCommand('statusbar.changeColor');
307
+ }
308
+ });
309
+ this.configurations.load();
310
+ this.breakpointManager.load();
311
+ this.configurations.onDidChange(() => this.configurations.save());
312
+ this.breakpointManager.onDidChangeBreakpoints(() => this.breakpointManager.save());
313
+ this.breakpointManager.onDidChangeExceptionsBreakpoints(() => this.breakpointManager.save());
314
+ this.breakpointManager.onDidChangeMarkers(() => this.breakpointManager.save());
315
+
316
+ this.extensionsPointService.appendExtensionPoint(['browserViews', 'properties'], {
317
+ extensionPoint: DEBUG_CONTAINER_ID,
318
+ frameworkKind: ['opensumi'],
319
+ jsonSchema: {
320
+ ...browserViews.properties,
321
+ description: formatLocalize('sumiContributes.browserViews.location.custom', localize('menu-bar.title.debug')),
322
+ },
323
+ });
324
+ }
325
+
326
+ // 左侧调试面板
327
+ openDebugView() {
328
+ const handler = this.mainlayoutService.getTabbarHandler(DEBUG_CONTAINER_ID);
329
+ if (handler && !handler.isVisible) {
330
+ handler.activate();
331
+ }
332
+ }
333
+
334
+ // 底部调试控制台面板
335
+ openDebugConsoleView() {
336
+ if (!this.debugConsole.isVisible) {
337
+ this.debugConsole.activate();
338
+ }
339
+ }
340
+
341
+ onDidRender() {
342
+ const handler = this.mainlayoutService.getTabbarHandler(DEBUG_CONTAINER_ID);
343
+ if (handler) {
344
+ handler!.setTitleComponent(DebugConfigurationView);
345
+ }
346
+ }
347
+
348
+ registerCommands(commands: CommandRegistry) {
349
+ commands.registerCommand(COMMON_COMMANDS.OPEN_LAUNCH_CONFIGURATION, {
350
+ execute: () => {
351
+ this.debugConfigurationService.openConfiguration();
352
+ },
353
+ });
354
+ commands.registerCommand(DEBUG_COMMANDS.REMOVE_ALL_BREAKPOINTS, {
355
+ execute: () => {
356
+ this.debugBreakpointsService.removeAllBreakpoints();
357
+ },
358
+ });
359
+ commands.registerCommand(DEBUG_COMMANDS.START, {
360
+ execute: () => {
361
+ this.debugConfigurationService.start();
362
+ },
363
+ });
364
+ commands.registerCommand(DEBUG_COMMANDS.STOP, {
365
+ execute: () => {
366
+ this.debugToolbarService.doStop();
367
+ },
368
+ });
369
+ commands.registerCommand(DEBUG_COMMANDS.NEXT, {
370
+ execute: () => {
371
+ this.debugToolbarService.doStepIn();
372
+ },
373
+ });
374
+ commands.registerCommand(DEBUG_COMMANDS.PREV, {
375
+ execute: () => {
376
+ this.debugToolbarService.doStepOut();
377
+ },
378
+ });
379
+ commands.registerCommand(DEBUG_COMMANDS.CONTINUE, {
380
+ execute: () => {
381
+ this.debugToolbarService.doContinue();
382
+ },
383
+ });
384
+ commands.registerCommand(DEBUG_COMMANDS.PAUSE, {
385
+ execute: () => {
386
+ this.debugToolbarService.doPause();
387
+ },
388
+ });
389
+ commands.registerCommand(DEBUG_COMMANDS.OVER, {
390
+ execute: () => {
391
+ this.debugToolbarService.doStepOver();
392
+ },
393
+ });
394
+ commands.registerCommand(DEBUG_COMMANDS.RESTART, {
395
+ execute: () => {
396
+ this.debugToolbarService.doRestart();
397
+ },
398
+ });
399
+ commands.registerCommand(DEBUG_COMMANDS.TOGGLE_BREAKPOINTS, {
400
+ execute: () => {
401
+ this.debugBreakpointsService.toggleBreakpoints();
402
+ },
403
+ });
404
+ commands.registerCommand(DEBUG_COMMANDS.EDIT_BREAKPOINT, {
405
+ execute: async (position: monaco.Position) => {
406
+ this.reporterService.point(DEBUG_REPORT_NAME?.DEBUG_BREAKPOINT, 'edit');
407
+ const { selectedBreakpoint } = this;
408
+ if (selectedBreakpoint) {
409
+ const { openBreakpointView } = selectedBreakpoint.model;
410
+ let defaultContext: TSourceBrekpointProperties = 'condition';
411
+ if (selectedBreakpoint.breakpoint) {
412
+ const raw = selectedBreakpoint.breakpoint.raw;
413
+ if (raw.condition) {
414
+ defaultContext = 'condition';
415
+ } else if (raw.hitCondition) {
416
+ defaultContext = 'hitCondition';
417
+ } else if (raw.logMessage) {
418
+ defaultContext = 'logMessage';
419
+ }
420
+ }
421
+ openBreakpointView(
422
+ position,
423
+ selectedBreakpoint.breakpoint && selectedBreakpoint.breakpoint.raw,
424
+ defaultContext,
425
+ );
426
+ }
427
+ },
428
+ isVisible: () => !!this.selectedBreakpoint && !!this.selectedBreakpoint.breakpoint,
429
+ isEnabled: () => !!this.selectedBreakpoint && !!this.selectedBreakpoint.breakpoint,
430
+ });
431
+ commands.registerCommand(DEBUG_COMMANDS.DISABLE_BREAKPOINT, {
432
+ execute: async (position: monaco.Position) => {
433
+ const { selectedBreakpoint } = this;
434
+ if (selectedBreakpoint) {
435
+ const { uri } = selectedBreakpoint.model;
436
+ const breakpoint = this.breakpointManager.getBreakpoint(uri, position.lineNumber);
437
+ if (breakpoint) {
438
+ breakpoint.enabled = false;
439
+ this.breakpointManager.updateBreakpoint(breakpoint);
440
+ }
441
+ }
442
+ },
443
+ isVisible: () =>
444
+ !!this.selectedBreakpoint && !!this.selectedBreakpoint.breakpoint && this.selectedBreakpoint.breakpoint.enabled,
445
+ isEnabled: () =>
446
+ !!this.selectedBreakpoint && !!this.selectedBreakpoint.breakpoint && this.selectedBreakpoint.breakpoint.enabled,
447
+ });
448
+ commands.registerCommand(DEBUG_COMMANDS.ENABLE_BREAKPOINT, {
449
+ execute: async (position: monaco.Position) => {
450
+ const { selectedBreakpoint } = this;
451
+ if (selectedBreakpoint) {
452
+ const { uri } = selectedBreakpoint.model;
453
+ const breakpoint = this.breakpointManager.getBreakpoint(uri, position.lineNumber);
454
+ if (breakpoint) {
455
+ breakpoint.enabled = true;
456
+ this.breakpointManager.updateBreakpoint(breakpoint);
457
+ }
458
+ }
459
+ },
460
+ isVisible: () =>
461
+ !!this.selectedBreakpoint &&
462
+ !!this.selectedBreakpoint.breakpoint &&
463
+ !this.selectedBreakpoint.breakpoint.enabled,
464
+ isEnabled: () =>
465
+ !!this.selectedBreakpoint &&
466
+ !!this.selectedBreakpoint.breakpoint &&
467
+ !this.selectedBreakpoint.breakpoint.enabled,
468
+ });
469
+ commands.registerCommand(DEBUG_COMMANDS.DELETE_BREAKPOINT, {
470
+ execute: async (position: monaco.Position) => {
471
+ const { selectedBreakpoint } = this;
472
+ if (selectedBreakpoint) {
473
+ const { uri } = selectedBreakpoint.model;
474
+ const breakpoint = this.breakpointManager.getBreakpoint(uri, position.lineNumber);
475
+ if (breakpoint) {
476
+ this.breakpointManager.delBreakpoint(breakpoint);
477
+ }
478
+ }
479
+ },
480
+ isVisible: () => !!this.selectedBreakpoint && !!this.selectedBreakpoint.breakpoint,
481
+ isEnabled: () => !!this.selectedBreakpoint && !!this.selectedBreakpoint.breakpoint,
482
+ });
483
+
484
+ commands.registerCommand(DEBUG_COMMANDS.ADD_CONDITIONAL_BREAKPOINT, {
485
+ execute: async (position: monaco.Position) => {
486
+ const { selectedBreakpoint } = this;
487
+ if (selectedBreakpoint) {
488
+ const { uri, openBreakpointView, toggleBreakpoint } = selectedBreakpoint.model;
489
+ toggleBreakpoint(position);
490
+ const breakpoint = this.breakpointManager.getBreakpoint(uri, position!.lineNumber);
491
+ // 更新当前右键选中的断点
492
+ if (breakpoint) {
493
+ this.breakpointManager.selectedBreakpoint = {
494
+ breakpoint,
495
+ model: selectedBreakpoint.model,
496
+ };
497
+ }
498
+ openBreakpointView(position, selectedBreakpoint.breakpoint && selectedBreakpoint.breakpoint.raw, 'condition');
499
+ }
500
+ },
501
+ isVisible: () => !!this.selectedBreakpoint && !this.selectedBreakpoint.breakpoint,
502
+ isEnabled: () => !!this.selectedBreakpoint && !this.selectedBreakpoint.breakpoint,
503
+ });
504
+ commands.registerCommand(DEBUG_COMMANDS.ADD_LOGPOINT, {
505
+ execute: async (position: monaco.Position) => {
506
+ const { selectedBreakpoint } = this;
507
+ if (selectedBreakpoint) {
508
+ const { openBreakpointView, toggleBreakpoint, uri } = selectedBreakpoint.model;
509
+ toggleBreakpoint(position);
510
+ const breakpoint = this.breakpointManager.getBreakpoint(uri, position!.lineNumber);
511
+ // 更新当前右键选中的断点
512
+ if (breakpoint) {
513
+ this.breakpointManager.selectedBreakpoint = {
514
+ breakpoint,
515
+ model: selectedBreakpoint.model,
516
+ };
517
+ }
518
+ openBreakpointView(
519
+ position,
520
+ selectedBreakpoint.breakpoint && selectedBreakpoint.breakpoint.raw,
521
+ 'logMessage',
522
+ );
523
+ }
524
+ },
525
+ isVisible: () => !!this.selectedBreakpoint && !this.selectedBreakpoint.breakpoint,
526
+ isEnabled: () => !!this.selectedBreakpoint && !this.selectedBreakpoint.breakpoint,
527
+ });
528
+ commands.registerCommand(DEBUG_COMMANDS.ADD_BREAKPOINT, {
529
+ execute: async (position: monaco.Position) => {
530
+ const { selectedBreakpoint } = this;
531
+ if (selectedBreakpoint) {
532
+ const { toggleBreakpoint } = selectedBreakpoint.model;
533
+ toggleBreakpoint(position);
534
+ }
535
+ },
536
+ isVisible: () => !!this.selectedBreakpoint && !this.selectedBreakpoint.breakpoint,
537
+ isEnabled: () => !!this.selectedBreakpoint && !this.selectedBreakpoint.breakpoint,
538
+ });
539
+
540
+ commands.registerCommand(DebugBreakpointWidgetCommands.ACCEPT, {
541
+ execute: () => {
542
+ const { selectedBreakpoint } = this;
543
+ if (selectedBreakpoint) {
544
+ const { acceptBreakpoint } = selectedBreakpoint.model;
545
+ acceptBreakpoint();
546
+ }
547
+ },
548
+ isVisible: () => !!this.selectedBreakpoint && !!this.selectedBreakpoint.breakpoint,
549
+ isEnabled: () => !!this.selectedBreakpoint && !!this.selectedBreakpoint.breakpoint,
550
+ });
551
+ commands.registerCommand(DebugBreakpointWidgetCommands.CLOSE, {
552
+ execute: () => {
553
+ const { selectedBreakpoint } = this;
554
+ if (selectedBreakpoint) {
555
+ const { closeBreakpointView } = selectedBreakpoint.model;
556
+ closeBreakpointView();
557
+ }
558
+ },
559
+ isVisible: () => !!this.selectedBreakpoint && !!this.selectedBreakpoint.breakpoint,
560
+ isEnabled: () => !!this.selectedBreakpoint && !!this.selectedBreakpoint.breakpoint,
561
+ });
562
+ commands.registerCommand(DEBUG_COMMANDS.RUN_TO_CURSOR, {
563
+ execute: (uri: URI) => {
564
+ this.debugRunToCursorService.run(uri);
565
+ },
566
+ isEnabled: () => this.debugContextKey.contextDebugState.get() === 'Stopped',
567
+ });
568
+ commands.registerCommand(DEBUG_COMMANDS.FORCE_RUN_TO_CURSOR, {
569
+ execute: (uri: URI) => {
570
+ this.debugRunToCursorService.run(uri, true);
571
+ },
572
+ isEnabled: () => this.debugContextKey.contextDebugState.get() === 'Stopped',
573
+ });
574
+ }
575
+
576
+ registerToolbarItems(registry: ToolbarRegistry) {
577
+ /**
578
+ * end
579
+ */
580
+
581
+ /**
582
+ * 断点面板菜单
583
+ */
584
+ registry.registerItem({
585
+ id: DEBUG_COMMANDS.REMOVE_ALL_BREAKPOINTS.id,
586
+ command: DEBUG_COMMANDS.REMOVE_ALL_BREAKPOINTS.id,
587
+ iconClass: getIcon('close-all'),
588
+ viewId: DEBUG_BREAKPOINTS_ID,
589
+ tooltip: localize('debug.breakpoint.removeAll'),
590
+ });
591
+
592
+ registry.registerItem({
593
+ id: DEBUG_COMMANDS.TOGGLE_BREAKPOINTS.id,
594
+ command: DEBUG_COMMANDS.TOGGLE_BREAKPOINTS.id,
595
+ iconClass: getIcon('deactivate-breakpoints'),
596
+ viewId: DEBUG_BREAKPOINTS_ID,
597
+ tooltip: localize('debug.breakpoint.toggle'),
598
+ });
599
+ /**
600
+ * end
601
+ */
602
+ }
603
+
604
+ registerSchema(registry: IJSONSchemaRegistry) {
605
+ registry.registerSchema(`${launchSchemaUri}/default`, launchSchema, ['launch.json']);
606
+ }
607
+
608
+ registerKeybindings(keybindings: KeybindingRegistry) {
609
+ keybindings.registerKeybinding({
610
+ command: DEBUG_COMMANDS.START.id,
611
+ keybinding: 'f5',
612
+ when: `!${CONTEXT_IN_DEBUG_MODE.raw}`,
613
+ });
614
+ keybindings.registerKeybinding({
615
+ command: DEBUG_COMMANDS.CONTINUE.id,
616
+ keybinding: 'f5',
617
+ when: CONTEXT_IN_DEBUG_MODE.raw,
618
+ });
619
+ keybindings.registerKeybinding({
620
+ command: DEBUG_COMMANDS.STOP.id,
621
+ keybinding: 'shift+f5',
622
+ when: CONTEXT_IN_DEBUG_MODE.raw,
623
+ });
624
+ keybindings.registerKeybinding({
625
+ command: DEBUG_COMMANDS.NEXT.id,
626
+ keybinding: 'f11',
627
+ when: CONTEXT_IN_DEBUG_MODE.raw,
628
+ });
629
+ keybindings.registerKeybinding({
630
+ command: DEBUG_COMMANDS.PREV.id,
631
+ keybinding: 'shift+f11',
632
+ when: CONTEXT_IN_DEBUG_MODE.raw,
633
+ });
634
+ keybindings.registerKeybinding({
635
+ command: DEBUG_COMMANDS.OVER.id,
636
+ keybinding: 'f10',
637
+ when: CONTEXT_IN_DEBUG_MODE.raw,
638
+ });
639
+ keybindings.registerKeybinding({
640
+ command: DEBUG_COMMANDS.RESTART.id,
641
+ keybinding: 'shift+ctrlcmd+f5',
642
+ when: CONTEXT_IN_DEBUG_MODE.raw,
643
+ });
644
+
645
+ keybindings.registerKeybinding({
646
+ command: DebugBreakpointWidgetCommands.ACCEPT.id,
647
+ keybinding: 'enter',
648
+ when: CONTEXT_BREAKPOINT_INPUT_FOCUSED.raw,
649
+ });
650
+ keybindings.registerKeybinding({
651
+ command: DebugBreakpointWidgetCommands.CLOSE.id,
652
+ keybinding: 'esc',
653
+ when: CONTEXT_BREAKPOINT_INPUT_FOCUSED.raw,
654
+ });
655
+ keybindings.registerKeybinding({
656
+ command: DEBUG_COMMANDS.EXCEPTION_WIDGET_CLOSE.id,
657
+ keybinding: 'esc',
658
+ when: CONTEXT_EXCEPTION_WIDGET_VISIBLE.raw,
659
+ });
660
+ }
661
+
662
+ registerMenus(menuRegistry: IMenuRegistry) {
663
+ menuRegistry.registerMenuItem(MenuId.DebugBreakpointsContext, {
664
+ command: DEBUG_COMMANDS.DELETE_BREAKPOINT.id,
665
+ group: '1_has_breakpoint',
666
+ order: 1,
667
+ });
668
+ menuRegistry.registerMenuItem(MenuId.DebugBreakpointsContext, {
669
+ command: DEBUG_COMMANDS.EDIT_BREAKPOINT.id,
670
+ group: '1_has_breakpoint',
671
+ order: 2,
672
+ });
673
+ menuRegistry.registerMenuItem(MenuId.DebugBreakpointsContext, {
674
+ command: DEBUG_COMMANDS.DISABLE_BREAKPOINT.id,
675
+ group: '1_has_breakpoint',
676
+ order: 3,
677
+ });
678
+ menuRegistry.registerMenuItem(MenuId.DebugBreakpointsContext, {
679
+ command: DEBUG_COMMANDS.ENABLE_BREAKPOINT.id,
680
+ group: '1_has_breakpoint',
681
+ order: 4,
682
+ });
683
+
684
+ menuRegistry.registerMenuItem(MenuId.DebugBreakpointsContext, {
685
+ command: DEBUG_COMMANDS.ADD_BREAKPOINT.id,
686
+ group: '2_has_not_breakpoint',
687
+ });
688
+ menuRegistry.registerMenuItem(MenuId.DebugBreakpointsContext, {
689
+ command: DEBUG_COMMANDS.ADD_CONDITIONAL_BREAKPOINT.id,
690
+ group: '2_has_not_breakpoint',
691
+ });
692
+ menuRegistry.registerMenuItem(MenuId.DebugBreakpointsContext, {
693
+ command: DEBUG_COMMANDS.ADD_LOGPOINT.id,
694
+ group: '2_has_not_breakpoint',
695
+ });
696
+
697
+ // editor/context
698
+ menuRegistry.registerMenuItem(MenuId.EditorContext, {
699
+ command: {
700
+ id: DEBUG_COMMANDS.RUN_TO_CURSOR.id,
701
+ label: DEBUG_COMMANDS.RUN_TO_CURSOR.label || '',
702
+ },
703
+ when: `${CONTEXT_IN_DEBUG_MODE.raw}`,
704
+ group: 'debug',
705
+ order: 2,
706
+ });
707
+ menuRegistry.registerMenuItem(MenuId.EditorContext, {
708
+ command: {
709
+ id: DEBUG_COMMANDS.FORCE_RUN_TO_CURSOR.id,
710
+ label: DEBUG_COMMANDS.FORCE_RUN_TO_CURSOR.label || '',
711
+ },
712
+ when: `${CONTEXT_IN_DEBUG_MODE.raw}`,
713
+ group: 'debug',
714
+ order: 2,
715
+ });
716
+
717
+ menuRegistry.registerMenuItem(MenuId.EditorTitle, {
718
+ submenu: MenuId.EditorTitleRun,
719
+ label: localize('debug.menu.title.run'),
720
+ iconClass: getIcon('start'),
721
+ group: 'navigation',
722
+ order: -1,
723
+ });
724
+ }
725
+
726
+ protected isPosition(position: monaco.Position): boolean {
727
+ return position instanceof monaco.Position;
728
+ }
729
+
730
+ registerEditorFeature(registry: IEditorFeatureRegistry) {
731
+ let debugEditorContribution: DebugEditorContribution;
732
+
733
+ registry.registerEditorFeatureContribution({
734
+ contribute: (editor: IEditor) => {
735
+ debugEditorContribution = this.injector.get(DebugEditorContribution, [editor]);
736
+ return debugEditorContribution.contribute(editor);
737
+ },
738
+ });
739
+ // 这里是为了通过 MonacoOverrideServiceRegistry 来获取 codeEditorService ,但由于存在时序问题,所以加个 setTimeout 0
740
+ setTimeout(() => {
741
+ debugEditorContribution?.registerDecorationType();
742
+ }, 0);
743
+ this.preferenceSettings.setEnumLabels(
744
+ 'debug.console.filter.mode' as keyof CoreConfiguration,
745
+ {
746
+ filter: localize('preference.debug.console.filter.mode.filter'),
747
+ matcher: localize('preference.debug.console.filter.mode.matcher'),
748
+ } as { [key in CoreConfiguration['debug.console.filter.mode']]: string },
749
+ );
750
+ }
751
+ }