@opensumi/ide-debug 2.21.7-rc-1670246007.0 → 2.21.7

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 (169) hide show
  1. package/lib/browser/debug-session.d.ts.map +1 -1
  2. package/lib/browser/debug-session.js +1 -5
  3. package/lib/browser/debug-session.js.map +1 -1
  4. package/lib/browser/index.d.ts.map +1 -1
  5. package/lib/browser/index.js +9 -2
  6. package/lib/browser/index.js.map +1 -1
  7. package/lib/browser/preferences/launch-folder-preference-provider.d.ts +2 -2
  8. package/lib/browser/preferences/launch-folder-preference-provider.d.ts.map +1 -1
  9. package/lib/browser/preferences/launch-folder-preference-provider.js +2 -2
  10. package/lib/browser/preferences/launch-folder-preference-provider.js.map +1 -1
  11. package/lib/browser/view/configuration/debug-configuration.module.less +5 -5
  12. package/lib/browser/view/configuration/debug-configuration.view.d.ts.map +1 -1
  13. package/lib/browser/view/configuration/debug-configuration.view.js +1 -1
  14. package/lib/browser/view/configuration/debug-configuration.view.js.map +1 -1
  15. package/lib/browser/view/configuration/debug-toolbar.view.js +2 -2
  16. package/lib/browser/view/configuration/debug-toolbar.view.js.map +1 -1
  17. package/lib/browser/view/console/debug-console.module.less +1 -2
  18. package/lib/browser/view/console/debug-console.view.js +2 -2
  19. package/lib/browser/view/console/debug-console.view.js.map +1 -1
  20. package/lib/browser/view/variables/debug-variables.module.less +1 -2
  21. package/lib/browser/view/variables/debug-variables.view.js +1 -1
  22. package/lib/browser/view/variables/debug-variables.view.js.map +1 -1
  23. package/lib/browser/view/watch/debug-watch.module.less +1 -2
  24. package/lib/browser/view/watch/debug-watch.view.js +1 -1
  25. package/lib/browser/view/watch/debug-watch.view.js.map +1 -1
  26. package/package.json +24 -25
  27. package/src/browser/assets/breakpoint-conditional-disabled.svg +0 -4
  28. package/src/browser/assets/breakpoint-conditional-unverified.svg +0 -4
  29. package/src/browser/assets/breakpoint-conditional.svg +0 -4
  30. package/src/browser/assets/breakpoint-disabled.svg +0 -4
  31. package/src/browser/assets/breakpoint-hint.svg +0 -4
  32. package/src/browser/assets/breakpoint-log-disabled.svg +0 -4
  33. package/src/browser/assets/breakpoint-log-unverified.svg +0 -4
  34. package/src/browser/assets/breakpoint-log.svg +0 -4
  35. package/src/browser/assets/breakpoint-unsupported.svg +0 -4
  36. package/src/browser/assets/breakpoint-unverified.svg +0 -4
  37. package/src/browser/assets/breakpoint.svg +0 -4
  38. package/src/browser/assets/breakpoints-activate-inverse.svg +0 -4
  39. package/src/browser/assets/breakpoints-activate.svg +0 -4
  40. package/src/browser/assets/configure-inverse.svg +0 -4
  41. package/src/browser/assets/configure.svg +0 -4
  42. package/src/browser/assets/continue-inverse.svg +0 -4
  43. package/src/browser/assets/current-and-breakpoint.svg +0 -4
  44. package/src/browser/assets/current-arrow.svg +0 -4
  45. package/src/browser/assets/remove-all-inverse.svg +0 -4
  46. package/src/browser/assets/remove-all.svg +0 -4
  47. package/src/browser/assets/repl-inverse.svg +0 -4
  48. package/src/browser/assets/repl.svg +0 -4
  49. package/src/browser/assets/restart-inverse.svg +0 -4
  50. package/src/browser/assets/stackframe-and-breakpoint.svg +0 -4
  51. package/src/browser/assets/stackframe-arrow.svg +0 -4
  52. package/src/browser/assets/start-inverse.svg +0 -4
  53. package/src/browser/breakpoint/breakpoint-decoration.ts +0 -57
  54. package/src/browser/breakpoint/breakpoint-manager.ts +0 -348
  55. package/src/browser/breakpoint/breakpoint-marker.ts +0 -70
  56. package/src/browser/breakpoint/index.ts +0 -3
  57. package/src/browser/components/debug-action/index.module.less +0 -73
  58. package/src/browser/components/debug-action/index.tsx +0 -40
  59. package/src/browser/components/debug-exception-widget.less +0 -42
  60. package/src/browser/components/floating-click-widget/index.module.less +0 -5
  61. package/src/browser/components/floating-click-widget/index.tsx +0 -21
  62. package/src/browser/components/index.ts +0 -1
  63. package/src/browser/contextkeys/debug-call-stack-item-type-key.ts +0 -4
  64. package/src/browser/contextkeys/debug-contextkey.service.ts +0 -54
  65. package/src/browser/contextkeys/index.ts +0 -1
  66. package/src/browser/debug-ansi-handle.ts +0 -521
  67. package/src/browser/debug-configuration-manager.ts +0 -513
  68. package/src/browser/debug-configuration-model.ts +0 -66
  69. package/src/browser/debug-contribution.ts +0 -904
  70. package/src/browser/debug-exception-widget.tsx +0 -89
  71. package/src/browser/debug-link-detector.ts +0 -234
  72. package/src/browser/debug-memory.ts +0 -220
  73. package/src/browser/debug-preferences.ts +0 -70
  74. package/src/browser/debug-progress.service.ts +0 -122
  75. package/src/browser/debug-schema-updater.ts +0 -67
  76. package/src/browser/debug-service.ts +0 -42
  77. package/src/browser/debug-session-connection.ts +0 -333
  78. package/src/browser/debug-session-contribution.ts +0 -57
  79. package/src/browser/debug-session-manager.ts +0 -622
  80. package/src/browser/debug-session.ts +0 -1182
  81. package/src/browser/debug-style.less +0 -128
  82. package/src/browser/debugUtils.ts +0 -110
  83. package/src/browser/editor/debug-breakpoint-widget.ts +0 -99
  84. package/src/browser/editor/debug-breakpoint-zone-widget.tsx +0 -262
  85. package/src/browser/editor/debug-breakpoint.module.less +0 -31
  86. package/src/browser/editor/debug-editor-contribution.ts +0 -590
  87. package/src/browser/editor/debug-expression-provider.ts +0 -101
  88. package/src/browser/editor/debug-hover-model.ts +0 -38
  89. package/src/browser/editor/debug-hover-source.ts +0 -107
  90. package/src/browser/editor/debug-hover-tree.model.service.ts +0 -332
  91. package/src/browser/editor/debug-hover-widget.tsx +0 -200
  92. package/src/browser/editor/debug-hover.module.less +0 -29
  93. package/src/browser/editor/debug-hover.view.tsx +0 -147
  94. package/src/browser/editor/debug-model-manager.ts +0 -220
  95. package/src/browser/editor/debug-model.ts +0 -853
  96. package/src/browser/editor/debug-run-to-cursor.service.ts +0 -180
  97. package/src/browser/editor/debug-styles.ts +0 -66
  98. package/src/browser/editor/evaluatable-expression.ts +0 -47
  99. package/src/browser/editor/index.ts +0 -6
  100. package/src/browser/index.ts +0 -121
  101. package/src/browser/markers/index.ts +0 -2
  102. package/src/browser/markers/marker-manager.ts +0 -201
  103. package/src/browser/markers/marker.ts +0 -20
  104. package/src/browser/model/debug-source.ts +0 -144
  105. package/src/browser/model/debug-stack-frame.ts +0 -111
  106. package/src/browser/model/debug-thread.ts +0 -186
  107. package/src/browser/model/debug-watch.ts +0 -130
  108. package/src/browser/model/index.ts +0 -4
  109. package/src/browser/preferences/launch-folder-preference-provider.ts +0 -23
  110. package/src/browser/preferences/launch-preferences-contribution.ts +0 -9
  111. package/src/browser/preferences/launch-preferences.ts +0 -16
  112. package/src/browser/tree/debug-console-tree-node.define.tsx +0 -76
  113. package/src/browser/tree/debug-tree-node.define.ts +0 -768
  114. package/src/browser/tree/index.ts +0 -2
  115. package/src/browser/view/breakpoints/debug-breakpoints.module.less +0 -72
  116. package/src/browser/view/breakpoints/debug-breakpoints.service.ts +0 -217
  117. package/src/browser/view/breakpoints/debug-breakpoints.view.tsx +0 -174
  118. package/src/browser/view/configuration/debug-configuration.module.less +0 -110
  119. package/src/browser/view/configuration/debug-configuration.service.ts +0 -170
  120. package/src/browser/view/configuration/debug-configuration.view.tsx +0 -252
  121. package/src/browser/view/configuration/debug-toolbar.service.ts +0 -167
  122. package/src/browser/view/configuration/debug-toolbar.view.tsx +0 -335
  123. package/src/browser/view/console/debug-console-filter.model.ts +0 -49
  124. package/src/browser/view/console/debug-console-filter.service.ts +0 -81
  125. package/src/browser/view/console/debug-console-filter.view.tsx +0 -78
  126. package/src/browser/view/console/debug-console-model.ts +0 -48
  127. package/src/browser/view/console/debug-console-session.ts +0 -164
  128. package/src/browser/view/console/debug-console-toolbar.view.tsx +0 -28
  129. package/src/browser/view/console/debug-console-tree.model.service.ts +0 -550
  130. package/src/browser/view/console/debug-console.contribution.ts +0 -181
  131. package/src/browser/view/console/debug-console.module.less +0 -373
  132. package/src/browser/view/console/debug-console.service.ts +0 -433
  133. package/src/browser/view/console/debug-console.view.tsx +0 -500
  134. package/src/browser/view/debug-view-model.ts +0 -182
  135. package/src/browser/view/frames/debug-call-stack-frame.view.tsx +0 -224
  136. package/src/browser/view/frames/debug-call-stack-session.view.tsx +0 -244
  137. package/src/browser/view/frames/debug-call-stack-thread.view.tsx +0 -93
  138. package/src/browser/view/frames/debug-call-stack.contribution.ts +0 -88
  139. package/src/browser/view/frames/debug-call-stack.module.less +0 -193
  140. package/src/browser/view/frames/debug-call-stack.operation.tsx +0 -97
  141. package/src/browser/view/frames/debug-call-stack.service.ts +0 -105
  142. package/src/browser/view/frames/debug-call-stack.view.tsx +0 -43
  143. package/src/browser/view/variables/debug-variables-model.ts +0 -38
  144. package/src/browser/view/variables/debug-variables-tree.model.service.ts +0 -467
  145. package/src/browser/view/variables/debug-variables.contribution.ts +0 -244
  146. package/src/browser/view/variables/debug-variables.module.less +0 -149
  147. package/src/browser/view/variables/debug-variables.view.tsx +0 -303
  148. package/src/browser/view/watch/debug-watch-model.ts +0 -38
  149. package/src/browser/view/watch/debug-watch-tree.model.service.ts +0 -567
  150. package/src/browser/view/watch/debug-watch.contribution.ts +0 -167
  151. package/src/browser/view/watch/debug-watch.module.less +0 -189
  152. package/src/browser/view/watch/debug-watch.view.tsx +0 -337
  153. package/src/common/constants.ts +0 -81
  154. package/src/common/debug-breakpoint.ts +0 -43
  155. package/src/common/debug-configuration.ts +0 -68
  156. package/src/common/debug-editor.ts +0 -4
  157. package/src/common/debug-hover.ts +0 -31
  158. package/src/common/debug-model.ts +0 -247
  159. package/src/common/debug-progress.ts +0 -8
  160. package/src/common/debug-schema-updater.ts +0 -1
  161. package/src/common/debug-service.ts +0 -176
  162. package/src/common/debug-session-options.ts +0 -19
  163. package/src/common/debug-session.ts +0 -200
  164. package/src/common/evaluatable-expression.ts +0 -43
  165. package/src/common/index.ts +0 -14
  166. package/src/common/inline-values.ts +0 -77
  167. package/src/common/terminal.ts +0 -163
  168. package/src/common/types.ts +0 -86
  169. package/src/index.ts +0 -1
@@ -1,433 +0,0 @@
1
- import { Injectable, Autowired, Injector, INJECTOR_TOKEN } from '@opensumi/di';
2
- import {
3
- IContextKeyService,
4
- MonacoOverrideServiceRegistry,
5
- ServiceNames,
6
- localize,
7
- StorageProvider,
8
- } from '@opensumi/ide-core-browser';
9
- import { Schemes, URI, CommandRegistry, Emitter, Event, STORAGE_NAMESPACE } from '@opensumi/ide-core-common';
10
- import { EditorCollectionService, IDecorationApplyOptions } from '@opensumi/ide-editor';
11
- import { IEditorDocumentModelService, ICodeEditor, getSimpleEditorOptions } from '@opensumi/ide-editor/lib/browser';
12
- import { MonacoCodeService } from '@opensumi/ide-editor/lib/browser/editor.override';
13
- import { IMainLayoutService } from '@opensumi/ide-main-layout';
14
- import { transparent, editorForeground, IThemeService } from '@opensumi/ide-theme';
15
- import { IHistoryNavigationWidget } from '@opensumi/monaco-editor-core/esm/vs/base/browser/history';
16
- import { HistoryNavigator } from '@opensumi/monaco-editor-core/esm/vs/base/common/history';
17
- import { ITextModel } from '@opensumi/monaco-editor-core/esm/vs/editor/common/model';
18
- import * as monaco from '@opensumi/monaco-editor-core/esm/vs/editor/editor.api';
19
-
20
- import {
21
- DEBUG_CONSOLE_CONTAINER_ID,
22
- IDebugSessionManager,
23
- CONTEXT_IN_DEBUG_MODE_KEY,
24
- DebugState,
25
- } from '../../../common';
26
- import { DebugSessionManager } from '../../debug-session-manager';
27
-
28
- import { DebugContextKey } from './../../contextkeys/debug-contextkey.service';
29
- import { DebugConsoleModelService } from './debug-console-tree.model.service';
30
-
31
- const DECORATION_KEY = 'consoleinputdecoration';
32
- const HISTORY_STORAGE_KEY = 'debug.console.history';
33
- const DEBUG_CONSOLE_DEFAULT_HEIGHT = 18;
34
-
35
- const firstUpperCase = (str: string) => str.replace(/^\S/, (s) => s.toUpperCase());
36
-
37
- const consoleInputMonacoOptions: monaco.editor.IEditorOptions = {
38
- ...getSimpleEditorOptions(),
39
- scrollbar: {
40
- horizontal: 'visible',
41
- vertical: 'hidden',
42
- handleMouseWheel: true,
43
- },
44
- acceptSuggestionOnEnter: 'on',
45
- readOnly: true,
46
- };
47
-
48
- @Injectable()
49
- export class DebugConsoleService implements IHistoryNavigationWidget {
50
- @Autowired(DebugConsoleModelService)
51
- protected readonly debugConsoleModelService: DebugConsoleModelService;
52
-
53
- @Autowired(IMainLayoutService)
54
- protected readonly mainLayoutService: IMainLayoutService;
55
-
56
- @Autowired(IEditorDocumentModelService)
57
- protected readonly documentService: IEditorDocumentModelService;
58
-
59
- @Autowired(EditorCollectionService)
60
- protected readonly editorService: EditorCollectionService;
61
-
62
- @Autowired(CommandRegistry)
63
- protected readonly commands: CommandRegistry;
64
-
65
- @Autowired(IContextKeyService)
66
- protected readonly contextKeyService: IContextKeyService;
67
-
68
- @Autowired(IDebugSessionManager)
69
- protected readonly manager: DebugSessionManager;
70
-
71
- @Autowired(IThemeService)
72
- protected readonly themeService: IThemeService;
73
-
74
- @Autowired(MonacoOverrideServiceRegistry)
75
- private readonly overrideServicesRegistry: MonacoOverrideServiceRegistry;
76
-
77
- @Autowired(StorageProvider)
78
- private readonly storageProvider: StorageProvider;
79
-
80
- @Autowired(INJECTOR_TOKEN)
81
- private readonly injector: Injector;
82
-
83
- private debugContextKey: DebugContextKey;
84
-
85
- protected history: HistoryNavigator<string>;
86
- protected _consoleInputElement: HTMLDivElement | null = null;
87
- protected _updateDisposable: monaco.IDisposable | null = null;
88
- protected _consoleModel: ITextModel;
89
- protected get _isReadonly(): boolean {
90
- const session = this.manager.currentSession;
91
- if (session && session.state !== DebugState.Inactive) {
92
- return false;
93
- }
94
-
95
- return true;
96
- }
97
-
98
- private inputEditor?: ICodeEditor;
99
-
100
- public static keySet = new Set([CONTEXT_IN_DEBUG_MODE_KEY]);
101
-
102
- constructor() {
103
- this.contextKeyService.onDidChangeContext((e) => {
104
- if (e.payload.affectsSome(DebugConsoleService.keySet)) {
105
- const inDebugMode = this.contextKeyService.match(CONTEXT_IN_DEBUG_MODE_KEY);
106
- if (inDebugMode) {
107
- this.updateReadOnly(false);
108
- this.updateInputDecoration();
109
- this.debugContextKey.contextInDdebugMode.set(true);
110
- } else {
111
- this.updateReadOnly(true);
112
- if (this.debugContextKey) {
113
- this.debugContextKey.contextInDdebugMode.set(false);
114
- }
115
- }
116
- }
117
- });
118
- }
119
-
120
- // FIXME: 需要实现新增的属性及事件
121
- element: HTMLElement;
122
- onDidFocus: Event<void>;
123
- onDidBlur: Event<void>;
124
-
125
- private _onConsoleInputValueChange = new Emitter<URI>();
126
- public onConsoleInputValueChange: Event<URI> = this._onConsoleInputValueChange.event;
127
-
128
- private _onInputHeightChange = new Emitter<number>();
129
- public onInputHeightChange: Event<number> = this._onInputHeightChange.event;
130
-
131
- public get isVisible() {
132
- const bottomPanelHandler = this.mainLayoutService.getTabbarHandler(DEBUG_CONSOLE_CONTAINER_ID);
133
- return bottomPanelHandler && bottomPanelHandler.isVisible;
134
- }
135
-
136
- public get consoleModel(): DebugConsoleModelService {
137
- return this.debugConsoleModelService;
138
- }
139
-
140
- public activate() {
141
- const bottomPanelHandler = this.mainLayoutService.getTabbarHandler(DEBUG_CONSOLE_CONTAINER_ID);
142
- if (bottomPanelHandler && !bottomPanelHandler.isVisible) {
143
- bottomPanelHandler.activate();
144
- }
145
- }
146
-
147
- public focusInput(): void {
148
- if (this.inputEditor) {
149
- this.inputEditor.monacoEditor.focus();
150
- }
151
- }
152
-
153
- public async init(e: HTMLDivElement | null) {
154
- if (!e) {
155
- return;
156
- }
157
-
158
- const storage = await this.storageProvider(STORAGE_NAMESPACE.DEBUG);
159
- this.history = new HistoryNavigator(storage.get(HISTORY_STORAGE_KEY, []), 50);
160
-
161
- this._consoleInputElement = e;
162
- this.inputEditor = this.editorService.createCodeEditor(this._consoleInputElement!, {
163
- ...consoleInputMonacoOptions,
164
- });
165
-
166
- this.debugContextKey = this.injector.get(DebugContextKey, [
167
- (this.inputEditor.monacoEditor as any)._contextKeyService,
168
- ]);
169
-
170
- this.registerDecorationType();
171
- await this.createConsoleInput();
172
- this.setMode();
173
- }
174
-
175
- public get contextInDebugRepl() {
176
- return this.debugContextKey.contextInDebugRepl;
177
- }
178
-
179
- public get consoleInputValue() {
180
- return (this._consoleModel && this._consoleModel.getValue()) || '';
181
- }
182
-
183
- public showPreviousValue(): void {
184
- if (!this._isReadonly) {
185
- this.navigateHistory(true);
186
- }
187
- }
188
-
189
- public showNextValue(): void {
190
- if (!this._isReadonly) {
191
- this.navigateHistory(false);
192
- }
193
- }
194
-
195
- public async runExecute(): Promise<void> {
196
- if (!this.inputEditor) {
197
- return;
198
- }
199
-
200
- const editor = this.inputEditor.monacoEditor;
201
- const value = editor.getValue();
202
- await this.consoleModel.execute(value);
203
- this.history.add(value);
204
- editor.setValue('');
205
- }
206
-
207
- private navigateHistory(previous: boolean): void {
208
- const historyInput = previous ? this.history.previous() : this.history.next();
209
- if (historyInput && this.inputEditor && this.inputEditor.monacoEditor) {
210
- const { monacoEditor } = this.inputEditor;
211
- monacoEditor.setValue(historyInput);
212
- monacoEditor.setPosition({ lineNumber: 1, column: historyInput.length + 1 });
213
- }
214
- }
215
-
216
- private get consoleInputUri() {
217
- return new URI('debug/console/input').withScheme(Schemes.walkThroughSnippet);
218
- }
219
-
220
- private async createConsoleInput() {
221
- if (!this.inputEditor?.monacoEditor) {
222
- return;
223
- }
224
-
225
- const { monacoEditor } = this.inputEditor;
226
-
227
- const docModel = await this.documentService.createModelReference(this.consoleInputUri);
228
- const model = docModel.instance.getMonacoModel();
229
- model.updateOptions({ tabSize: 2 });
230
- this._consoleModel = model;
231
- monacoEditor.setModel(model);
232
-
233
- setTimeout(() => {
234
- this.layoutBody();
235
- }, 0);
236
-
237
- monacoEditor.onDidFocusEditorText(() => {
238
- this.contextInDebugRepl.set(true);
239
- this.updateInputDecoration();
240
- });
241
- monacoEditor.onDidBlurEditorText(() => {
242
- this.contextInDebugRepl.set(false);
243
- this.updateInputDecoration();
244
- });
245
- monacoEditor.onDidChangeModelContent(() => {
246
- const lineNum = monacoEditor.getModel()!.getLineCount();
247
- this.layoutBody(lineNum * 18);
248
- });
249
-
250
- this.manager.onDidChangeActiveDebugSession(() => {
251
- this.registerCompletion();
252
- this.setMode();
253
- });
254
-
255
- await this.updateInputDecoration();
256
- }
257
-
258
- private layoutBody(height?: number, width?: number): void {
259
- if (!this.inputEditor) {
260
- return;
261
- }
262
-
263
- const { monacoEditor } = this.inputEditor;
264
-
265
- const h = Math.max(height || DEBUG_CONSOLE_DEFAULT_HEIGHT, monacoEditor.getContentHeight());
266
-
267
- monacoEditor.layout({
268
- width: width || this._consoleInputElement?.offsetWidth!,
269
- height: h,
270
- });
271
-
272
- this._onInputHeightChange.fire(h);
273
- }
274
-
275
- private updateReadOnly(readOnly: boolean): void {
276
- if (this.inputEditor) {
277
- this.inputEditor.monacoEditor.updateOptions({ readOnly });
278
- }
279
- }
280
-
281
- private async updateInputDecoration(): Promise<void> {
282
- if (!this.inputEditor) {
283
- return;
284
- }
285
-
286
- const decorations: IDecorationApplyOptions[] = [];
287
- if (this._isReadonly && this.inputEditor.monacoEditor.hasTextFocus() && !this.inputEditor.monacoEditor.getValue()) {
288
- const transparentForeground = transparent(editorForeground, 0.4)(await this.themeService.getCurrentTheme());
289
- decorations.push({
290
- range: {
291
- startLineNumber: 0,
292
- endLineNumber: 0,
293
- startColumn: 0,
294
- endColumn: 1,
295
- },
296
- renderOptions: {
297
- after: {
298
- contentText: localize('debug.console.input.placeholder'),
299
- color: transparentForeground ? transparentForeground.toString() : undefined,
300
- },
301
- },
302
- });
303
- }
304
-
305
- this.inputEditor.monacoEditor.setDecorationsByType('debug-console-input', DECORATION_KEY, decorations as any[]);
306
- }
307
-
308
- private setMode(): void {
309
- if (!this.inputEditor) {
310
- return;
311
- }
312
-
313
- const session = this.manager.currentSession;
314
- if (!session) {
315
- return;
316
- }
317
-
318
- const model = session.currentEditor();
319
-
320
- if (model) {
321
- this.inputEditor.monacoEditor.getModel()!.setMode(model.getModel()?.getLanguageId()!);
322
- }
323
- }
324
-
325
- private registerDecorationType(): void {
326
- const codeEditorService = this.overrideServicesRegistry.getRegisteredService(
327
- ServiceNames.CODE_EDITOR_SERVICE,
328
- ) as MonacoCodeService;
329
- codeEditorService.registerDecorationType('console-input-decoration', DECORATION_KEY, {});
330
- }
331
-
332
- private registerCompletion(): void {
333
- if (this._updateDisposable) {
334
- this._updateDisposable.dispose();
335
- this._updateDisposable = null;
336
- }
337
-
338
- const session = this.manager.currentSession;
339
- if (!session) {
340
- return;
341
- }
342
-
343
- const model = session.currentEditor();
344
- if (!model) {
345
- return;
346
- }
347
-
348
- this._updateDisposable = monaco.languages.registerCompletionItemProvider(model.getModel()?.getLanguageId()!, {
349
- triggerCharacters: ['.'],
350
- provideCompletionItems: async (model, position, ctx) => {
351
- // 仅在支持自动补全查询的调试器中启用补全逻辑
352
- if (!this.manager.currentSession?.capabilities.supportsCompletionsRequest) {
353
- return;
354
- }
355
- if (model.uri.toString() !== this.consoleInputUri.toString()) {
356
- return null;
357
- }
358
-
359
- const session = this.manager.currentSession;
360
- const { triggerCharacter } = ctx;
361
-
362
- /**
363
- * 代码字符串处理
364
- */
365
- let value = model.getWordAtPosition(position);
366
- if (value && session) {
367
- const { word, startColumn, endColumn } = value;
368
- const res = await session.sendRequest('completions', {
369
- text: word,
370
- column: endColumn,
371
- frameId: session.currentFrame && session.currentFrame.raw.id,
372
- });
373
- return {
374
- suggestions: res.body.targets.map((item) => ({
375
- label: item.label,
376
- insertText: item.text || item.label,
377
- sortText: item.sortText,
378
- kind: monaco.languages.CompletionItemKind[firstUpperCase(item.type || 'property')],
379
- range: {
380
- startLineNumber: position.lineNumber,
381
- endLineNumber: position.lineNumber,
382
- startColumn,
383
- endColumn,
384
- },
385
- })),
386
- } as monaco.languages.CompletionList;
387
- }
388
-
389
- /**
390
- * 特殊字符处理
391
- */
392
- value = model.getWordAtPosition({
393
- lineNumber: position.lineNumber,
394
- column: position.column - 1,
395
- });
396
- if (value && session && triggerCharacter) {
397
- const { word, endColumn } = value;
398
-
399
- const res = await session.sendRequest('completions', {
400
- text: word + triggerCharacter,
401
- column: endColumn + 1,
402
- frameId: session.currentFrame && session.currentFrame.raw.id,
403
- });
404
- return {
405
- suggestions: res.body.targets.map((item) => ({
406
- label: item.label,
407
- insertText: item.text || item.label,
408
- sortText: item.sortText,
409
- kind: monaco.languages.CompletionItemKind[firstUpperCase(item.type || 'property')],
410
- range: {
411
- startLineNumber: position.lineNumber,
412
- endLineNumber: position.lineNumber,
413
- startColumn: endColumn + 1,
414
- endColumn: endColumn + 1,
415
- },
416
- })),
417
- } as monaco.languages.CompletionList;
418
- }
419
-
420
- return null;
421
- },
422
- });
423
- }
424
-
425
- disable() {
426
- if (this._updateDisposable) {
427
- this._updateDisposable.dispose();
428
- this._updateDisposable = null;
429
- }
430
- this.inputEditor?.monacoEditor.setValue('');
431
- this.inputEditor?.monacoEditor.setModel(null);
432
- }
433
- }