@opensumi/ide-debug 2.21.5-rc-1669016550.0 → 2.21.5

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 (159) hide show
  1. package/lib/browser/view/configuration/debug-configuration.module.less +5 -5
  2. package/lib/browser/view/configuration/debug-configuration.view.d.ts.map +1 -1
  3. package/lib/browser/view/configuration/debug-configuration.view.js +1 -1
  4. package/lib/browser/view/configuration/debug-configuration.view.js.map +1 -1
  5. package/lib/browser/view/configuration/debug-toolbar.view.js +2 -2
  6. package/lib/browser/view/configuration/debug-toolbar.view.js.map +1 -1
  7. package/lib/browser/view/console/debug-console.module.less +1 -1
  8. package/lib/browser/view/console/debug-console.view.js +2 -2
  9. package/lib/browser/view/console/debug-console.view.js.map +1 -1
  10. package/lib/browser/view/variables/debug-variables.module.less +1 -1
  11. package/lib/browser/view/variables/debug-variables.view.js +1 -1
  12. package/lib/browser/view/variables/debug-variables.view.js.map +1 -1
  13. package/lib/browser/view/watch/debug-watch.module.less +1 -1
  14. package/lib/browser/view/watch/debug-watch.view.js +1 -1
  15. package/lib/browser/view/watch/debug-watch.view.js.map +1 -1
  16. package/package.json +25 -26
  17. package/src/browser/assets/breakpoint-conditional-disabled.svg +0 -4
  18. package/src/browser/assets/breakpoint-conditional-unverified.svg +0 -4
  19. package/src/browser/assets/breakpoint-conditional.svg +0 -4
  20. package/src/browser/assets/breakpoint-disabled.svg +0 -4
  21. package/src/browser/assets/breakpoint-hint.svg +0 -4
  22. package/src/browser/assets/breakpoint-log-disabled.svg +0 -4
  23. package/src/browser/assets/breakpoint-log-unverified.svg +0 -4
  24. package/src/browser/assets/breakpoint-log.svg +0 -4
  25. package/src/browser/assets/breakpoint-unsupported.svg +0 -4
  26. package/src/browser/assets/breakpoint-unverified.svg +0 -4
  27. package/src/browser/assets/breakpoint.svg +0 -4
  28. package/src/browser/assets/breakpoints-activate-inverse.svg +0 -4
  29. package/src/browser/assets/breakpoints-activate.svg +0 -4
  30. package/src/browser/assets/configure-inverse.svg +0 -4
  31. package/src/browser/assets/configure.svg +0 -4
  32. package/src/browser/assets/continue-inverse.svg +0 -4
  33. package/src/browser/assets/current-and-breakpoint.svg +0 -4
  34. package/src/browser/assets/current-arrow.svg +0 -4
  35. package/src/browser/assets/remove-all-inverse.svg +0 -4
  36. package/src/browser/assets/remove-all.svg +0 -4
  37. package/src/browser/assets/repl-inverse.svg +0 -4
  38. package/src/browser/assets/repl.svg +0 -4
  39. package/src/browser/assets/restart-inverse.svg +0 -4
  40. package/src/browser/assets/stackframe-and-breakpoint.svg +0 -4
  41. package/src/browser/assets/stackframe-arrow.svg +0 -4
  42. package/src/browser/assets/start-inverse.svg +0 -4
  43. package/src/browser/breakpoint/breakpoint-decoration.ts +0 -57
  44. package/src/browser/breakpoint/breakpoint-manager.ts +0 -348
  45. package/src/browser/breakpoint/breakpoint-marker.ts +0 -70
  46. package/src/browser/breakpoint/index.ts +0 -3
  47. package/src/browser/components/debug-action/index.module.less +0 -73
  48. package/src/browser/components/debug-action/index.tsx +0 -40
  49. package/src/browser/components/debug-exception-widget.less +0 -42
  50. package/src/browser/components/floating-click-widget/index.module.less +0 -5
  51. package/src/browser/components/floating-click-widget/index.tsx +0 -21
  52. package/src/browser/components/index.ts +0 -1
  53. package/src/browser/contextkeys/debug-call-stack-item-type-key.ts +0 -4
  54. package/src/browser/contextkeys/debug-contextkey.service.ts +0 -54
  55. package/src/browser/contextkeys/index.ts +0 -1
  56. package/src/browser/debug-ansi-handle.ts +0 -521
  57. package/src/browser/debug-configuration-manager.ts +0 -513
  58. package/src/browser/debug-configuration-model.ts +0 -66
  59. package/src/browser/debug-contribution.ts +0 -904
  60. package/src/browser/debug-exception-widget.tsx +0 -89
  61. package/src/browser/debug-link-detector.ts +0 -234
  62. package/src/browser/debug-memory.ts +0 -220
  63. package/src/browser/debug-preferences.ts +0 -70
  64. package/src/browser/debug-progress.service.ts +0 -122
  65. package/src/browser/debug-schema-updater.ts +0 -67
  66. package/src/browser/debug-service.ts +0 -42
  67. package/src/browser/debug-session-connection.ts +0 -333
  68. package/src/browser/debug-session-contribution.ts +0 -57
  69. package/src/browser/debug-session-manager.ts +0 -622
  70. package/src/browser/debug-session.ts +0 -1179
  71. package/src/browser/debug-style.less +0 -128
  72. package/src/browser/debugUtils.ts +0 -110
  73. package/src/browser/editor/debug-breakpoint-widget.ts +0 -99
  74. package/src/browser/editor/debug-breakpoint-zone-widget.tsx +0 -262
  75. package/src/browser/editor/debug-breakpoint.module.less +0 -31
  76. package/src/browser/editor/debug-editor-contribution.ts +0 -590
  77. package/src/browser/editor/debug-expression-provider.ts +0 -101
  78. package/src/browser/editor/debug-hover-model.ts +0 -38
  79. package/src/browser/editor/debug-hover-source.ts +0 -107
  80. package/src/browser/editor/debug-hover-tree.model.service.ts +0 -332
  81. package/src/browser/editor/debug-hover-widget.tsx +0 -200
  82. package/src/browser/editor/debug-hover.module.less +0 -29
  83. package/src/browser/editor/debug-hover.view.tsx +0 -147
  84. package/src/browser/editor/debug-model-manager.ts +0 -220
  85. package/src/browser/editor/debug-model.ts +0 -853
  86. package/src/browser/editor/debug-run-to-cursor.service.ts +0 -180
  87. package/src/browser/editor/debug-styles.ts +0 -66
  88. package/src/browser/editor/evaluatable-expression.ts +0 -47
  89. package/src/browser/editor/index.ts +0 -6
  90. package/src/browser/index.ts +0 -135
  91. package/src/browser/markers/index.ts +0 -2
  92. package/src/browser/markers/marker-manager.ts +0 -201
  93. package/src/browser/markers/marker.ts +0 -20
  94. package/src/browser/model/debug-source.ts +0 -144
  95. package/src/browser/model/debug-stack-frame.ts +0 -111
  96. package/src/browser/model/debug-thread.ts +0 -186
  97. package/src/browser/model/debug-watch.ts +0 -130
  98. package/src/browser/model/index.ts +0 -4
  99. package/src/browser/preferences/launch-folder-preference-provider.ts +0 -23
  100. package/src/browser/preferences/launch-preferences-contribution.ts +0 -9
  101. package/src/browser/preferences/launch-preferences.ts +0 -16
  102. package/src/browser/tree/debug-console-tree-node.define.tsx +0 -76
  103. package/src/browser/tree/debug-tree-node.define.ts +0 -768
  104. package/src/browser/tree/index.ts +0 -2
  105. package/src/browser/view/breakpoints/debug-breakpoints.module.less +0 -72
  106. package/src/browser/view/breakpoints/debug-breakpoints.service.ts +0 -217
  107. package/src/browser/view/breakpoints/debug-breakpoints.view.tsx +0 -174
  108. package/src/browser/view/configuration/debug-configuration.module.less +0 -110
  109. package/src/browser/view/configuration/debug-configuration.service.ts +0 -170
  110. package/src/browser/view/configuration/debug-configuration.view.tsx +0 -252
  111. package/src/browser/view/configuration/debug-toolbar.service.ts +0 -167
  112. package/src/browser/view/configuration/debug-toolbar.view.tsx +0 -335
  113. package/src/browser/view/console/debug-console-filter.model.ts +0 -49
  114. package/src/browser/view/console/debug-console-filter.service.ts +0 -81
  115. package/src/browser/view/console/debug-console-filter.view.tsx +0 -78
  116. package/src/browser/view/console/debug-console-model.ts +0 -48
  117. package/src/browser/view/console/debug-console-session.ts +0 -164
  118. package/src/browser/view/console/debug-console-toolbar.view.tsx +0 -28
  119. package/src/browser/view/console/debug-console-tree.model.service.ts +0 -550
  120. package/src/browser/view/console/debug-console.contribution.ts +0 -181
  121. package/src/browser/view/console/debug-console.module.less +0 -372
  122. package/src/browser/view/console/debug-console.service.ts +0 -433
  123. package/src/browser/view/console/debug-console.view.tsx +0 -500
  124. package/src/browser/view/debug-view-model.ts +0 -182
  125. package/src/browser/view/frames/debug-call-stack-frame.view.tsx +0 -224
  126. package/src/browser/view/frames/debug-call-stack-session.view.tsx +0 -237
  127. package/src/browser/view/frames/debug-call-stack-thread.view.tsx +0 -93
  128. package/src/browser/view/frames/debug-call-stack.contribution.ts +0 -88
  129. package/src/browser/view/frames/debug-call-stack.module.less +0 -193
  130. package/src/browser/view/frames/debug-call-stack.operation.tsx +0 -97
  131. package/src/browser/view/frames/debug-call-stack.service.ts +0 -105
  132. package/src/browser/view/frames/debug-call-stack.view.tsx +0 -43
  133. package/src/browser/view/variables/debug-variables-model.ts +0 -38
  134. package/src/browser/view/variables/debug-variables-tree.model.service.ts +0 -467
  135. package/src/browser/view/variables/debug-variables.contribution.ts +0 -244
  136. package/src/browser/view/variables/debug-variables.module.less +0 -148
  137. package/src/browser/view/variables/debug-variables.view.tsx +0 -303
  138. package/src/browser/view/watch/debug-watch-model.ts +0 -38
  139. package/src/browser/view/watch/debug-watch-tree.model.service.ts +0 -567
  140. package/src/browser/view/watch/debug-watch.contribution.ts +0 -167
  141. package/src/browser/view/watch/debug-watch.module.less +0 -188
  142. package/src/browser/view/watch/debug-watch.view.tsx +0 -337
  143. package/src/common/constants.ts +0 -81
  144. package/src/common/debug-breakpoint.ts +0 -43
  145. package/src/common/debug-configuration.ts +0 -68
  146. package/src/common/debug-editor.ts +0 -4
  147. package/src/common/debug-hover.ts +0 -31
  148. package/src/common/debug-model.ts +0 -247
  149. package/src/common/debug-progress.ts +0 -8
  150. package/src/common/debug-schema-updater.ts +0 -1
  151. package/src/common/debug-service.ts +0 -176
  152. package/src/common/debug-session-options.ts +0 -19
  153. package/src/common/debug-session.ts +0 -200
  154. package/src/common/evaluatable-expression.ts +0 -43
  155. package/src/common/index.ts +0 -14
  156. package/src/common/inline-values.ts +0 -77
  157. package/src/common/terminal.ts +0 -163
  158. package/src/common/types.ts +0 -86
  159. 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
- }