@opensumi/ide-editor 2.27.3-rc-1712755288.0 → 2.27.3-rc-1713171335.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.
- package/lib/browser/diff/index.d.ts.map +1 -1
- package/lib/browser/diff/index.js +1 -1
- package/lib/browser/diff/index.js.map +1 -1
- package/lib/browser/editor.contribution.d.ts +5 -3
- package/lib/browser/editor.contribution.d.ts.map +1 -1
- package/lib/browser/editor.contribution.js +4 -4
- package/lib/browser/editor.contribution.js.map +1 -1
- package/lib/browser/format/format.service.d.ts.map +1 -1
- package/lib/browser/format/format.service.js +17 -14
- package/lib/browser/format/format.service.js.map +1 -1
- package/lib/browser/format/formatter-selector.d.ts +29 -0
- package/lib/browser/format/formatter-selector.d.ts.map +1 -0
- package/lib/browser/format/formatter-selector.js +112 -0
- package/lib/browser/format/formatter-selector.js.map +1 -0
- package/lib/browser/preference/converter.d.ts.map +1 -1
- package/lib/browser/preference/converter.js.map +1 -1
- package/lib/browser/resource.service.d.ts +1 -1
- package/lib/browser/resource.service.d.ts.map +1 -1
- package/lib/browser/resource.service.js +4 -3
- package/lib/browser/resource.service.js.map +1 -1
- package/package.json +14 -14
- package/src/browser/diff/index.ts +8 -2
- package/src/browser/editor.contribution.ts +6 -4
- package/src/browser/format/format.service.ts +18 -16
- package/src/browser/format/formatter-selector.ts +142 -0
- package/src/browser/preference/converter.ts +1 -0
- package/src/browser/resource.service.ts +3 -2
- package/lib/browser/format/formatterSelect.d.ts +0 -10
- package/lib/browser/format/formatterSelect.d.ts.map +0 -1
- package/lib/browser/format/formatterSelect.js +0 -68
- package/lib/browser/format/formatterSelect.js.map +0 -1
- 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
|
-
}
|