@theia/plugin-ext 1.24.0-next.7 → 1.24.0-next.71

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 (172) hide show
  1. package/lib/common/plugin-api-rpc-model.d.ts +2 -3
  2. package/lib/common/plugin-api-rpc-model.d.ts.map +1 -1
  3. package/lib/common/plugin-api-rpc-model.js.map +1 -1
  4. package/lib/common/plugin-api-rpc.d.ts +40 -4
  5. package/lib/common/plugin-api-rpc.d.ts.map +1 -1
  6. package/lib/common/plugin-api-rpc.js.map +1 -1
  7. package/lib/hosted/browser/hosted-plugin.d.ts.map +1 -1
  8. package/lib/hosted/browser/hosted-plugin.js +7 -6
  9. package/lib/hosted/browser/hosted-plugin.js.map +1 -1
  10. package/lib/hosted/node/hosted-plugin-deployer-handler.d.ts.map +1 -1
  11. package/lib/hosted/node/hosted-plugin-deployer-handler.js +2 -10
  12. package/lib/hosted/node/hosted-plugin-deployer-handler.js.map +1 -1
  13. package/lib/main/browser/comments/comment-glyph-widget.d.ts +1 -2
  14. package/lib/main/browser/comments/comment-glyph-widget.d.ts.map +1 -1
  15. package/lib/main/browser/comments/comment-glyph-widget.js.map +1 -1
  16. package/lib/main/browser/comments/comment-thread-widget.d.ts +1 -2
  17. package/lib/main/browser/comments/comment-thread-widget.d.ts.map +1 -1
  18. package/lib/main/browser/comments/comment-thread-widget.js +1 -0
  19. package/lib/main/browser/comments/comment-thread-widget.js.map +1 -1
  20. package/lib/main/browser/comments/comments-contribution.d.ts +1 -2
  21. package/lib/main/browser/comments/comments-contribution.d.ts.map +1 -1
  22. package/lib/main/browser/comments/comments-contribution.js +1 -0
  23. package/lib/main/browser/comments/comments-contribution.js.map +1 -1
  24. package/lib/main/browser/comments/comments-decorator.d.ts +1 -2
  25. package/lib/main/browser/comments/comments-decorator.d.ts.map +1 -1
  26. package/lib/main/browser/comments/comments-decorator.js.map +1 -1
  27. package/lib/main/browser/custom-editors/custom-editors-main.d.ts +2 -2
  28. package/lib/main/browser/custom-editors/custom-editors-main.d.ts.map +1 -1
  29. package/lib/main/browser/custom-editors/custom-editors-main.js +7 -7
  30. package/lib/main/browser/custom-editors/custom-editors-main.js.map +1 -1
  31. package/lib/main/browser/debug/debug-main.d.ts +5 -2
  32. package/lib/main/browser/debug/debug-main.d.ts.map +1 -1
  33. package/lib/main/browser/debug/debug-main.js +17 -2
  34. package/lib/main/browser/debug/debug-main.js.map +1 -1
  35. package/lib/main/browser/debug/plugin-debug-adapter-contribution.d.ts +9 -0
  36. package/lib/main/browser/debug/plugin-debug-adapter-contribution.d.ts.map +1 -1
  37. package/lib/main/browser/debug/plugin-debug-adapter-contribution.js +9 -0
  38. package/lib/main/browser/debug/plugin-debug-adapter-contribution.js.map +1 -1
  39. package/lib/main/browser/debug/plugin-debug-configuration-provider.d.ts +13 -0
  40. package/lib/main/browser/debug/plugin-debug-configuration-provider.d.ts.map +1 -0
  41. package/lib/main/browser/debug/plugin-debug-configuration-provider.js +39 -0
  42. package/lib/main/browser/debug/plugin-debug-configuration-provider.js.map +1 -0
  43. package/lib/main/browser/debug/plugin-debug-service.d.ts +7 -25
  44. package/lib/main/browser/debug/plugin-debug-service.d.ts.map +1 -1
  45. package/lib/main/browser/debug/plugin-debug-service.js +65 -44
  46. package/lib/main/browser/debug/plugin-debug-service.js.map +1 -1
  47. package/lib/main/browser/documents-main.d.ts +1 -3
  48. package/lib/main/browser/documents-main.d.ts.map +1 -1
  49. package/lib/main/browser/documents-main.js +3 -3
  50. package/lib/main/browser/documents-main.js.map +1 -1
  51. package/lib/main/browser/editor/untitled-resource.d.ts +3 -10
  52. package/lib/main/browser/editor/untitled-resource.d.ts.map +1 -1
  53. package/lib/main/browser/editor/untitled-resource.js +9 -44
  54. package/lib/main/browser/editor/untitled-resource.js.map +1 -1
  55. package/lib/main/browser/editors-and-documents-main.d.ts +1 -1
  56. package/lib/main/browser/editors-and-documents-main.d.ts.map +1 -1
  57. package/lib/main/browser/editors-and-documents-main.js.map +1 -1
  58. package/lib/main/browser/languages-main.d.ts +3 -3
  59. package/lib/main/browser/languages-main.d.ts.map +1 -1
  60. package/lib/main/browser/languages-main.js +14 -11
  61. package/lib/main/browser/languages-main.js.map +1 -1
  62. package/lib/main/browser/main-context.d.ts.map +1 -1
  63. package/lib/main/browser/main-context.js +1 -3
  64. package/lib/main/browser/main-context.js.map +1 -1
  65. package/lib/main/browser/menus/menus-contribution-handler.d.ts.map +1 -1
  66. package/lib/main/browser/menus/menus-contribution-handler.js +14 -17
  67. package/lib/main/browser/menus/menus-contribution-handler.js.map +1 -1
  68. package/lib/main/browser/plugin-contribution-handler.d.ts.map +1 -1
  69. package/lib/main/browser/plugin-contribution-handler.js +4 -2
  70. package/lib/main/browser/plugin-contribution-handler.js.map +1 -1
  71. package/lib/main/browser/plugin-icon-theme-service.d.ts.map +1 -1
  72. package/lib/main/browser/plugin-icon-theme-service.js +4 -2
  73. package/lib/main/browser/plugin-icon-theme-service.js.map +1 -1
  74. package/lib/main/browser/quick-open-main.d.ts +5 -6
  75. package/lib/main/browser/quick-open-main.d.ts.map +1 -1
  76. package/lib/main/browser/quick-open-main.js +16 -17
  77. package/lib/main/browser/quick-open-main.js.map +1 -1
  78. package/lib/main/browser/text-editor-main.d.ts +1 -1
  79. package/lib/main/browser/text-editor-main.d.ts.map +1 -1
  80. package/lib/main/browser/text-editor-main.js +11 -9
  81. package/lib/main/browser/text-editor-main.js.map +1 -1
  82. package/lib/main/browser/text-editors-main.d.ts +2 -1
  83. package/lib/main/browser/text-editors-main.d.ts.map +1 -1
  84. package/lib/main/browser/text-editors-main.js +4 -2
  85. package/lib/main/browser/text-editors-main.js.map +1 -1
  86. package/lib/main/browser/view/plugin-tree-view-node-label-provider.d.ts.map +1 -1
  87. package/lib/main/browser/view/plugin-tree-view-node-label-provider.js +2 -1
  88. package/lib/main/browser/view/plugin-tree-view-node-label-provider.js.map +1 -1
  89. package/lib/main/browser/view/plugin-view-registry.js +3 -2
  90. package/lib/main/browser/view/plugin-view-registry.js.map +1 -1
  91. package/lib/main/browser/view/tree-view-widget.d.ts +5 -0
  92. package/lib/main/browser/view/tree-view-widget.d.ts.map +1 -1
  93. package/lib/main/browser/view/tree-view-widget.js +19 -1
  94. package/lib/main/browser/view/tree-view-widget.js.map +1 -1
  95. package/lib/main/browser/webview/webview-environment.d.ts +1 -1
  96. package/lib/main/browser/webview/webview-environment.d.ts.map +1 -1
  97. package/lib/main/browser/webview/webview-environment.js +7 -2
  98. package/lib/main/browser/webview/webview-environment.js.map +1 -1
  99. package/lib/main/browser/webview/webview.d.ts.map +1 -1
  100. package/lib/main/browser/webview/webview.js +4 -0
  101. package/lib/main/browser/webview/webview.js.map +1 -1
  102. package/lib/plugin/languages/completion.d.ts.map +1 -1
  103. package/lib/plugin/languages/completion.js +3 -2
  104. package/lib/plugin/languages/completion.js.map +1 -1
  105. package/lib/plugin/languages/selection-range.d.ts +2 -2
  106. package/lib/plugin/languages/selection-range.d.ts.map +1 -1
  107. package/lib/plugin/languages/selection-range.js.map +1 -1
  108. package/lib/plugin/node/debug/debug.d.ts +9 -5
  109. package/lib/plugin/node/debug/debug.d.ts.map +1 -1
  110. package/lib/plugin/node/debug/debug.js +79 -64
  111. package/lib/plugin/node/debug/debug.js.map +1 -1
  112. package/lib/plugin/output-channel/output-channel-item.d.ts +1 -0
  113. package/lib/plugin/output-channel/output-channel-item.d.ts.map +1 -1
  114. package/lib/plugin/output-channel/output-channel-item.js +5 -0
  115. package/lib/plugin/output-channel/output-channel-item.js.map +1 -1
  116. package/lib/plugin/plugin-context.d.ts.map +1 -1
  117. package/lib/plugin/plugin-context.js +1 -0
  118. package/lib/plugin/plugin-context.js.map +1 -1
  119. package/lib/plugin/quick-open.d.ts +4 -6
  120. package/lib/plugin/quick-open.d.ts.map +1 -1
  121. package/lib/plugin/quick-open.js +16 -11
  122. package/lib/plugin/quick-open.js.map +1 -1
  123. package/lib/plugin/type-converters.d.ts.map +1 -1
  124. package/lib/plugin/type-converters.js +16 -20
  125. package/lib/plugin/type-converters.js.map +1 -1
  126. package/lib/plugin/types-impl.d.ts +4 -1
  127. package/lib/plugin/types-impl.d.ts.map +1 -1
  128. package/lib/plugin/types-impl.js +7 -2
  129. package/lib/plugin/types-impl.js.map +1 -1
  130. package/lib/plugin/webviews.js +3 -3
  131. package/lib/plugin/webviews.js.map +1 -1
  132. package/package.json +24 -23
  133. package/src/common/plugin-api-rpc-model.ts +2 -1
  134. package/src/common/plugin-api-rpc.ts +48 -4
  135. package/src/hosted/browser/hosted-plugin.ts +8 -6
  136. package/src/hosted/node/hosted-plugin-deployer-handler.ts +2 -10
  137. package/src/main/browser/comments/comment-glyph-widget.ts +1 -0
  138. package/src/main/browser/comments/comment-thread-widget.tsx +1 -0
  139. package/src/main/browser/comments/comments-contribution.ts +1 -0
  140. package/src/main/browser/comments/comments-decorator.ts +1 -0
  141. package/src/main/browser/custom-editors/custom-editors-main.ts +9 -9
  142. package/src/main/browser/debug/debug-main.ts +28 -4
  143. package/src/main/browser/debug/plugin-debug-adapter-contribution.ts +9 -0
  144. package/src/main/browser/debug/plugin-debug-configuration-provider.ts +57 -0
  145. package/src/main/browser/debug/plugin-debug-service.ts +80 -63
  146. package/src/main/browser/documents-main.ts +2 -3
  147. package/src/main/browser/editor/untitled-resource.ts +11 -45
  148. package/src/main/browser/editors-and-documents-main.ts +1 -0
  149. package/src/main/browser/languages-main.ts +59 -40
  150. package/src/main/browser/main-context.ts +1 -3
  151. package/src/main/browser/menus/menus-contribution-handler.ts +18 -19
  152. package/src/main/browser/plugin-contribution-handler.ts +4 -2
  153. package/src/main/browser/plugin-icon-theme-service.ts +4 -2
  154. package/src/main/browser/quick-open-main.ts +24 -24
  155. package/src/main/browser/style/tree.css +4 -0
  156. package/src/main/browser/text-editor-main.ts +12 -14
  157. package/src/main/browser/text-editors-main.ts +6 -3
  158. package/src/main/browser/view/plugin-tree-view-node-label-provider.ts +2 -1
  159. package/src/main/browser/view/plugin-view-registry.ts +3 -3
  160. package/src/main/browser/view/tree-view-widget.tsx +21 -3
  161. package/src/main/browser/webview/webview-environment.ts +8 -2
  162. package/src/main/browser/webview/webview.ts +4 -0
  163. package/src/plugin/languages/completion.ts +4 -2
  164. package/src/plugin/languages/selection-range.ts +2 -1
  165. package/src/plugin/node/debug/debug.ts +106 -66
  166. package/src/plugin/output-channel/output-channel-item.ts +6 -0
  167. package/src/plugin/plugin-context.ts +4 -2
  168. package/src/plugin/quick-open.ts +20 -15
  169. package/src/plugin/type-converters.ts +18 -25
  170. package/src/plugin/types-impl.ts +6 -3
  171. package/src/plugin/webviews.ts +3 -3
  172. package/src/typings/monaco/index.d.ts +0 -20
@@ -57,6 +57,17 @@ import { ObjectIdentifier } from '../../common/object-identifier';
57
57
  import { mixin } from '../../common/types';
58
58
  import { relative } from '../../common/paths-util';
59
59
  import { decodeSemanticTokensDto } from '../../common/semantic-tokens-dto';
60
+ import * as monaco from '@theia/monaco-editor-core';
61
+ import { ExtensionIdentifier } from '@theia/monaco-editor-core/esm/vs/platform/extensions/common/extensions';
62
+ import { StandaloneServices } from '@theia/monaco-editor-core/esm/vs/editor/standalone/browser/standaloneServices';
63
+ import { IMarkerService } from '@theia/monaco-editor-core/esm/vs/platform/markers/common/markers';
64
+ import * as MonacoLanguageSelector from '@theia/monaco-editor-core/esm/vs/editor/common/languageSelector';
65
+ import * as MonacoPath from '@theia/monaco-editor-core/esm/vs/base/common/path';
66
+ import { IRelativePattern } from '@theia/monaco-editor-core/esm/vs/base/common/glob';
67
+
68
+ interface RegistrationFunction<T> {
69
+ (languageId: MonacoLanguageSelector.LanguageSelector, service: T): Disposable;
70
+ }
60
71
 
61
72
  @injectable()
62
73
  export class LanguagesMainImpl implements LanguagesMain, Disposable {
@@ -126,13 +137,14 @@ export class LanguagesMainImpl implements LanguagesMain, Disposable {
126
137
  }
127
138
 
128
139
  $registerCompletionSupport(handle: number, pluginInfo: PluginInfo, selector: SerializedDocumentFilter[], triggerCharacters: string[], supportsResolveDetails: boolean): void {
129
- this.register(handle, monaco.modes.CompletionProviderRegistry.register(this.toLanguageSelector(selector), {
130
- triggerCharacters,
131
- provideCompletionItems: (model, position, context, token) => this.provideCompletionItems(handle, model, position, context, token),
132
- resolveCompletionItem: supportsResolveDetails
133
- ? (suggestion, token) => Promise.resolve(this.resolveCompletionItem(handle, suggestion, token))
134
- : undefined
135
- }));
140
+ this.register(handle,
141
+ (monaco.languages.registerCompletionItemProvider as RegistrationFunction<monaco.languages.CompletionItemProvider>)(this.toLanguageSelector(selector), {
142
+ triggerCharacters,
143
+ provideCompletionItems: (model, position, context, token) => this.provideCompletionItems(handle, model, position, context, token),
144
+ resolveCompletionItem: supportsResolveDetails
145
+ ? (suggestion, token) => Promise.resolve(this.resolveCompletionItem(handle, suggestion, token))
146
+ : undefined
147
+ }));
136
148
  }
137
149
 
138
150
  protected provideCompletionItems(handle: number, model: monaco.editor.ITextModel, position: monaco.Position,
@@ -165,19 +177,19 @@ export class LanguagesMainImpl implements LanguagesMain, Disposable {
165
177
  $registerDefinitionProvider(handle: number, pluginInfo: PluginInfo, selector: SerializedDocumentFilter[]): void {
166
178
  const languageSelector = this.toLanguageSelector(selector);
167
179
  const definitionProvider = this.createDefinitionProvider(handle);
168
- this.register(handle, monaco.languages.registerDefinitionProvider(languageSelector, definitionProvider));
180
+ this.register(handle, (monaco.languages.registerDefinitionProvider as RegistrationFunction<monaco.languages.DefinitionProvider>)(languageSelector, definitionProvider));
169
181
  }
170
182
 
171
183
  $registerDeclarationProvider(handle: number, pluginInfo: PluginInfo, selector: SerializedDocumentFilter[]): void {
172
184
  const languageSelector = this.toLanguageSelector(selector);
173
185
  const declarationProvider = this.createDeclarationProvider(handle);
174
- this.register(handle, monaco.languages.registerDeclarationProvider(languageSelector, declarationProvider));
186
+ this.register(handle, (monaco.languages.registerDeclarationProvider as RegistrationFunction<monaco.languages.DeclarationProvider>)(languageSelector, declarationProvider));
175
187
  }
176
188
 
177
189
  $registerReferenceProvider(handle: number, pluginInfo: PluginInfo, selector: SerializedDocumentFilter[]): void {
178
190
  const languageSelector = this.toLanguageSelector(selector);
179
191
  const referenceProvider = this.createReferenceProvider(handle);
180
- this.register(handle, monaco.languages.registerReferenceProvider(languageSelector, referenceProvider));
192
+ this.register(handle, (monaco.languages.registerReferenceProvider as RegistrationFunction<monaco.languages.ReferenceProvider>)(languageSelector, referenceProvider));
181
193
  }
182
194
 
183
195
  protected createReferenceProvider(handle: number): monaco.languages.ReferenceProvider {
@@ -208,7 +220,8 @@ export class LanguagesMainImpl implements LanguagesMain, Disposable {
208
220
  $registerSignatureHelpProvider(handle: number, pluginInfo: PluginInfo, selector: SerializedDocumentFilter[], metadata: theia.SignatureHelpProviderMetadata): void {
209
221
  const languageSelector = this.toLanguageSelector(selector);
210
222
  const signatureHelpProvider = this.createSignatureHelpProvider(handle, metadata);
211
- this.register(handle, monaco.languages.registerSignatureHelpProvider(languageSelector, signatureHelpProvider));
223
+ this.register(handle, (monaco.languages.registerSignatureHelpProvider as RegistrationFunction<monaco.languages.SignatureHelpProvider>)
224
+ (languageSelector, signatureHelpProvider));
212
225
  }
213
226
 
214
227
  $clearDiagnostics(id: string): void {
@@ -227,7 +240,8 @@ export class LanguagesMainImpl implements LanguagesMain, Disposable {
227
240
  $registerImplementationProvider(handle: number, pluginInfo: PluginInfo, selector: SerializedDocumentFilter[]): void {
228
241
  const languageSelector = this.toLanguageSelector(selector);
229
242
  const implementationProvider = this.createImplementationProvider(handle);
230
- this.register(handle, monaco.languages.registerImplementationProvider(languageSelector, implementationProvider));
243
+ this.register(handle, (monaco.languages.registerImplementationProvider as RegistrationFunction<monaco.languages.ImplementationProvider>)
244
+ (languageSelector, implementationProvider));
231
245
  }
232
246
 
233
247
  protected createImplementationProvider(handle: number): monaco.languages.ImplementationProvider {
@@ -263,7 +277,8 @@ export class LanguagesMainImpl implements LanguagesMain, Disposable {
263
277
  $registerTypeDefinitionProvider(handle: number, pluginInfo: PluginInfo, selector: SerializedDocumentFilter[]): void {
264
278
  const languageSelector = this.toLanguageSelector(selector);
265
279
  const typeDefinitionProvider = this.createTypeDefinitionProvider(handle);
266
- this.register(handle, monaco.languages.registerTypeDefinitionProvider(languageSelector, typeDefinitionProvider));
280
+ this.register(handle, (monaco.languages.registerTypeDefinitionProvider as RegistrationFunction<monaco.languages.TypeDefinitionProvider>)
281
+ (languageSelector, typeDefinitionProvider));
267
282
  }
268
283
 
269
284
  protected createTypeDefinitionProvider(handle: number): monaco.languages.TypeDefinitionProvider {
@@ -299,7 +314,7 @@ export class LanguagesMainImpl implements LanguagesMain, Disposable {
299
314
  $registerHoverProvider(handle: number, pluginInfo: PluginInfo, selector: SerializedDocumentFilter[]): void {
300
315
  const languageSelector = this.toLanguageSelector(selector);
301
316
  const hoverProvider = this.createHoverProvider(handle);
302
- this.register(handle, monaco.languages.registerHoverProvider(languageSelector, hoverProvider));
317
+ this.register(handle, (monaco.languages.registerHoverProvider as RegistrationFunction<monaco.languages.HoverProvider>)(languageSelector, hoverProvider));
303
318
  }
304
319
 
305
320
  protected createHoverProvider(handle: number): monaco.languages.HoverProvider {
@@ -316,7 +331,8 @@ export class LanguagesMainImpl implements LanguagesMain, Disposable {
316
331
  $registerDocumentHighlightProvider(handle: number, pluginInfo: PluginInfo, selector: SerializedDocumentFilter[]): void {
317
332
  const languageSelector = this.toLanguageSelector(selector);
318
333
  const documentHighlightProvider = this.createDocumentHighlightProvider(handle);
319
- this.register(handle, monaco.languages.registerDocumentHighlightProvider(languageSelector, documentHighlightProvider));
334
+ this.register(handle, (monaco.languages.registerDocumentHighlightProvider as RegistrationFunction<monaco.languages.DocumentHighlightProvider>)
335
+ (languageSelector, documentHighlightProvider));
320
336
  }
321
337
 
322
338
  protected createDocumentHighlightProvider(handle: number): monaco.languages.DocumentHighlightProvider {
@@ -371,7 +387,7 @@ export class LanguagesMainImpl implements LanguagesMain, Disposable {
371
387
  $registerDocumentLinkProvider(handle: number, pluginInfo: PluginInfo, selector: SerializedDocumentFilter[]): void {
372
388
  const languageSelector = this.toLanguageSelector(selector);
373
389
  const linkProvider = this.createLinkProvider(handle);
374
- this.register(handle, monaco.languages.registerLinkProvider(languageSelector, linkProvider));
390
+ this.register(handle, (monaco.languages.registerLinkProvider as RegistrationFunction<monaco.languages.LinkProvider>)(languageSelector, linkProvider));
375
391
  }
376
392
 
377
393
  protected createLinkProvider(handle: number): monaco.languages.LinkProvider {
@@ -420,7 +436,7 @@ export class LanguagesMainImpl implements LanguagesMain, Disposable {
420
436
  lensProvider.onDidChange = emitter.event;
421
437
  }
422
438
 
423
- this.register(handle, monaco.languages.registerCodeLensProvider(languageSelector, lensProvider));
439
+ this.register(handle, (monaco.languages.registerCodeLensProvider as RegistrationFunction<monaco.languages.CodeLensProvider>)(languageSelector, lensProvider));
424
440
  }
425
441
 
426
442
  protected createCodeLensProvider(handle: number): monaco.languages.CodeLensProvider {
@@ -462,7 +478,7 @@ export class LanguagesMainImpl implements LanguagesMain, Disposable {
462
478
  $registerOutlineSupport(handle: number, pluginInfo: PluginInfo, selector: SerializedDocumentFilter[], displayName?: string): void {
463
479
  const languageSelector = this.toLanguageSelector(selector);
464
480
  const symbolProvider = this.createDocumentSymbolProvider(handle, displayName);
465
- this.register(handle, monaco.modes.DocumentSymbolProviderRegistry.register(languageSelector, symbolProvider));
481
+ this.register(handle, (monaco.languages.registerDocumentSymbolProvider as RegistrationFunction<monaco.languages.DocumentSymbolProvider>)(languageSelector, symbolProvider));
466
482
  }
467
483
 
468
484
  protected createDocumentSymbolProvider(handle: number, displayName?: string): monaco.languages.DocumentSymbolProvider {
@@ -565,14 +581,13 @@ export class LanguagesMainImpl implements LanguagesMain, Disposable {
565
581
  $registerDocumentFormattingSupport(handle: number, pluginInfo: PluginInfo, selector: SerializedDocumentFilter[]): void {
566
582
  const languageSelector = this.toLanguageSelector(selector);
567
583
  const documentFormattingEditSupport = this.createDocumentFormattingSupport(handle, pluginInfo);
568
- this.register(handle, monaco.languages.registerDocumentFormattingEditProvider(languageSelector, documentFormattingEditSupport));
584
+ this.register(handle, (monaco.languages.registerDocumentFormattingEditProvider as RegistrationFunction<monaco.languages.DocumentFormattingEditProvider>)
585
+ (languageSelector, documentFormattingEditSupport));
569
586
  }
570
587
 
571
588
  createDocumentFormattingSupport(handle: number, pluginInfo: PluginInfo): monaco.languages.DocumentFormattingEditProvider {
572
- const provider: monaco.languages.DocumentFormattingEditProvider = {
573
- extensionId: {
574
- value: pluginInfo.id
575
- },
589
+ const provider: monaco.languages.DocumentFormattingEditProvider & { extensionId: ExtensionIdentifier } = {
590
+ extensionId: new ExtensionIdentifier(pluginInfo.id),
576
591
  displayName: pluginInfo.name,
577
592
  provideDocumentFormattingEdits: (model, options, token) =>
578
593
  this.provideDocumentFormattingEdits(handle, model, options, token)
@@ -589,14 +604,13 @@ export class LanguagesMainImpl implements LanguagesMain, Disposable {
589
604
  $registerRangeFormattingSupport(handle: number, pluginInfo: PluginInfo, selector: SerializedDocumentFilter[]): void {
590
605
  const languageSelector = this.toLanguageSelector(selector);
591
606
  const rangeFormattingEditProvider = this.createRangeFormattingSupport(handle, pluginInfo);
592
- this.register(handle, monaco.languages.registerDocumentRangeFormattingEditProvider(languageSelector, rangeFormattingEditProvider));
607
+ this.register(handle, (monaco.languages.registerDocumentRangeFormattingEditProvider as RegistrationFunction<monaco.languages.DocumentRangeFormattingEditProvider>)
608
+ (languageSelector, rangeFormattingEditProvider));
593
609
  }
594
610
 
595
611
  createRangeFormattingSupport(handle: number, pluginInfo: PluginInfo): monaco.languages.DocumentRangeFormattingEditProvider {
596
- const provider: monaco.languages.DocumentRangeFormattingEditProvider = {
597
- extensionId: {
598
- value: pluginInfo.id
599
- },
612
+ const provider: monaco.languages.DocumentRangeFormattingEditProvider & { extensionId: ExtensionIdentifier } = {
613
+ extensionId: new ExtensionIdentifier(pluginInfo.id),
600
614
  displayName: pluginInfo.name,
601
615
  provideDocumentRangeFormattingEdits: (model, range: Range, options, token) =>
602
616
  this.provideDocumentRangeFormattingEdits(handle, model, range, options, token)
@@ -613,7 +627,8 @@ export class LanguagesMainImpl implements LanguagesMain, Disposable {
613
627
  $registerOnTypeFormattingProvider(handle: number, pluginInfo: PluginInfo, selector: SerializedDocumentFilter[], autoFormatTriggerCharacters: string[]): void {
614
628
  const languageSelector = this.toLanguageSelector(selector);
615
629
  const onTypeFormattingProvider = this.createOnTypeFormattingProvider(handle, autoFormatTriggerCharacters);
616
- this.register(handle, monaco.languages.registerOnTypeFormattingEditProvider(languageSelector, onTypeFormattingProvider));
630
+ this.register(handle, (monaco.languages.registerOnTypeFormattingEditProvider as RegistrationFunction<monaco.languages.OnTypeFormattingEditProvider>)
631
+ (languageSelector, onTypeFormattingProvider));
617
632
  }
618
633
 
619
634
  protected createOnTypeFormattingProvider(
@@ -634,7 +649,7 @@ export class LanguagesMainImpl implements LanguagesMain, Disposable {
634
649
  $registerFoldingRangeProvider(handle: number, pluginInfo: PluginInfo, selector: SerializedDocumentFilter[]): void {
635
650
  const languageSelector = this.toLanguageSelector(selector);
636
651
  const provider = this.createFoldingRangeProvider(handle);
637
- this.register(handle, monaco.languages.registerFoldingRangeProvider(languageSelector, provider));
652
+ this.register(handle, (monaco.languages.registerFoldingRangeProvider as RegistrationFunction<monaco.languages.FoldingRangeProvider>)(languageSelector, provider));
638
653
  }
639
654
 
640
655
  createFoldingRangeProvider(handle: number): monaco.languages.FoldingRangeProvider {
@@ -651,7 +666,7 @@ export class LanguagesMainImpl implements LanguagesMain, Disposable {
651
666
  $registerSelectionRangeProvider(handle: number, pluginInfo: PluginInfo, selector: SerializedDocumentFilter[]): void {
652
667
  const languageSelector = this.toLanguageSelector(selector);
653
668
  const provider = this.createSelectionRangeProvider(handle);
654
- this.register(handle, monaco.languages.registerSelectionRangeProvider(languageSelector, provider));
669
+ this.register(handle, (monaco.languages.registerSelectionRangeProvider as RegistrationFunction<monaco.languages.SelectionRangeProvider>)(languageSelector, provider));
655
670
  }
656
671
 
657
672
  protected createSelectionRangeProvider(handle: number): monaco.languages.SelectionRangeProvider {
@@ -668,7 +683,7 @@ export class LanguagesMainImpl implements LanguagesMain, Disposable {
668
683
  $registerDocumentColorProvider(handle: number, pluginInfo: PluginInfo, selector: SerializedDocumentFilter[]): void {
669
684
  const languageSelector = this.toLanguageSelector(selector);
670
685
  const colorProvider = this.createColorProvider(handle);
671
- this.register(handle, monaco.languages.registerColorProvider(languageSelector, colorProvider));
686
+ this.register(handle, (monaco.languages.registerColorProvider as RegistrationFunction<monaco.languages.DocumentColorProvider>)(languageSelector, colorProvider));
672
687
  }
673
688
 
674
689
  createColorProvider(handle: number): monaco.languages.DocumentColorProvider {
@@ -718,7 +733,9 @@ export class LanguagesMainImpl implements LanguagesMain, Disposable {
718
733
  const quickFixProvider = {
719
734
  provideCodeActions: (model: monaco.editor.ITextModel, range: monaco.Range,
720
735
  context: monaco.languages.CodeActionContext, token: monaco.CancellationToken): monaco.languages.CodeActionList | Promise<monaco.languages.CodeActionList> => {
721
- const markers = monaco.services.StaticServices.markerService.get().read({ resource: model.uri }).filter(m => monaco.Range.areIntersectingOrTouching(m, range));
736
+ const markers = StandaloneServices.get(IMarkerService)
737
+ .read({ resource: model.uri })
738
+ .filter(m => monaco.Range.areIntersectingOrTouching(m, range)) as monaco.editor.IMarkerData[];
722
739
  return this.provideCodeActions(handle, model, range, { markers, only: context.only }, token);
723
740
  },
724
741
  resolveCodeAction: (codeAction: monaco.languages.CodeAction, token: monaco.CancellationToken): Promise<monaco.languages.CodeAction> =>
@@ -726,7 +743,7 @@ export class LanguagesMainImpl implements LanguagesMain, Disposable {
726
743
  providedCodeActionKinds,
727
744
  documentation
728
745
  };
729
- this.register(handle, monaco.modes.CodeActionProviderRegistry.register(languageSelector, quickFixProvider));
746
+ this.register(handle, (monaco.languages.registerCodeActionProvider as RegistrationFunction<monaco.languages.CodeActionProvider>)(languageSelector, quickFixProvider));
730
747
  }
731
748
 
732
749
  protected async provideCodeActions(handle: number, model: monaco.editor.ITextModel,
@@ -757,7 +774,7 @@ export class LanguagesMainImpl implements LanguagesMain, Disposable {
757
774
  $registerRenameProvider(handle: number, pluginInfo: PluginInfo, selector: SerializedDocumentFilter[], supportsResolveLocation: boolean): void {
758
775
  const languageSelector = this.toLanguageSelector(selector);
759
776
  const renameProvider = this.createRenameProvider(handle, supportsResolveLocation);
760
- this.register(handle, monaco.languages.registerRenameProvider(languageSelector, renameProvider));
777
+ this.register(handle, (monaco.languages.registerRenameProvider as RegistrationFunction<monaco.languages.RenameProvider>)(languageSelector, renameProvider));
761
778
  }
762
779
 
763
780
  protected createRenameProvider(handle: number, supportsResolveLocation: boolean): monaco.languages.RenameProvider {
@@ -832,7 +849,8 @@ export class LanguagesMainImpl implements LanguagesMain, Disposable {
832
849
  event = emitter.event;
833
850
  }
834
851
  const provider = this.createDocumentSemanticTokensProvider(handle, legend, event);
835
- this.register(handle, monaco.languages.registerDocumentSemanticTokensProvider(languageSelector, provider));
852
+ this.register(handle, (monaco.languages.registerDocumentSemanticTokensProvider as RegistrationFunction<monaco.languages.DocumentSemanticTokensProvider>)
853
+ (languageSelector, provider));
836
854
  }
837
855
 
838
856
  protected createDocumentSemanticTokensProvider(handle: number, legend: theia.SemanticTokensLegend, event?: Event<void>): monaco.languages.DocumentSemanticTokensProvider {
@@ -877,7 +895,8 @@ export class LanguagesMainImpl implements LanguagesMain, Disposable {
877
895
  $registerDocumentRangeSemanticTokensProvider(handle: number, pluginInfo: PluginInfo, selector: SerializedDocumentFilter[], legend: theia.SemanticTokensLegend): void {
878
896
  const languageSelector = this.toLanguageSelector(selector);
879
897
  const provider = this.createDocumentRangeSemanticTokensProvider(handle, legend);
880
- this.register(handle, monaco.languages.registerDocumentRangeSemanticTokensProvider(languageSelector, provider));
898
+ this.register(handle, (monaco.languages.registerDocumentRangeSemanticTokensProvider as RegistrationFunction<monaco.languages.DocumentRangeSemanticTokensProvider>)
899
+ (languageSelector, provider));
881
900
  }
882
901
 
883
902
  protected createDocumentRangeSemanticTokensProvider(handle: number, legend: theia.SemanticTokensLegend): monaco.languages.DocumentRangeSemanticTokensProvider {
@@ -905,14 +924,14 @@ export class LanguagesMainImpl implements LanguagesMain, Disposable {
905
924
 
906
925
  // --- suggest
907
926
 
908
- protected toLanguageSelector(filters: SerializedDocumentFilter[]): monaco.modes.LanguageSelector & LanguageSelector {
927
+ protected toLanguageSelector(filters: SerializedDocumentFilter[]): MonacoLanguageSelector.LanguageSelector & LanguageSelector {
909
928
  return filters.map(filter => {
910
- let pattern: string | (monaco.modes.IRelativePattern & RelativePattern) | undefined;
929
+ let pattern: string | (IRelativePattern & RelativePattern) | undefined;
911
930
  if (typeof filter.pattern === 'string') {
912
931
  pattern = filter.pattern;
913
932
  } else if (filter.pattern) {
914
933
  pattern = {
915
- base: monaco.path.normalize(filter.pattern.base),
934
+ base: MonacoPath.normalize(filter.pattern.base),
916
935
  pattern: filter.pattern.pattern,
917
936
  pathToRelative: relative
918
937
  };
@@ -47,7 +47,6 @@ import { ApplicationShell } from '@theia/core/lib/browser/shell/application-shel
47
47
  import { MonacoBulkEditService } from '@theia/monaco/lib/browser/monaco-bulk-edit-service';
48
48
  import { MonacoEditorService } from '@theia/monaco/lib/browser/monaco-editor-service';
49
49
  import { UntitledResourceResolver } from './editor/untitled-resource';
50
- import { FileResourceResolver } from '@theia/filesystem/lib/browser';
51
50
  import { MainFileSystemEventService } from './main-file-system-event-service';
52
51
  import { LabelServiceMainImpl } from './label-service-main';
53
52
  import { TimelineMainImpl } from './timeline-main';
@@ -87,8 +86,7 @@ export function setUpPluginApi(rpc: RPCProtocol, container: interfaces.Container
87
86
  const openerService = container.get<OpenerService>(OpenerService);
88
87
  const shell = container.get(ApplicationShell);
89
88
  const untitledResourceResolver = container.get(UntitledResourceResolver);
90
- const fileResourceResolver = container.get(FileResourceResolver);
91
- const documentsMain = new DocumentsMainImpl(editorsAndDocuments, modelService, rpc, editorManager, openerService, shell, untitledResourceResolver, fileResourceResolver);
89
+ const documentsMain = new DocumentsMainImpl(editorsAndDocuments, modelService, rpc, editorManager, openerService, shell, untitledResourceResolver);
92
90
  rpc.set(PLUGIN_RPC_CONTEXT.DOCUMENTS_MAIN, documentsMain);
93
91
 
94
92
  const bulkEditService = container.get(MonacoBulkEditService);
@@ -518,13 +518,26 @@ export class MenusContributionPointHandler {
518
518
  }
519
519
  const toDispose = new DisposableCollection();
520
520
  const commandId = this.createSyntheticCommandId(menu.command, { prefix: '__plugin.menu.action.' });
521
+ const altId = menu.alt && this.createSyntheticCommandId(menu.alt, { prefix: '__plugin.menu.action.' });
522
+
523
+ const inline = Boolean(menu.group && /^inline/.test(menu.group));
524
+ const [group, order = undefined] = (menu.group || '_').split('@');
525
+
521
526
  const command: Command = { id: commandId };
527
+ const action: MenuAction = { commandId, alt: altId, order, when: menu.when };
528
+
522
529
  toDispose.push(this.commands.registerCommand(command, handler(menu.command)));
523
530
  toDispose.push(this.quickCommandService?.pushCommandContext(commandId, 'false'));
531
+ toDispose.push(this.menuRegistry.registerMenuAction(inline ? menuPath : [...menuPath, ...group.split('/')], action));
532
+ toDispose.push(this.onDidRegisterCommand(menu.command, pluginCommand => {
533
+ command.category = pluginCommand.category;
534
+ command.label = pluginCommand.label;
535
+ if (inline) {
536
+ command.iconClass = pluginCommand.iconClass;
537
+ }
538
+ }));
524
539
 
525
- let altId: string | undefined;
526
- if (menu.alt) {
527
- altId = this.createSyntheticCommandId(menu.alt, { prefix: '__plugin.menu.action.' });
540
+ if (menu.alt && altId) {
528
541
  const alt: Command = { id: altId };
529
542
  toDispose.push(this.commands.registerCommand(alt, handler(menu.alt)));
530
543
  toDispose.push(this.quickCommandService?.pushCommandContext(altId, 'false'));
@@ -537,13 +550,9 @@ export class MenusContributionPointHandler {
537
550
  }));
538
551
  }
539
552
 
540
- const { when } = menu;
541
- const [group, order = undefined] = (menu.group || '_').split('@');
542
- const action: MenuAction = { commandId, alt: altId, order, when };
543
-
544
553
  // Register a submenu if the group is in format `<submenu group>/<submenu name>/<submenu order>.../<menu group>`
545
- if (group!.indexOf('/') !== -1) {
546
- const groupSplit = group!.split('/');
554
+ if (group.includes('/')) {
555
+ const groupSplit = group.split('/');
547
556
  const orderSplit = (menu.submenusOrder || '').split('/');
548
557
  const paths: string[] = [];
549
558
  for (let i = 0, j = 0; i < groupSplit.length - 1; i += 2, j += 1) {
@@ -554,17 +563,7 @@ export class MenusContributionPointHandler {
554
563
  toDispose.push(this.menuRegistry.registerSubmenu([...menuPath, ...paths], submenuLabel, { order: submenuOrder }));
555
564
  }
556
565
  }
557
- const inline = /^inline/.test(group);
558
- menuPath = inline ? menuPath : [...menuPath, ...group.split('/')];
559
- toDispose.push(this.menuRegistry.registerMenuAction(menuPath, action));
560
566
 
561
- toDispose.push(this.onDidRegisterCommand(menu.command, pluginCommand => {
562
- command.category = pluginCommand.category;
563
- command.label = pluginCommand.label;
564
- if (inline) {
565
- command.iconClass = pluginCommand.iconClass;
566
- }
567
- }));
568
567
  return toDispose;
569
568
  }
570
569
 
@@ -40,6 +40,8 @@ import { MonacoThemingService } from '@theia/monaco/lib/browser/monaco-theming-s
40
40
  import { ColorRegistry } from '@theia/core/lib/browser/color-registry';
41
41
  import { PluginIconThemeService } from './plugin-icon-theme-service';
42
42
  import { ContributionProvider } from '@theia/core/lib/common';
43
+ import * as monaco from '@theia/monaco-editor-core';
44
+ import { ThemeIcon } from '@theia/monaco-editor-core/esm/vs/platform/theme/common/themeService';
43
45
 
44
46
  @injectable()
45
47
  export class PluginContributionHandler {
@@ -360,13 +362,13 @@ export class PluginContributionHandler {
360
362
  const toDispose = new DisposableCollection();
361
363
  for (const { iconUrl, themeIcon, command, category, title, originalTitle } of contribution.commands) {
362
364
  const reference = iconUrl && this.style.toIconClass(iconUrl);
363
- const icon = themeIcon && monaco.theme.ThemeIcon.fromString(themeIcon);
365
+ const icon = themeIcon && ThemeIcon.fromString(themeIcon);
364
366
  let iconClass;
365
367
  if (reference) {
366
368
  toDispose.push(reference);
367
369
  iconClass = reference.object.iconClass;
368
370
  } else if (icon) {
369
- iconClass = monaco.theme.ThemeIcon.asClassName(icon);
371
+ iconClass = ThemeIcon.asClassName(icon);
370
372
  }
371
373
  toDispose.push(this.registerCommand({ id: command, category, label: title, originalLabel: originalTitle, iconClass }));
372
374
  }
@@ -37,6 +37,8 @@ import { Endpoint } from '@theia/core/lib/browser/endpoint';
37
37
  import { FileService } from '@theia/filesystem/lib/browser/file-service';
38
38
  import { FileStat, FileChangeType } from '@theia/filesystem/lib/common/files';
39
39
  import { WorkspaceService } from '@theia/workspace/lib/browser';
40
+ import { StandaloneServices } from '@theia/monaco-editor-core/esm/vs/editor/standalone/browser/standaloneServices';
41
+ import { ILanguageService } from '@theia/monaco-editor-core/esm/vs/editor/common/languages/language';
40
42
 
41
43
  export interface PluginIconDefinition {
42
44
  iconPath: string;
@@ -519,8 +521,8 @@ export class PluginIconTheme extends PluginIconThemeDefinition implements IconTh
519
521
  } else {
520
522
  classNames.unshift(this.fileIcon);
521
523
  }
522
- const language = monaco.services.StaticServices.modeService.get().createByFilepathOrFirstLine(parsedURI['codeUri']);
523
- classNames.push(this.languageIcon(language.languageIdentifier.language));
524
+ const language = StandaloneServices.get(ILanguageService).createByFilepathOrFirstLine(parsedURI['codeUri']);
525
+ classNames.push(this.languageIcon(language.languageId));
524
526
  }
525
527
  return classNames;
526
528
  }
@@ -25,7 +25,8 @@ import {
25
25
  TransferInputBox,
26
26
  TransferQuickPickItems,
27
27
  TransferQuickInput,
28
- TransferQuickInputButton
28
+ TransferQuickInputButton,
29
+ TransferQuickPickItemValue
29
30
  } from '../../common/plugin-api-rpc';
30
31
  import {
31
32
  InputOptions,
@@ -37,12 +38,14 @@ import {
37
38
  import { DisposableCollection, Disposable } from '@theia/core/lib/common/disposable';
38
39
  import { CancellationToken } from '@theia/core/lib/common/cancellation';
39
40
  import { MonacoQuickInputService } from '@theia/monaco/lib/browser/monaco-quick-input-service';
40
- import * as theia from '@theia/plugin';
41
41
  import { QuickInputButtons } from '../../plugin/types-impl';
42
42
  import { getIconUris } from '../../plugin/quick-open';
43
+ import * as monaco from '@theia/monaco-editor-core';
44
+ import { IQuickPickItem, IQuickInput } from '@theia/monaco-editor-core/esm/vs/base/parts/quickinput/common/quickInput';
45
+ import { ThemeIcon } from '@theia/monaco-editor-core/esm/vs/platform/theme/common/themeService';
43
46
 
44
47
  export interface QuickInputSession {
45
- input: monaco.quickInput.IQuickInput;
48
+ input: IQuickInput;
46
49
  handlesToItems: Map<number, TransferQuickPickItems>;
47
50
  }
48
51
 
@@ -68,7 +71,7 @@ export class QuickOpenMainImpl implements QuickOpenMain, Disposable {
68
71
  this.toDispose.dispose();
69
72
  }
70
73
 
71
- async $show(instance: number, options: PickOptions<TransferQuickPickItems>, token: CancellationToken): Promise<number | number[] | undefined> {
74
+ async $show(instance: number, options: PickOptions<TransferQuickPickItemValue>, token: CancellationToken): Promise<number | number[] | undefined> {
72
75
  const contents = new Promise<TransferQuickPickItems[]>((resolve, reject) => {
73
76
  this.items[instance] = { resolve, reject };
74
77
  });
@@ -82,21 +85,14 @@ export class QuickOpenMainImpl implements QuickOpenMain, Disposable {
82
85
  }
83
86
  };
84
87
 
85
- if (options.canPickMany) {
86
- return this.delegate.pick(contents, options as { canPickMany: true }, token).then(items => {
87
- if (items) {
88
- return items.map(item => item.handle);
89
- }
90
- return undefined;
91
- });
92
- } else {
93
- return this.delegate.pick(contents, options, token).then(item => {
94
- if (item) {
95
- return item.handle;
96
- }
97
- return undefined;
98
- });
88
+ const result = await this.delegate.pick<TransferQuickPickItemValue>(contents, options, token);
89
+
90
+ if (Array.isArray(result)) {
91
+ return result.map(({ handle }) => handle);
92
+ } else if (result) {
93
+ return result.handle;
99
94
  }
95
+ return undefined;
100
96
  }
101
97
 
102
98
  $setItems(instance: number, items: TransferQuickPickItems[]): Promise<any> {
@@ -119,6 +115,7 @@ export class QuickOpenMainImpl implements QuickOpenMain, Disposable {
119
115
  const inputOptions: InputOptions = Object.create(null);
120
116
 
121
117
  if (options) {
118
+ inputOptions.title = options.title;
122
119
  inputOptions.password = options.password;
123
120
  inputOptions.placeHolder = options.placeHolder;
124
121
  inputOptions.valueSelection = options.valueSelection;
@@ -194,19 +191,20 @@ export class QuickOpenMainImpl implements QuickOpenMain, Disposable {
194
191
 
195
192
  private sessions = new Map<number, QuickInputSession>();
196
193
 
197
- $createOrUpdate<T extends theia.QuickPickItem>(params: TransferQuickInput): Promise<void> {
194
+ $createOrUpdate(params: TransferQuickInput): Promise<void> {
198
195
  const sessionId = params.id;
199
- let session = this.sessions.get(sessionId);
200
- if (!session) {
196
+ let session: QuickInputSession;
197
+ const candidate = this.sessions.get(sessionId);
198
+ if (!candidate) {
201
199
  if (params.type === 'quickPick') {
202
200
  const quickPick = this.quickInputService.createQuickPick();
203
201
  quickPick.onDidAccept(() => {
204
202
  this.proxy.$acceptOnDidAccept(sessionId);
205
203
  });
206
- quickPick.onDidChangeActive((items: Array<monaco.quickInput.IQuickPickItem>) => {
204
+ quickPick.onDidChangeActive((items: Array<IQuickPickItem>) => {
207
205
  this.proxy.$onDidChangeActive(sessionId, items.map(item => (item as TransferQuickPickItems).handle));
208
206
  });
209
- quickPick.onDidChangeSelection((items: Array<monaco.quickInput.IQuickPickItem>) => {
207
+ quickPick.onDidChangeSelection((items: Array<IQuickPickItem>) => {
210
208
  this.proxy.$onDidChangeSelection(sessionId, items.map(item => (item as TransferQuickPickItems).handle));
211
209
  });
212
210
  quickPick.onDidTriggerButton((button: QuickInputButtonHandle) => {
@@ -242,6 +240,8 @@ export class QuickOpenMainImpl implements QuickOpenMain, Disposable {
242
240
  };
243
241
  }
244
242
  this.sessions.set(sessionId, session);
243
+ } else {
244
+ session = candidate;
245
245
  }
246
246
  if (session) {
247
247
  const { input, handlesToItems } = session;
@@ -273,7 +273,7 @@ export class QuickOpenMainImpl implements QuickOpenMain, Disposable {
273
273
  const { iconPath, tooltip, handle } = button;
274
274
  if ('id' in iconPath) {
275
275
  return {
276
- iconClass: monaco.theme.ThemeIcon.asClassName(iconPath),
276
+ iconClass: ThemeIcon.asClassName(iconPath),
277
277
  tooltip,
278
278
  handle
279
279
  };
@@ -44,3 +44,7 @@
44
44
  .theia-tree-view .theia-TreeNode:not(:hover):not(.theia-mod-selected) .theia-tree-view-inline-action {
45
45
  display: none;
46
46
  }
47
+
48
+ .codicon.icon-inline {
49
+ font-size: var(--theia-ui-font-size1);
50
+ }
@@ -14,6 +14,8 @@
14
14
  // SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
15
15
  // *****************************************************************************
16
16
 
17
+ import * as monaco from '@theia/monaco-editor-core';
18
+ import { StandaloneCodeEditor } from '@theia/monaco-editor-core/esm/vs/editor/standalone/browser/standaloneCodeEditor';
17
19
  import { Disposable, DisposableCollection } from '@theia/core/lib/common/disposable';
18
20
  import { MonacoEditor } from '@theia/monaco/lib/browser/monaco-editor';
19
21
  import {
@@ -84,23 +86,23 @@ export class TextEditorMain implements Disposable {
84
86
  this.toDisposeOnEditor.push(Disposable.create(() => this.editor = undefined));
85
87
 
86
88
  if (this.editor) {
87
- const monaco = this.editor.getControl();
89
+ const monacoEditor = this.editor.getControl();
88
90
  this.toDisposeOnEditor.push(this.editor.onSelectionChanged(_ => {
89
91
  this.updateProperties();
90
92
  }));
91
- this.toDisposeOnEditor.push(monaco.onDidChangeModel(() => {
93
+ this.toDisposeOnEditor.push(monacoEditor.onDidChangeModel(() => {
92
94
  this.setEditor(undefined);
93
95
  }));
94
- this.toDisposeOnEditor.push(monaco.onDidChangeCursorSelection(e => {
96
+ this.toDisposeOnEditor.push(monacoEditor.onDidChangeCursorSelection(e => {
95
97
  this.updateProperties(e.source);
96
98
  }));
97
- this.toDisposeOnEditor.push(monaco.onDidChangeConfiguration(() => {
99
+ this.toDisposeOnEditor.push(monacoEditor.onDidChangeConfiguration(() => {
98
100
  this.updateProperties();
99
101
  }));
100
- this.toDisposeOnEditor.push(monaco.onDidLayoutChange(() => {
102
+ this.toDisposeOnEditor.push(monacoEditor.onDidLayoutChange(() => {
101
103
  this.updateProperties();
102
104
  }));
103
- this.toDisposeOnEditor.push(monaco.onDidScrollChange(() => {
105
+ this.toDisposeOnEditor.push(monacoEditor.onDidScrollChange(() => {
104
106
  this.updateProperties();
105
107
  }));
106
108
 
@@ -263,12 +265,9 @@ export class TextEditorMain implements Disposable {
263
265
  }
264
266
 
265
267
  insertSnippet(template: string, ranges: Range[], opts: UndoStopOptions): boolean {
268
+ const snippetController: SnippetController2 | null | undefined = this.editor?.getControl().getContribution('snippetController2');
266
269
 
267
- if (!this.editor) {
268
- return false;
269
- }
270
-
271
- const snippetController: SnippetController2 = this.editor!.getControl().getContribution('snippetController2');
270
+ if (!snippetController || !this.editor) { return false; }
272
271
 
273
272
  const selections = ranges.map(r => new monaco.Selection(r.startLineNumber, r.startColumn, r.endLineNumber, r.endColumn));
274
273
  this.editor.getControl().setSelections(selections);
@@ -283,7 +282,7 @@ export class TextEditorMain implements Disposable {
283
282
  if (!this.editor) {
284
283
  return;
285
284
  }
286
- this.editor.getControl().setDecorations(key, ranges.map(option => Object.assign(option, { color: undefined })));
285
+ (this.editor.getControl() as unknown as StandaloneCodeEditor).setDecorations('Plugin decorations', key, ranges.map(option => Object.assign(option, { color: undefined })));
287
286
  }
288
287
 
289
288
  setDecorationsFast(key: string, _ranges: number[]): void {
@@ -295,8 +294,7 @@ export class TextEditorMain implements Disposable {
295
294
  for (let i = 0; i < len; i++) {
296
295
  ranges[i] = new monaco.Range(_ranges[4 * i], _ranges[4 * i + 1], _ranges[4 * i + 2], _ranges[4 * i + 3]);
297
296
  }
298
-
299
- this.editor.getControl().setDecorationsFast(key, ranges);
297
+ (this.editor.getControl() as unknown as StandaloneCodeEditor).setDecorationsFast(key, ranges);
300
298
  }
301
299
 
302
300
  private static toMonacoSelections(selection: Selection): monaco.Selection {
@@ -41,6 +41,9 @@ import { MonacoBulkEditService } from '@theia/monaco/lib/browser/monaco-bulk-edi
41
41
  import { MonacoEditorService } from '@theia/monaco/lib/browser/monaco-editor-service';
42
42
  import { theiaUritoUriComponents, UriComponents } from '../../common/uri-components';
43
43
  import { Endpoint } from '@theia/core/lib/browser/endpoint';
44
+ import * as monaco from '@theia/monaco-editor-core';
45
+ import { ResourceEdit } from '@theia/monaco-editor-core/esm/vs/editor/browser/services/bulkEditService';
46
+ import { IDecorationRenderOptions } from '@theia/monaco-editor-core/esm/vs/editor/common/editorCommon';
44
47
 
45
48
  export class TextEditorsMainImpl implements TextEditorsMain, Disposable {
46
49
 
@@ -120,7 +123,7 @@ export class TextEditorsMainImpl implements TextEditorsMain, Disposable {
120
123
  async $tryApplyWorkspaceEdit(dto: WorkspaceEditDto): Promise<boolean> {
121
124
  const workspaceEdit = toMonacoWorkspaceEdit(dto);
122
125
  try {
123
- const edits = monaco.editor.ResourceEdit.convert(workspaceEdit);
126
+ const edits = ResourceEdit.convert(workspaceEdit);
124
127
  const { success } = await this.bulkEditService.apply(edits);
125
128
  return success;
126
129
  } catch {
@@ -135,9 +138,9 @@ export class TextEditorsMainImpl implements TextEditorsMain, Disposable {
135
138
  return Promise.resolve(this.editorsAndDocuments.getEditor(id)!.insertSnippet(template, ranges, opts));
136
139
  }
137
140
 
138
- $registerTextEditorDecorationType(key: string, options: DecorationRenderOptions): void {
141
+ $registerTextEditorDecorationType(key: string, options: DecorationRenderOptions | IDecorationRenderOptions): void {
139
142
  this.injectRemoteUris(options);
140
- this.monacoEditorService.registerDecorationType(key, options);
143
+ this.monacoEditorService.registerDecorationType('Plugin decoration', key, options as IDecorationRenderOptions);
141
144
  this.toDispose.push(Disposable.create(() => this.$removeTextEditorDecorationType(key)));
142
145
  }
143
146