@opensumi/ide-editor 2.27.3-rc-1712837054.0 → 2.27.3-rc-1713256305.0

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 (30) hide show
  1. package/lib/browser/editor.contribution.d.ts +7 -4
  2. package/lib/browser/editor.contribution.d.ts.map +1 -1
  3. package/lib/browser/editor.contribution.js +14 -5
  4. package/lib/browser/editor.contribution.js.map +1 -1
  5. package/lib/browser/editor.less +18 -0
  6. package/lib/browser/format/format.service.d.ts.map +1 -1
  7. package/lib/browser/format/format.service.js +17 -14
  8. package/lib/browser/format/format.service.js.map +1 -1
  9. package/lib/browser/format/formatter-selector.d.ts +29 -0
  10. package/lib/browser/format/formatter-selector.d.ts.map +1 -0
  11. package/lib/browser/format/formatter-selector.js +112 -0
  12. package/lib/browser/format/formatter-selector.js.map +1 -0
  13. package/lib/browser/light-bulb-widget/index.d.ts +5 -0
  14. package/lib/browser/light-bulb-widget/index.d.ts.map +1 -0
  15. package/lib/browser/light-bulb-widget/index.js +45 -0
  16. package/lib/browser/light-bulb-widget/index.js.map +1 -0
  17. package/lib/browser/preference/converter.d.ts.map +1 -1
  18. package/lib/browser/preference/converter.js.map +1 -1
  19. package/package.json +14 -14
  20. package/src/browser/editor.contribution.ts +19 -7
  21. package/src/browser/editor.less +18 -0
  22. package/src/browser/format/format.service.ts +18 -16
  23. package/src/browser/format/formatter-selector.ts +142 -0
  24. package/src/browser/light-bulb-widget/index.ts +41 -0
  25. package/src/browser/preference/converter.ts +1 -0
  26. package/lib/browser/format/formatterSelect.d.ts +0 -10
  27. package/lib/browser/format/formatterSelect.d.ts.map +0 -1
  28. package/lib/browser/format/formatterSelect.js +0 -68
  29. package/lib/browser/format/formatterSelect.js.map +0 -1
  30. package/src/browser/format/formatterSelect.ts +0 -82
@@ -1,82 +0,0 @@
1
- import { Autowired, Injectable } from '@opensumi/di';
2
- import { PreferenceScope, PreferenceService, QuickPickService, URI, localize } from '@opensumi/ide-core-browser';
3
- import * as monaco from '@opensumi/ide-monaco';
4
- import { ITextModel } from '@opensumi/ide-monaco/lib/browser/monaco-api/types';
5
- import { FormattingMode } from '@opensumi/monaco-editor-core/esm/vs/editor/contrib/format/browser/format';
6
-
7
- import { IEditorDocumentModelService } from '../doc-model/types';
8
-
9
- type IProvider = monaco.languages.DocumentFormattingEditProvider | monaco.languages.DocumentRangeFormattingEditProvider;
10
-
11
- @Injectable()
12
- export class FormattingSelector {
13
- @Autowired(QuickPickService)
14
- private quickPickService: QuickPickService;
15
-
16
- @Autowired(PreferenceService)
17
- private preferenceService: PreferenceService;
18
-
19
- @Autowired(IEditorDocumentModelService)
20
- private modelService: IEditorDocumentModelService;
21
-
22
- async select(
23
- formatters: Array<
24
- monaco.languages.DocumentFormattingEditProvider | monaco.languages.DocumentRangeFormattingEditProvider
25
- >,
26
- document: ITextModel,
27
- mode: FormattingMode,
28
- forceSelect = false,
29
- ): Promise<
30
- monaco.languages.DocumentFormattingEditProvider | monaco.languages.DocumentRangeFormattingEditProvider | undefined
31
- > {
32
- const docRef = this.modelService.getModelReference(URI.from(document.uri.toJSON()));
33
- if (!docRef) {
34
- return;
35
- }
36
- const languageId = docRef.instance.languageId;
37
- docRef.dispose();
38
- let preferred;
39
- if (!forceSelect) {
40
- preferred = (this.preferenceService.get<{ [key: string]: string }>('editor.preferredFormatter') || {})[
41
- languageId
42
- ];
43
- }
44
-
45
- const elements: { [key: string]: IProvider } = {};
46
- formatters.forEach((provider: IProvider) => {
47
- if (provider.extensionId) {
48
- elements[provider.extensionId as any] = provider;
49
- }
50
- });
51
-
52
- if (preferred && !forceSelect) {
53
- const idx = formatters.findIndex((provider: IProvider) => provider.extensionId === preferred);
54
- if (idx >= 0) {
55
- return formatters[idx];
56
- }
57
- } else if (formatters.length < 2 && !forceSelect) {
58
- return formatters[0];
59
- }
60
-
61
- if (mode === FormattingMode.Explicit) {
62
- const selected = await this.quickPickService.show(
63
- Object.keys(elements).map((k) => ({
64
- label: elements[k].displayName!,
65
- value: elements[k].extensionId,
66
- })),
67
- { placeholder: localize('editor.format.chooseFormatter') },
68
- );
69
- if (selected) {
70
- const config = this.preferenceService.get<{ [key: string]: string }>('editor.preferredFormatter') || {};
71
- this.preferenceService.set(
72
- 'editor.preferredFormatter',
73
- { ...config, [languageId]: selected },
74
- PreferenceScope.User,
75
- );
76
- return elements[selected as any];
77
- }
78
- } else {
79
- return undefined;
80
- }
81
- }
82
- }