@theia/plugin-ext 1.24.0-next.46 → 1.24.0-next.49

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 (103) hide show
  1. package/lib/common/plugin-api-rpc-model.d.ts +1 -2
  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 +8 -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 +6 -5
  9. package/lib/hosted/browser/hosted-plugin.js.map +1 -1
  10. package/lib/main/browser/comments/comment-glyph-widget.d.ts +1 -2
  11. package/lib/main/browser/comments/comment-glyph-widget.d.ts.map +1 -1
  12. package/lib/main/browser/comments/comment-glyph-widget.js.map +1 -1
  13. package/lib/main/browser/comments/comment-thread-widget.d.ts +1 -2
  14. package/lib/main/browser/comments/comment-thread-widget.d.ts.map +1 -1
  15. package/lib/main/browser/comments/comment-thread-widget.js +1 -0
  16. package/lib/main/browser/comments/comment-thread-widget.js.map +1 -1
  17. package/lib/main/browser/comments/comments-contribution.d.ts +1 -2
  18. package/lib/main/browser/comments/comments-contribution.d.ts.map +1 -1
  19. package/lib/main/browser/comments/comments-contribution.js +1 -0
  20. package/lib/main/browser/comments/comments-contribution.js.map +1 -1
  21. package/lib/main/browser/comments/comments-decorator.d.ts +1 -2
  22. package/lib/main/browser/comments/comments-decorator.d.ts.map +1 -1
  23. package/lib/main/browser/comments/comments-decorator.js.map +1 -1
  24. package/lib/main/browser/custom-editors/custom-editors-main.d.ts +2 -2
  25. package/lib/main/browser/custom-editors/custom-editors-main.d.ts.map +1 -1
  26. package/lib/main/browser/custom-editors/custom-editors-main.js +7 -7
  27. package/lib/main/browser/custom-editors/custom-editors-main.js.map +1 -1
  28. package/lib/main/browser/documents-main.d.ts.map +1 -1
  29. package/lib/main/browser/documents-main.js +1 -0
  30. package/lib/main/browser/documents-main.js.map +1 -1
  31. package/lib/main/browser/editor/untitled-resource.d.ts.map +1 -1
  32. package/lib/main/browser/editor/untitled-resource.js +1 -0
  33. package/lib/main/browser/editor/untitled-resource.js.map +1 -1
  34. package/lib/main/browser/editors-and-documents-main.d.ts +1 -1
  35. package/lib/main/browser/editors-and-documents-main.d.ts.map +1 -1
  36. package/lib/main/browser/editors-and-documents-main.js.map +1 -1
  37. package/lib/main/browser/languages-main.d.ts +3 -3
  38. package/lib/main/browser/languages-main.d.ts.map +1 -1
  39. package/lib/main/browser/languages-main.js +14 -11
  40. package/lib/main/browser/languages-main.js.map +1 -1
  41. package/lib/main/browser/plugin-contribution-handler.d.ts.map +1 -1
  42. package/lib/main/browser/plugin-contribution-handler.js +4 -2
  43. package/lib/main/browser/plugin-contribution-handler.js.map +1 -1
  44. package/lib/main/browser/plugin-icon-theme-service.d.ts.map +1 -1
  45. package/lib/main/browser/plugin-icon-theme-service.js +4 -2
  46. package/lib/main/browser/plugin-icon-theme-service.js.map +1 -1
  47. package/lib/main/browser/quick-open-main.d.ts +5 -6
  48. package/lib/main/browser/quick-open-main.d.ts.map +1 -1
  49. package/lib/main/browser/quick-open-main.js +15 -17
  50. package/lib/main/browser/quick-open-main.js.map +1 -1
  51. package/lib/main/browser/text-editor-main.d.ts +1 -1
  52. package/lib/main/browser/text-editor-main.d.ts.map +1 -1
  53. package/lib/main/browser/text-editor-main.js +11 -9
  54. package/lib/main/browser/text-editor-main.js.map +1 -1
  55. package/lib/main/browser/text-editors-main.d.ts +2 -1
  56. package/lib/main/browser/text-editors-main.d.ts.map +1 -1
  57. package/lib/main/browser/text-editors-main.js +4 -2
  58. package/lib/main/browser/text-editors-main.js.map +1 -1
  59. package/lib/main/browser/view/plugin-tree-view-node-label-provider.d.ts.map +1 -1
  60. package/lib/main/browser/view/plugin-tree-view-node-label-provider.js +2 -1
  61. package/lib/main/browser/view/plugin-tree-view-node-label-provider.js.map +1 -1
  62. package/lib/main/browser/view/plugin-view-registry.js +3 -2
  63. package/lib/main/browser/view/plugin-view-registry.js.map +1 -1
  64. package/lib/main/browser/view/tree-view-widget.d.ts +5 -0
  65. package/lib/main/browser/view/tree-view-widget.d.ts.map +1 -1
  66. package/lib/main/browser/view/tree-view-widget.js +19 -1
  67. package/lib/main/browser/view/tree-view-widget.js.map +1 -1
  68. package/lib/plugin/languages/selection-range.d.ts +2 -2
  69. package/lib/plugin/languages/selection-range.d.ts.map +1 -1
  70. package/lib/plugin/languages/selection-range.js.map +1 -1
  71. package/lib/plugin/quick-open.d.ts +6 -8
  72. package/lib/plugin/quick-open.d.ts.map +1 -1
  73. package/lib/plugin/quick-open.js +16 -11
  74. package/lib/plugin/quick-open.js.map +1 -1
  75. package/lib/plugin/type-converters.d.ts.map +1 -1
  76. package/lib/plugin/type-converters.js +16 -20
  77. package/lib/plugin/type-converters.js.map +1 -1
  78. package/package.json +24 -23
  79. package/src/common/plugin-api-rpc-model.ts +1 -0
  80. package/src/common/plugin-api-rpc.ts +10 -4
  81. package/src/hosted/browser/hosted-plugin.ts +7 -5
  82. package/src/main/browser/comments/comment-glyph-widget.ts +1 -0
  83. package/src/main/browser/comments/comment-thread-widget.tsx +1 -0
  84. package/src/main/browser/comments/comments-contribution.ts +1 -0
  85. package/src/main/browser/comments/comments-decorator.ts +1 -0
  86. package/src/main/browser/custom-editors/custom-editors-main.ts +9 -9
  87. package/src/main/browser/documents-main.ts +1 -0
  88. package/src/main/browser/editor/untitled-resource.ts +1 -0
  89. package/src/main/browser/editors-and-documents-main.ts +1 -0
  90. package/src/main/browser/languages-main.ts +59 -40
  91. package/src/main/browser/plugin-contribution-handler.ts +4 -2
  92. package/src/main/browser/plugin-icon-theme-service.ts +4 -2
  93. package/src/main/browser/quick-open-main.ts +23 -24
  94. package/src/main/browser/style/tree.css +4 -0
  95. package/src/main/browser/text-editor-main.ts +12 -14
  96. package/src/main/browser/text-editors-main.ts +6 -3
  97. package/src/main/browser/view/plugin-tree-view-node-label-provider.ts +2 -1
  98. package/src/main/browser/view/plugin-view-registry.ts +3 -3
  99. package/src/main/browser/view/tree-view-widget.tsx +21 -3
  100. package/src/plugin/languages/selection-range.ts +2 -1
  101. package/src/plugin/quick-open.ts +21 -16
  102. package/src/plugin/type-converters.ts +15 -22
  103. 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
  };
@@ -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> {
@@ -194,19 +190,20 @@ export class QuickOpenMainImpl implements QuickOpenMain, Disposable {
194
190
 
195
191
  private sessions = new Map<number, QuickInputSession>();
196
192
 
197
- $createOrUpdate<T extends theia.QuickPickItem>(params: TransferQuickInput): Promise<void> {
193
+ $createOrUpdate(params: TransferQuickInput): Promise<void> {
198
194
  const sessionId = params.id;
199
- let session = this.sessions.get(sessionId);
200
- if (!session) {
195
+ let session: QuickInputSession;
196
+ const candidate = this.sessions.get(sessionId);
197
+ if (!candidate) {
201
198
  if (params.type === 'quickPick') {
202
199
  const quickPick = this.quickInputService.createQuickPick();
203
200
  quickPick.onDidAccept(() => {
204
201
  this.proxy.$acceptOnDidAccept(sessionId);
205
202
  });
206
- quickPick.onDidChangeActive((items: Array<monaco.quickInput.IQuickPickItem>) => {
203
+ quickPick.onDidChangeActive((items: Array<IQuickPickItem>) => {
207
204
  this.proxy.$onDidChangeActive(sessionId, items.map(item => (item as TransferQuickPickItems).handle));
208
205
  });
209
- quickPick.onDidChangeSelection((items: Array<monaco.quickInput.IQuickPickItem>) => {
206
+ quickPick.onDidChangeSelection((items: Array<IQuickPickItem>) => {
210
207
  this.proxy.$onDidChangeSelection(sessionId, items.map(item => (item as TransferQuickPickItems).handle));
211
208
  });
212
209
  quickPick.onDidTriggerButton((button: QuickInputButtonHandle) => {
@@ -242,6 +239,8 @@ export class QuickOpenMainImpl implements QuickOpenMain, Disposable {
242
239
  };
243
240
  }
244
241
  this.sessions.set(sessionId, session);
242
+ } else {
243
+ session = candidate;
245
244
  }
246
245
  if (session) {
247
246
  const { input, handlesToItems } = session;
@@ -273,7 +272,7 @@ export class QuickOpenMainImpl implements QuickOpenMain, Disposable {
273
272
  const { iconPath, tooltip, handle } = button;
274
273
  if ('id' in iconPath) {
275
274
  return {
276
- iconClass: monaco.theme.ThemeIcon.asClassName(iconPath),
275
+ iconClass: ThemeIcon.asClassName(iconPath),
277
276
  tooltip,
278
277
  handle
279
278
  };
@@ -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
 
@@ -20,6 +20,7 @@ import { LabelProviderContribution, LabelProvider, URIIconReference } from '@the
20
20
  import { TreeLabelProvider } from '@theia/core/lib/browser/tree/tree-label-provider';
21
21
  import { TreeViewNode } from './tree-view-widget';
22
22
  import { TreeNode } from '@theia/core/lib/browser/tree/tree';
23
+ import { ThemeIcon } from '@theia/monaco-editor-core/esm/vs/platform/theme/common/themeService';
23
24
 
24
25
  @injectable()
25
26
  export class PluginTreeViewNodeLabelProvider implements LabelProviderContribution {
@@ -47,7 +48,7 @@ export class PluginTreeViewNodeLabelProvider implements LabelProviderContributio
47
48
  const uri = node.resourceUri && new URI(node.resourceUri) || undefined;
48
49
  return this.labelProvider.getIcon(URIIconReference.create(node.themeIconId, uri));
49
50
  }
50
- return monaco.theme.ThemeIcon.asClassName({ id: node.themeIconId });
51
+ return ThemeIcon.asClassName({ id: node.themeIconId });
51
52
  }
52
53
  if (node.resourceUri) {
53
54
  return this.labelProvider.getIcon(new URI(node.resourceUri));
@@ -40,7 +40,7 @@ import { DebugConsoleContribution } from '@theia/debug/lib/browser/console/debug
40
40
  import { TERMINAL_WIDGET_FACTORY_ID } from '@theia/terminal/lib/browser/terminal-widget-impl';
41
41
  import { TreeViewWidget } from './tree-view-widget';
42
42
  import { SEARCH_VIEW_CONTAINER_ID } from '@theia/search-in-workspace/lib/browser/search-in-workspace-factory';
43
-
43
+ import { ThemeIcon } from '@theia/monaco-editor-core/esm/vs/platform/theme/common/themeService';
44
44
  import { WebviewView, WebviewViewResolver } from '../webview-views/webview-views';
45
45
  import { WebviewWidget, WebviewWidgetIdentifier } from '../webview/webview';
46
46
  import { CancellationToken } from '@theia/core/lib/common/cancellation';
@@ -229,9 +229,9 @@ export class PluginViewRegistry implements FrontendApplicationContribution {
229
229
  const iconClass = 'plugin-view-container-icon-' + viewContainer.id;
230
230
 
231
231
  if (viewContainer.themeIcon) {
232
- const icon = monaco.theme.ThemeIcon.fromString(viewContainer.themeIcon);
232
+ const icon = ThemeIcon.fromString(viewContainer.themeIcon);
233
233
  if (icon) {
234
- themeIconClass = monaco.theme.ThemeIcon.asClassName(icon) ?? '';
234
+ themeIconClass = ThemeIcon.asClassName(icon) ?? '';
235
235
  }
236
236
  }
237
237