@opensumi/ide-debug 2.21.9-rc-1671440760.0 → 2.21.9

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