@opensumi/ide-editor 2.21.13 → 2.22.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 (238) hide show
  1. package/lib/browser/breadcrumb/default.js.map +1 -1
  2. package/lib/browser/breadcrumb/document-symbol.js.map +1 -1
  3. package/lib/browser/breadcrumb/index.js.map +1 -1
  4. package/lib/browser/component.js.map +1 -1
  5. package/lib/browser/decoration-applier.js.map +1 -1
  6. package/lib/browser/diff/compare.js.map +1 -1
  7. package/lib/browser/diff/index.d.ts.map +1 -1
  8. package/lib/browser/diff/index.js +1 -1
  9. package/lib/browser/diff/index.js.map +1 -1
  10. package/lib/browser/doc-cache/empty-doc-cache.js.map +1 -1
  11. package/lib/browser/doc-cache/local-storage-cache.js.map +1 -1
  12. package/lib/browser/doc-model/editor-document-model-service.js +3 -3
  13. package/lib/browser/doc-model/editor-document-model-service.js.map +1 -1
  14. package/lib/browser/doc-model/editor-document-model.d.ts +8 -0
  15. package/lib/browser/doc-model/editor-document-model.d.ts.map +1 -1
  16. package/lib/browser/doc-model/editor-document-model.js +61 -11
  17. package/lib/browser/doc-model/editor-document-model.js.map +1 -1
  18. package/lib/browser/doc-model/editor-document-registry.js.map +1 -1
  19. package/lib/browser/doc-model/override.js.map +1 -1
  20. package/lib/browser/doc-model/save-task.js +1 -1
  21. package/lib/browser/doc-model/save-task.js.map +1 -1
  22. package/lib/browser/doc-model/saveParticipants.d.ts +7 -7
  23. package/lib/browser/doc-model/saveParticipants.d.ts.map +1 -1
  24. package/lib/browser/doc-model/saveParticipants.js +69 -38
  25. package/lib/browser/doc-model/saveParticipants.js.map +1 -1
  26. package/lib/browser/doc-model/types.d.ts +1 -1
  27. package/lib/browser/doc-model/types.d.ts.map +1 -1
  28. package/lib/browser/editor-collection.service.d.ts +8 -3
  29. package/lib/browser/editor-collection.service.d.ts.map +1 -1
  30. package/lib/browser/editor-collection.service.js +75 -66
  31. package/lib/browser/editor-collection.service.js.map +1 -1
  32. package/lib/browser/editor-opener.js.map +1 -1
  33. package/lib/browser/editor.contribution.d.ts.map +1 -1
  34. package/lib/browser/editor.contribution.js +31 -3
  35. package/lib/browser/editor.contribution.js.map +1 -1
  36. package/lib/browser/editor.decoration.service.d.ts +5 -6
  37. package/lib/browser/editor.decoration.service.d.ts.map +1 -1
  38. package/lib/browser/editor.decoration.service.js +9 -1
  39. package/lib/browser/editor.decoration.service.js.map +1 -1
  40. package/lib/browser/editor.override.js +2 -2
  41. package/lib/browser/editor.override.js.map +1 -1
  42. package/lib/browser/editor.status-bar.service.js.map +1 -1
  43. package/lib/browser/editor.view.d.ts.map +1 -1
  44. package/lib/browser/editor.view.js +20 -23
  45. package/lib/browser/editor.view.js.map +1 -1
  46. package/lib/browser/error.d.ts +1 -1
  47. package/lib/browser/error.d.ts.map +1 -1
  48. package/lib/browser/feature.js.map +1 -1
  49. package/lib/browser/format/format.service.js.map +1 -1
  50. package/lib/browser/format/formatterSelect.js.map +1 -1
  51. package/lib/browser/fs-resource/file-tree-set.js +6 -6
  52. package/lib/browser/fs-resource/file-tree-set.js.map +1 -1
  53. package/lib/browser/fs-resource/fs-editor-doc.js +1 -1
  54. package/lib/browser/fs-resource/fs-editor-doc.js.map +1 -1
  55. package/lib/browser/fs-resource/fs-resource.js.map +1 -1
  56. package/lib/browser/fs-resource/index.js.map +1 -1
  57. package/lib/browser/history/index.d.ts.map +1 -1
  58. package/lib/browser/history/index.js +2 -1
  59. package/lib/browser/history/index.js.map +1 -1
  60. package/lib/browser/index.d.ts.map +1 -1
  61. package/lib/browser/index.js +2 -0
  62. package/lib/browser/index.js.map +1 -1
  63. package/lib/browser/language/diagnostic-collection.d.ts +5 -5
  64. package/lib/browser/language/diagnostic-collection.d.ts.map +1 -1
  65. package/lib/browser/language/diagnostic-collection.js +1 -1
  66. package/lib/browser/language/diagnostic-collection.js.map +1 -1
  67. package/lib/browser/language/language-status.contribution.js.map +1 -1
  68. package/lib/browser/language/language-status.service.js.map +1 -1
  69. package/lib/browser/language/language.service.d.ts +4 -3
  70. package/lib/browser/language/language.service.d.ts.map +1 -1
  71. package/lib/browser/language/language.service.js +8 -2
  72. package/lib/browser/language/language.service.js.map +1 -1
  73. package/lib/browser/menu/editor.context.js +3 -3
  74. package/lib/browser/menu/editor.context.js.map +1 -1
  75. package/lib/browser/menu/editor.menu.d.ts +2 -2
  76. package/lib/browser/menu/editor.menu.d.ts.map +1 -1
  77. package/lib/browser/menu/editor.menu.js +6 -8
  78. package/lib/browser/menu/editor.menu.js.map +1 -1
  79. package/lib/browser/menu/open-type-menu.contribution.js +9 -9
  80. package/lib/browser/menu/open-type-menu.contribution.js.map +1 -1
  81. package/lib/browser/menu/title-context.menu.js.map +1 -1
  82. package/lib/browser/merge-editor/merge-editor.contribution.d.ts +8 -0
  83. package/lib/browser/merge-editor/merge-editor.contribution.d.ts.map +1 -0
  84. package/lib/browser/merge-editor/merge-editor.contribution.js +29 -0
  85. package/lib/browser/merge-editor/merge-editor.contribution.js.map +1 -0
  86. package/lib/browser/merge-editor/merge-editor.provider.d.ts +8 -0
  87. package/lib/browser/merge-editor/merge-editor.provider.d.ts.map +1 -0
  88. package/lib/browser/merge-editor/merge-editor.provider.js +44 -0
  89. package/lib/browser/merge-editor/merge-editor.provider.js.map +1 -0
  90. package/lib/browser/monaco-contrib/callHierarchy/callHierarchy.contribution.js.map +1 -1
  91. package/lib/browser/monaco-contrib/callHierarchy/callHierarchy.service.js +7 -7
  92. package/lib/browser/monaco-contrib/callHierarchy/callHierarchy.service.js.map +1 -1
  93. package/lib/browser/monaco-contrib/command/command.service.d.ts +1 -1
  94. package/lib/browser/monaco-contrib/command/command.service.d.ts.map +1 -1
  95. package/lib/browser/monaco-contrib/command/command.service.js.map +1 -1
  96. package/lib/browser/monaco-contrib/tokenizer/textmate-registry.js.map +1 -1
  97. package/lib/browser/monaco-contrib/tokenizer/textmate.service.d.ts +2 -1
  98. package/lib/browser/monaco-contrib/tokenizer/textmate.service.d.ts.map +1 -1
  99. package/lib/browser/monaco-contrib/tokenizer/textmate.service.js +5 -2
  100. package/lib/browser/monaco-contrib/tokenizer/textmate.service.js.map +1 -1
  101. package/lib/browser/monaco-contrib/typeHierarchy/typeHierarchy.contribution.js.map +1 -1
  102. package/lib/browser/monaco-contrib/typeHierarchy/typeHierarchy.service.js +7 -7
  103. package/lib/browser/monaco-contrib/typeHierarchy/typeHierarchy.service.js.map +1 -1
  104. package/lib/browser/navigation.module.less +1 -1
  105. package/lib/browser/navigation.view.d.ts.map +1 -1
  106. package/lib/browser/navigation.view.js +26 -15
  107. package/lib/browser/navigation.view.js.map +1 -1
  108. package/lib/browser/preference/contribution.js.map +1 -1
  109. package/lib/browser/preference/converter.d.ts +3 -3
  110. package/lib/browser/preference/converter.d.ts.map +1 -1
  111. package/lib/browser/preference/schema.d.ts +1 -1
  112. package/lib/browser/preference/schema.d.ts.map +1 -1
  113. package/lib/browser/preference/schema.js +8 -8
  114. package/lib/browser/preference/schema.js.map +1 -1
  115. package/lib/browser/quick-open/go-to-line.js.map +1 -1
  116. package/lib/browser/quick-open/workspace-symbol-quickopen.d.ts.map +1 -1
  117. package/lib/browser/quick-open/workspace-symbol-quickopen.js +2 -2
  118. package/lib/browser/quick-open/workspace-symbol-quickopen.js.map +1 -1
  119. package/lib/browser/resource.service.js.map +1 -1
  120. package/lib/browser/tab.view.d.ts +1 -1
  121. package/lib/browser/tab.view.d.ts.map +1 -1
  122. package/lib/browser/tab.view.js +2 -2
  123. package/lib/browser/tab.view.js.map +1 -1
  124. package/lib/browser/types.d.ts +5 -5
  125. package/lib/browser/types.d.ts.map +1 -1
  126. package/lib/browser/untitled-resource.js +1 -1
  127. package/lib/browser/untitled-resource.js.map +1 -1
  128. package/lib/browser/view/suggest-widget.js.map +1 -1
  129. package/lib/browser/workbench-editor.service.d.ts +17 -0
  130. package/lib/browser/workbench-editor.service.d.ts.map +1 -1
  131. package/lib/browser/workbench-editor.service.js +259 -176
  132. package/lib/browser/workbench-editor.service.js.map +1 -1
  133. package/lib/common/doc-cache.d.ts +2 -2
  134. package/lib/common/doc-cache.d.ts.map +1 -1
  135. package/lib/common/editor.d.ts +20 -6
  136. package/lib/common/editor.d.ts.map +1 -1
  137. package/lib/common/editor.js +12 -1
  138. package/lib/common/editor.js.map +1 -1
  139. package/lib/common/language.d.ts +18 -7
  140. package/lib/common/language.d.ts.map +1 -1
  141. package/lib/common/language.js +15 -7
  142. package/lib/common/language.js.map +1 -1
  143. package/lib/common/mocks/workbench-editor.service.js.map +1 -1
  144. package/lib/common/resource.d.ts +8 -2
  145. package/lib/common/resource.d.ts.map +1 -1
  146. package/lib/common/resource.js +1 -0
  147. package/lib/common/resource.js.map +1 -1
  148. package/package.json +17 -16
  149. package/src/browser/breadcrumb/default.ts +299 -0
  150. package/src/browser/breadcrumb/document-symbol.ts +187 -0
  151. package/src/browser/breadcrumb/index.ts +96 -0
  152. package/src/browser/component.ts +204 -0
  153. package/src/browser/decoration-applier.ts +256 -0
  154. package/src/browser/diff/compare.ts +99 -0
  155. package/src/browser/diff/index.ts +81 -0
  156. package/src/browser/doc-cache/empty-doc-cache.ts +26 -0
  157. package/src/browser/doc-cache/index.ts +2 -0
  158. package/src/browser/doc-cache/local-storage-cache.ts +67 -0
  159. package/src/browser/doc-model/editor-document-error.ts +10 -0
  160. package/src/browser/doc-model/editor-document-model-service.ts +346 -0
  161. package/src/browser/doc-model/editor-document-model.ts +690 -0
  162. package/src/browser/doc-model/editor-document-registry.ts +119 -0
  163. package/src/browser/doc-model/editor-is-fn.ts +9 -0
  164. package/src/browser/doc-model/main.ts +4 -0
  165. package/src/browser/doc-model/override.ts +49 -0
  166. package/src/browser/doc-model/save-task.ts +88 -0
  167. package/src/browser/doc-model/saveParticipants.ts +227 -0
  168. package/src/browser/doc-model/types.ts +350 -0
  169. package/src/browser/editor-collection.service.ts +790 -0
  170. package/src/browser/editor-opener.ts +44 -0
  171. package/src/browser/editor.contribution.ts +1438 -0
  172. package/src/browser/editor.decoration.service.ts +247 -0
  173. package/src/browser/editor.less +4 -0
  174. package/src/browser/editor.module.less +548 -0
  175. package/src/browser/editor.override.ts +133 -0
  176. package/src/browser/editor.status-bar.service.ts +116 -0
  177. package/src/browser/editor.view.tsx +623 -0
  178. package/src/browser/error.ts +21 -0
  179. package/src/browser/feature.ts +63 -0
  180. package/src/browser/format/format.service.ts +95 -0
  181. package/src/browser/format/formatterSelect.ts +82 -0
  182. package/src/browser/fs-resource/file-tree-set.ts +126 -0
  183. package/src/browser/fs-resource/fs-editor-doc.ts +213 -0
  184. package/src/browser/fs-resource/fs-resource.ts +247 -0
  185. package/src/browser/fs-resource/index.ts +27 -0
  186. package/src/browser/grid/grid.service.ts +288 -0
  187. package/src/browser/history/index.ts +228 -0
  188. package/src/browser/index.ts +236 -0
  189. package/src/browser/language/diagnostic-collection.ts +83 -0
  190. package/src/browser/language/language-status.contribution.ts +81 -0
  191. package/src/browser/language/language-status.service.ts +32 -0
  192. package/src/browser/language/language.service.ts +185 -0
  193. package/src/browser/menu/editor.context.ts +186 -0
  194. package/src/browser/menu/editor.menu.ts +45 -0
  195. package/src/browser/menu/open-type-menu.contribution.ts +90 -0
  196. package/src/browser/menu/title-context.menu.ts +54 -0
  197. package/src/browser/merge-editor/merge-editor.contribution.ts +25 -0
  198. package/src/browser/merge-editor/merge-editor.provider.ts +36 -0
  199. package/src/browser/monaco-contrib/callHierarchy/callHierarchy.contribution.ts +78 -0
  200. package/src/browser/monaco-contrib/callHierarchy/callHierarchy.service.ts +160 -0
  201. package/src/browser/monaco-contrib/command/command.service.ts +438 -0
  202. package/src/browser/monaco-contrib/index.ts +4 -0
  203. package/src/browser/monaco-contrib/tokenizer/textmate-registry.ts +107 -0
  204. package/src/browser/monaco-contrib/tokenizer/textmate-tokenizer.ts +104 -0
  205. package/src/browser/monaco-contrib/tokenizer/textmate.service.ts +925 -0
  206. package/src/browser/monaco-contrib/typeHierarchy/typeHierarchy.contribution.ts +78 -0
  207. package/src/browser/monaco-contrib/typeHierarchy/typeHierarchy.service.ts +154 -0
  208. package/src/browser/navigation.module.less +96 -0
  209. package/src/browser/navigation.view.tsx +254 -0
  210. package/src/browser/preference/contribution.ts +8 -0
  211. package/src/browser/preference/converter.ts +793 -0
  212. package/src/browser/preference/schema.ts +1896 -0
  213. package/src/browser/preference/util.ts +14 -0
  214. package/src/browser/quick-open/go-to-line.ts +164 -0
  215. package/src/browser/quick-open/workspace-symbol-quickopen.ts +276 -0
  216. package/src/browser/resource.service.ts +263 -0
  217. package/src/browser/tab.view.tsx +514 -0
  218. package/src/browser/types.ts +467 -0
  219. package/src/browser/untitled-resource.ts +223 -0
  220. package/src/browser/view/editor.react.tsx +82 -0
  221. package/src/browser/view/react-hook.tsx +7 -0
  222. package/src/browser/view/suggest-widget.ts +77 -0
  223. package/src/browser/view/topPadding.ts +18 -0
  224. package/src/browser/workbench-editor.service.ts +2291 -0
  225. package/src/common/doc-cache.ts +117 -0
  226. package/src/common/editor.ts +799 -0
  227. package/src/common/index.ts +6 -0
  228. package/src/common/language-status.ts +33 -0
  229. package/src/common/language.ts +206 -0
  230. package/src/common/mocks/workbench-editor.service.ts +52 -0
  231. package/src/common/resource.ts +147 -0
  232. package/src/common/utils.ts +10 -0
  233. package/src/index.ts +1 -0
  234. package/lib/browser/component/scroll/scroll.d.ts +0 -2
  235. package/lib/browser/component/scroll/scroll.d.ts.map +0 -1
  236. package/lib/browser/component/scroll/scroll.js +0 -5
  237. package/lib/browser/component/scroll/scroll.js.map +0 -1
  238. package/lib/browser/component/scroll/scroll.module.less +0 -86
@@ -0,0 +1,793 @@
1
+ import { objects, Uri } from '@opensumi/ide-core-browser';
2
+ import * as monaco from '@opensumi/monaco-editor-core/esm/vs/editor/editor.api';
3
+ import { IConfigurationService } from '@opensumi/monaco-editor-core/esm/vs/platform/configuration/common/configuration';
4
+
5
+ import { IConvertedMonacoOptions } from '../types';
6
+
7
+ const { removeUndefined } = objects;
8
+
9
+ /**
10
+ * 计算由ConfigurationService设置值带来的monaco编辑器的属性
11
+ * @param configurationService IConfigurationService
12
+ * @param updatingKey 需要处理的Preference key。如果没有这个值,默认处理全部。
13
+ */
14
+ export function getConvertedMonacoOptions(
15
+ configurationService: IConfigurationService,
16
+ resourceUri?: string,
17
+ language?: string,
18
+ updatingKey?: string[],
19
+ ): IConvertedMonacoOptions {
20
+ const editorOptions: Partial<monaco.editor.IEditorOptions> = {};
21
+ const diffOptions: Partial<monaco.editor.IDiffEditorOptions> = {};
22
+ const modelOptions: Partial<monaco.editor.ITextModelUpdateOptions> = {};
23
+ const editorOptionsKeys = updatingKey
24
+ ? updatingKey.filter((key) => editorOptionsConverters.has(key))
25
+ : Array.from(editorOptionsConverters.keys());
26
+ const textModelUpdateOptionsKeys = updatingKey
27
+ ? updatingKey.filter((key) => textModelUpdateOptionsConverters.has(key))
28
+ : Array.from(textModelUpdateOptionsConverters.keys());
29
+ const diffEditorOptionsKeys = updatingKey
30
+ ? updatingKey.filter((key) => diffEditorOptionsConverters.has(key))
31
+ : Array.from(diffEditorOptionsConverters.keys());
32
+
33
+ editorOptionsKeys.forEach((key) => {
34
+ const value = configurationService.getValue(key, {
35
+ resource: resourceUri ? Uri.parse(resourceUri) : undefined,
36
+ overrideIdentifier: language,
37
+ });
38
+ if (value === undefined) {
39
+ return;
40
+ }
41
+ if (!editorOptionsConverters.get(key)) {
42
+ editorOptions[key] = value;
43
+ } else {
44
+ const converter: IMonacoOptionsConverter = editorOptionsConverters.get(key)! as IMonacoOptionsConverter;
45
+ editorOptions[converter.monaco] = converter.convert ? converter.convert(value) : value;
46
+ }
47
+ });
48
+
49
+ textModelUpdateOptionsKeys.forEach((key) => {
50
+ const value = configurationService.getValue(key, {
51
+ resource: resourceUri ? Uri.parse(resourceUri) : undefined,
52
+ overrideIdentifier: language,
53
+ });
54
+ if (value === undefined) {
55
+ return;
56
+ }
57
+ if (!textModelUpdateOptionsConverters.get(key)) {
58
+ modelOptions[key] = value;
59
+ } else {
60
+ const converter: IMonacoOptionsConverter = textModelUpdateOptionsConverters.get(key)! as IMonacoOptionsConverter;
61
+ modelOptions[converter.monaco] = converter.convert ? converter.convert(value) : value;
62
+ }
63
+ });
64
+
65
+ diffEditorOptionsKeys.forEach((key) => {
66
+ const value = configurationService.getValue(key, {
67
+ resource: resourceUri ? Uri.parse(resourceUri) : undefined,
68
+ overrideIdentifier: language,
69
+ });
70
+ if (value === undefined) {
71
+ return;
72
+ }
73
+ if (!diffEditorOptionsConverters.get(key)) {
74
+ editorOptions[key] = value;
75
+ } else {
76
+ const converter: IMonacoOptionsConverter = diffEditorOptionsConverters.get(key)! as IMonacoOptionsConverter;
77
+ diffOptions[converter.monaco] = converter.convert ? converter.convert(value) : value;
78
+ }
79
+ });
80
+
81
+ return {
82
+ editorOptions: removeUndefined(editorOptions),
83
+ modelOptions: removeUndefined(modelOptions),
84
+ diffOptions: removeUndefined(diffOptions),
85
+ };
86
+ }
87
+
88
+ type NoConverter = false;
89
+ type KaitianPreferenceKey = string;
90
+ type MonacoPreferenceKey = string;
91
+ /**
92
+ * monacoOption和Preference的转换
93
+ */
94
+ interface IMonacoOptionsConverter {
95
+ /**
96
+ * monaco编辑器的设置值
97
+ */
98
+ monaco: MonacoPreferenceKey;
99
+ /**
100
+ * 转换器:输入为Preference值,输出monaco Options值
101
+ */
102
+ convert?: (value: any) => any;
103
+ }
104
+ /**
105
+ * Configuration options for the editor.
106
+ */
107
+ export const editorOptionsConverters: Map<KaitianPreferenceKey, NoConverter | IMonacoOptionsConverter> = new Map<
108
+ string,
109
+ NoConverter | IMonacoOptionsConverter
110
+ >([
111
+ /**
112
+ * The aria label for the editor's textarea (when it is focused).
113
+ */
114
+ ['editor.ariaLabel', { monaco: 'ariaLabel' }],
115
+
116
+ /**
117
+ * Render vertical lines at the specified columns.
118
+ * Defaults to empty array.
119
+ */
120
+ ['editor.rulers', { monaco: 'rulers' }],
121
+
122
+ /**
123
+ * A string containing the word separators used when doing word navigation.
124
+ * Defaults to `~!@#$%^&*()-=+[{]}\\|;'',
125
+
126
+ */
127
+ ['editor.wordSeparators', { monaco: 'wordSeparators' }],
128
+
129
+ /**
130
+ * Enable Linux primary clipboard.
131
+ * Defaults to true.
132
+ */
133
+ ['editor.selectionClipboard', { monaco: 'selectionClipboard' }],
134
+
135
+ /**
136
+ * Control the rendering of line numbers.
137
+ * If it is a function, it will be invoked when rendering a line number and the return value will be rendered.
138
+ * Otherwise, if it is a truey, line numbers will be rendered normally (equivalent of using an identity function).
139
+ * Otherwise, line numbers will not be rendered.
140
+ * Defaults to true.
141
+ */
142
+ ['editor.lineNumbers', { monaco: 'lineNumbers' }],
143
+
144
+ /**
145
+ * Render last line number when the file ends with a newline.
146
+ * Defaults to true.
147
+ */
148
+ ['editor.renderFinalNewline', { monaco: 'renderFinalNewline' }],
149
+
150
+ /**
151
+ * Should the corresponding line be selected when clicking on the line number?
152
+ * Defaults to true.
153
+ */
154
+ ['editor.selectOnLineNumbers', { monaco: 'selectOnLineNumbers' }],
155
+
156
+ /**
157
+ * Control the width of line numbers, by reserving horizontal space for rendering at least an amount of digits.
158
+ * Defaults to 5.
159
+ */
160
+ ['editor.lineNumbersMinChars', { monaco: 'lineNumbersMinChars' }],
161
+
162
+ /**
163
+ * Enable the rendering of the glyph margin.
164
+ * Defaults to true in vscode and to false in monaco-editor.
165
+ */
166
+ ['editor.glyphMargin', { monaco: 'glyphMargin' }],
167
+
168
+ /**
169
+ * The width reserved for line decorations (in px).
170
+ * Line decorations are placed between line numbers and the editor content.
171
+ * You can pass in a string in the format floating point followed by "ch". e.g. 1.3ch.
172
+ * Defaults to 10.
173
+ */
174
+ ['editor.lineDecorationsWidth', { monaco: 'lineDecorationsWidth' }],
175
+
176
+ /**
177
+ * When revealing the cursor, a virtual padding (px) is added to the cursor, turning it into a rectangle.
178
+ * This virtual padding ensures that the cursor gets revealed before hitting the edge of the viewport.
179
+ * Defaults to 30 (px).
180
+ */
181
+ ['editor.revealHorizontalRightPadding', { monaco: 'revealHorizontalRightPadding' }],
182
+
183
+ /**
184
+ * Render the editor selection with rounded borders.
185
+ * Defaults to true.
186
+ */
187
+ ['editor.roundedSelection', { monaco: 'roundedSelection' }],
188
+
189
+ /**
190
+ * Class name to be added to the editor.
191
+ */
192
+ ['editor.extraEditorClassName', { monaco: 'extraEditorClassName' }],
193
+
194
+ /**
195
+ * Should the editor be read only.
196
+ * Defaults to false.
197
+ */
198
+ ['editor.readOnly', { monaco: 'readOnly' }],
199
+
200
+ /**
201
+ * Control the behavior and rendering of the scrollbars.
202
+ */
203
+ ['editor.scrollbar', { monaco: 'scrollbar' }],
204
+
205
+ /**
206
+ * Control the behavior and rendering of the minimap.
207
+ */
208
+ [
209
+ 'editor.minimap',
210
+ {
211
+ monaco: 'minimap',
212
+ convert: (value: any) => ({
213
+ enabled: value,
214
+ }),
215
+ },
216
+ ],
217
+
218
+ /**
219
+ * Control the behavior of the find widget.
220
+ */
221
+ ['editor.find', { monaco: 'find' }],
222
+
223
+ /**
224
+ * Display overflow widgets as `fixed`.
225
+ * Defaults to `false`.
226
+ */
227
+ ['editor.fixedOverflowWidgets', { monaco: 'fixedOverflowWidgets' }],
228
+
229
+ /**
230
+ * The number of vertical lanes the overview ruler should render.
231
+ * Defaults to 2.
232
+ */
233
+ ['editor.overviewRulerLanes', { monaco: 'overviewRulerLanes' }],
234
+
235
+ /**
236
+ * Controls if a border should be drawn around the overview ruler.
237
+ * Defaults to `true`.
238
+ */
239
+ ['editor.overviewRulerBorder', { monaco: 'overviewRulerBorder' }],
240
+
241
+ /**
242
+ * Control the cursor animation style, possible values are 'blink', 'smooth', 'phase', 'expand' and 'solid'.
243
+ * Defaults to 'blink'.
244
+ */
245
+ ['editor.cursorBlinking', { monaco: 'cursorBlinking' }],
246
+
247
+ /**
248
+ * Zoom the font in the editor when using the mouse wheel in combination with holding Ctrl.
249
+ * Defaults to false.
250
+ */
251
+ ['editor.mouseWheelZoom', { monaco: 'mouseWheelZoom' }],
252
+
253
+ /**
254
+ * Enable smooth caret animation.
255
+ * Defaults to false.
256
+ */
257
+ ['editor.cursorSmoothCaretAnimation', { monaco: 'cursorSmoothCaretAnimation' }],
258
+
259
+ /**
260
+ * Control the cursor style, either 'block' or 'line'.
261
+ * Defaults to 'line'.
262
+ */
263
+ ['editor.cursorStyle', { monaco: 'cursorStyle' }],
264
+
265
+ /**
266
+ * Control the width of the cursor when cursorStyle is set to 'line'
267
+ */
268
+ ['editor.cursorWidth', { monaco: 'cursorWidth' }],
269
+
270
+ /**
271
+ * Enable font ligatures.
272
+ * Defaults to false.
273
+ */
274
+ ['editor.fontLigatures', { monaco: 'fontLigatures' }],
275
+
276
+ /**
277
+ * Disable the use of `will-change` for the editor margin and lines layers.
278
+ * The usage of `will-change` acts as a hint for browsers to create an extra layer.
279
+ * Defaults to false.
280
+ */
281
+ ['editor.disableLayerHinting', { monaco: 'disableLayerHinting' }],
282
+
283
+ /**
284
+ * Disable the optimizations for monospace fonts.
285
+ * Defaults to false.
286
+ */
287
+ ['editor.disableMonospaceOptimizations', { monaco: 'disableMonospaceOptimizations' }],
288
+
289
+ /**
290
+ * Should the cursor be hidden in the overview ruler.
291
+ * Defaults to false.
292
+ */
293
+ ['editor.hideCursorInOverviewRuler', { monaco: 'hideCursorInOverviewRuler' }],
294
+
295
+ /**
296
+ * Enable that scrolling can go one screen size after the last line.
297
+ * Defaults to true.
298
+ */
299
+ ['editor.scrollBeyondLastLine', { monaco: 'scrollBeyondLastLine' }],
300
+
301
+ /**
302
+ * Enable that scrolling can go beyond the last column by a number of columns.
303
+ * Defaults to 5.
304
+ */
305
+ ['editor.scrollBeyondLastColumn', { monaco: 'scrollBeyondLastColumn' }],
306
+
307
+ /**
308
+ * Enable that the editor animates scrolling to a position.
309
+ * Defaults to false.
310
+ */
311
+ ['editor.smoothScrolling', { monaco: 'smoothScrolling' }],
312
+
313
+ /**
314
+ * Enable that the editor will install an interval to check if its container dom node size has changed.
315
+ * Enabling this might have a severe performance impact.
316
+ * Defaults to false.
317
+ */
318
+ ['editor.automaticLayout', { monaco: 'automaticLayout' }],
319
+
320
+ /**
321
+ * Control the wrapping of the editor.
322
+ * When `wordWrap` = "off", the lines will never wrap.
323
+ * When `wordWrap` = "on", the lines will wrap at the viewport width.
324
+ * When `wordWrap` = "wordWrapColumn", the lines will wrap at `wordWrapColumn`.
325
+ * When `wordWrap` = "bounded", the lines will wrap at min(viewport width, wordWrapColumn).
326
+ * Defaults to "off".
327
+ */
328
+ ['editor.wordWrap', { monaco: 'wordWrap' }],
329
+
330
+ /**
331
+ * Control the wrapping of the editor.
332
+ * When `wordWrap` = "off", the lines will never wrap.
333
+ * When `wordWrap` = "on", the lines will wrap at the viewport width.
334
+ * When `wordWrap` = "wordWrapColumn", the lines will wrap at `wordWrapColumn`.
335
+ * When `wordWrap` = "bounded", the lines will wrap at min(viewport width, wordWrapColumn).
336
+ * Defaults to 80.
337
+ */
338
+ ['editor.wordWrapColumn', { monaco: 'wordWrapColumn' }],
339
+
340
+ /**
341
+ * Force word wrapping when the text appears to be of a minified/generated file.
342
+ * Defaults to true.
343
+ */
344
+ ['editor.wordWrapMinified', { monaco: 'wordWrapMinified' }],
345
+
346
+ /**
347
+ * Control indentation of wrapped lines. Can 'be',
348
+
349
+ * Defaults to 'same' in vscode and to 'none' in monaco-editor.
350
+ */
351
+ ['editor.wrappingIndent', { monaco: 'wrappingIndent' }],
352
+
353
+ /**
354
+ * Configure word wrapping characters. A break will be introduced before these characters.
355
+ * Defaults to '{([+'.
356
+ */
357
+ ['editor.wordWrapBreakBeforeCharacters', { monaco: 'wordWrapBreakBeforeCharacters' }],
358
+
359
+ /**
360
+ * Configure word wrapping characters. A break will be introduced after these characters.
361
+ * Defaults to ' \t})]?|&,;'.
362
+ */
363
+ ['editor.wordWrapBreakAfterCharacters', { monaco: 'wordWrapBreakAfterCharacters' }],
364
+
365
+ /**
366
+ * Configure word wrapping characters. A break will be introduced after these characters only if no `wordWrapBreakBeforeCharacters` or `wordWrapBreakAfterCharacters` were found.
367
+ * Defaults to '.'.
368
+ */
369
+ ['editor.wordWrapBreakObtrusiveCharacters', { monaco: 'wordWrapBreakObtrusiveCharacters' }],
370
+
371
+ /**
372
+ * Performance 'guard',
373
+
374
+ * Defaults to 10000.
375
+ * Use -1 to never stop rendering
376
+ */
377
+ ['editor.stopRenderingLineAfter', { monaco: 'stopRenderingLineAfter' }],
378
+
379
+ /**
380
+ * Configure the editor's hover.
381
+ */
382
+ ['editor.hover', { monaco: 'hover' }],
383
+
384
+ /**
385
+ * Enable detecting links and making them clickable.
386
+ * Defaults to true.
387
+ */
388
+ ['editor.links', { monaco: 'links' }],
389
+
390
+ /**
391
+ * Enable inline color decorators and color picker rendering.
392
+ */
393
+ ['editor.colorDecorators', { monaco: 'colorDecorators' }],
394
+
395
+ /**
396
+ * Enable custom contextmenu.
397
+ * Defaults to true.
398
+ */
399
+ ['editor.contextmenu', { monaco: 'contextmenu' }],
400
+
401
+ /**
402
+ * A multiplier to be used on the `deltaX` and `deltaY` of mouse wheel scroll events.
403
+ * Defaults to 1.
404
+ */
405
+ ['editor.mouseWheelScrollSensitivity', { monaco: 'mouseWheelScrollSensitivity' }],
406
+
407
+ /**
408
+ * FastScrolling mulitplier speed when pressing `Alt`
409
+ * Defaults to 5.
410
+ */
411
+ ['editor.fastScrollSensitivity', { monaco: 'fastScrollSensitivity' }],
412
+
413
+ /**
414
+ * The modifier to be used to add multiple cursors with the mouse.
415
+ * Defaults to 'alt'
416
+ */
417
+ ['editor.multiCursorModifier', { monaco: 'multiCursorModifier' }],
418
+
419
+ /**
420
+ * Merge overlapping selections.
421
+ * Defaults to true
422
+ */
423
+ ['editor.multiCursorMergeOverlapping', { monaco: 'multiCursorMergeOverlapping' }],
424
+
425
+ /**
426
+ * Configure the editor's accessibility support.
427
+ * Defaults to 'auto'. It is best to leave this to 'auto'.
428
+ */
429
+ ['editor.accessibilitySupport', { monaco: 'accessibilitySupport' }],
430
+
431
+ /**
432
+ * Suggest options.
433
+ */
434
+ ['editor.suggest', { monaco: 'suggest' }],
435
+
436
+ /**
437
+ *
438
+ */
439
+ ['editor.gotoLocation', { monaco: 'gotoLocation' }],
440
+
441
+ /**
442
+ * Enable quick suggestions (shadow suggestions)
443
+ * Defaults to true.
444
+ */
445
+ ['editor.quickSuggestions', { monaco: 'quickSuggestions' }],
446
+ /**
447
+ * Quick suggestions show delay (in ms)
448
+ * Defaults to 500 (ms)
449
+ */
450
+ ['editor.quickSuggestionsDelay', { monaco: 'quickSuggestionsDelay' }],
451
+
452
+ /**
453
+ * Parameter hint options.
454
+ */
455
+ ['editor.parameterHints', { monaco: 'parameterHints' }],
456
+
457
+ /**
458
+ * Options for auto closing brackets.
459
+ * Defaults to language defined behavior.
460
+ */
461
+ ['editor.autoClosingBrackets', { monaco: 'autoClosingBrackets' }],
462
+
463
+ /**
464
+ * Options for auto closing quotes.
465
+ * Defaults to language defined behavior.
466
+ */
467
+ ['editor.autoClosingQuotes', { monaco: 'autoClosingQuotes' }],
468
+
469
+ /**
470
+ * Options for auto surrounding.
471
+ * Defaults to always allowing auto surrounding.
472
+ */
473
+ ['editor.autoSurround', { monaco: 'autoSurround' }],
474
+
475
+ /**
476
+ * Enable auto indentation adjustment.
477
+ * Defaults to false.
478
+ */
479
+ ['editor.autoIndent', { monaco: 'autoIndent' }],
480
+
481
+ /**
482
+ * Enable format on type.
483
+ * Defaults to false.
484
+ */
485
+ ['editor.formatOnType', { monaco: 'formatOnType' }],
486
+
487
+ /**
488
+ * Enable format on paste.
489
+ * Defaults to false.
490
+ */
491
+ ['editor.formatOnPaste', { monaco: 'formatOnPaste' }],
492
+
493
+ /**
494
+ * Controls if the editor should allow to move selections via drag and drop.
495
+ * Defaults to false.
496
+ */
497
+ ['editor.dragAndDrop', { monaco: 'dragAndDrop' }],
498
+
499
+ /**
500
+ * Enable the suggestion box to pop-up on trigger characters.
501
+ * Defaults to true.
502
+ */
503
+ ['editor.suggestOnTriggerCharacters', { monaco: 'suggestOnTriggerCharacters' }],
504
+
505
+ /**
506
+ * Accept suggestions on ENTER.
507
+ * Defaults to 'on'.
508
+ */
509
+ ['editor.acceptSuggestionOnEnter', { monaco: 'acceptSuggestionOnEnter' }],
510
+
511
+ /**
512
+ * Accept suggestions on provider defined characters.
513
+ * Defaults to true.
514
+ */
515
+ ['editor.acceptSuggestionOnCommitCharacter', { monaco: 'acceptSuggestionOnCommitCharacter' }],
516
+
517
+ /**
518
+ * Enable snippet suggestions. Default to 'true'.
519
+ */
520
+ ['editor.snippetSuggestions', { monaco: 'snippetSuggestions' }],
521
+
522
+ /**
523
+ * Copying without a selection copies the current line.
524
+ */
525
+ ['editor.emptySelectionClipboard', { monaco: 'emptySelectionClipboard' }],
526
+
527
+ /**
528
+ * Syntax highlighting is copied.
529
+ */
530
+ ['editor.copyWithSyntaxHighlighting', { monaco: 'copyWithSyntaxHighlighting' }],
531
+
532
+ /**
533
+ * Enable word based suggestions. Defaults to 'true'
534
+ */
535
+ ['editor.wordBasedSuggestions', { monaco: 'wordBasedSuggestions' }],
536
+
537
+ /**
538
+ * The history mode for suggestions.
539
+ */
540
+ ['editor.suggestSelection', { monaco: 'suggestSelection' }],
541
+
542
+ /**
543
+ * The font size for the suggest widget.
544
+ * Defaults to the editor font size.
545
+ */
546
+ ['editor.suggestFontSize', { monaco: 'suggestFontSize' }],
547
+
548
+ /**
549
+ * The line height for the suggest widget.
550
+ * Defaults to the editor line height.
551
+ */
552
+ ['editor.suggestLineHeight', { monaco: 'suggestLineHeight' }],
553
+
554
+ /**
555
+ * Enable tab completion.
556
+ */
557
+ ['editor.tabCompletion', { monaco: 'tabCompletion' }],
558
+
559
+ /**
560
+ * Enable selection highlight.
561
+ * Defaults to true.
562
+ */
563
+ ['editor.selectionHighlight', { monaco: 'selectionHighlight' }],
564
+
565
+ /**
566
+ * Enable semantic occurrences highlight.
567
+ * Defaults to true.
568
+ */
569
+ ['editor.occurrencesHighlight', { monaco: 'occurrencesHighlight' }],
570
+
571
+ /**
572
+ * Show code lens
573
+ * Defaults to true.
574
+ */
575
+ ['editor.codeLens', { monaco: 'codeLens' }],
576
+
577
+ /**
578
+ * Control the behavior and rendering of the code action lightbulb.
579
+ */
580
+ ['editor.lightbulb', { monaco: 'lightbulb' }],
581
+
582
+ /**
583
+ * Code action kinds to be run on save.
584
+ */
585
+ ['editor.codeActionsOnSave', { monaco: 'codeActionsOnSave' }],
586
+
587
+ /**
588
+ * Timeout for running code actions on save.
589
+ */
590
+ ['editor.codeActionsOnSaveTimeout', { monaco: 'codeActionsOnSaveTimeout' }],
591
+
592
+ /**
593
+ * Enable code folding
594
+ * Defaults to true.
595
+ */
596
+ ['editor.folding', { monaco: 'folding' }],
597
+
598
+ /**
599
+ * Selects the folding strategy. 'auto' uses the strategies contributed for the current document, 'indentation' uses the indentation based folding strategy.
600
+ * Defaults to 'auto'.
601
+ */
602
+ ['editor.foldingStrategy', { monaco: 'foldingStrategy' }],
603
+
604
+ /**
605
+ * Controls whether the fold actions in the gutter stay always visible or hide unless the mouse is over the gutter.
606
+ * Defaults to 'mouseover'.
607
+ */
608
+ ['editor.showFoldingControls', { monaco: 'showFoldingControls' }],
609
+
610
+ /**
611
+ * Enable highlighting of matching brackets.
612
+ * Defaults to true.
613
+ */
614
+ ['editor.matchBrackets', { monaco: 'matchBrackets' }],
615
+
616
+ /**
617
+ * Enable rendering of whitespace.
618
+ * Defaults to none.
619
+ */
620
+ ['editor.renderWhitespace', { monaco: 'renderWhitespace' }],
621
+
622
+ /**
623
+ * Enable rendering of control characters.
624
+ * Defaults to false.
625
+ */
626
+ ['editor.renderControlCharacters', { monaco: 'renderControlCharacters' }],
627
+
628
+ /**
629
+ * Enable rendering of indent guides.
630
+ * Defaults to true.
631
+ */
632
+ ['editor.renderIndentGuides', { monaco: 'guides.indentation' }],
633
+
634
+ /**
635
+ * Enable highlighting of the active indent guide.
636
+ * Defaults to true.
637
+ */
638
+ ['editor.highlightActiveIndentGuide', { monaco: 'guides.highlightActiveIndentation' }],
639
+
640
+ /**
641
+ * editor.guides -> guides
642
+ */
643
+ ['editor.guides', { monaco: 'guides' }],
644
+
645
+ /**
646
+ * Enable rendering of current line highlight.
647
+ * Defaults to all.
648
+ */
649
+ ['editor.renderLineHighlight', { monaco: 'renderLineHighlight' }],
650
+
651
+ /**
652
+ * Inserting and deleting whitespace follows tab stops.
653
+ */
654
+ ['editor.useTabStops', { monaco: 'useTabStops' }],
655
+
656
+ /**
657
+ * The font family
658
+ */
659
+ ['editor.fontFamily', { monaco: 'fontFamily' }],
660
+
661
+ /**
662
+ * The font weight
663
+ */
664
+ ['editor.fontWeight', { monaco: 'fontWeight' }],
665
+
666
+ /**
667
+ * The font size
668
+ */
669
+ ['editor.fontSize', { monaco: 'fontSize' }],
670
+
671
+ /**
672
+ * The line height
673
+ */
674
+ ['editor.lineHeight', { monaco: 'lineHeight' }],
675
+
676
+ /**
677
+ * The letter spacing
678
+ */
679
+ ['editor.letterSpacing', { monaco: 'letterSpacing' }],
680
+
681
+ /**
682
+ * Controls fading out of unused variables.
683
+ */
684
+ ['editor.showUnused', { monaco: 'showUnused' }],
685
+
686
+ ['editor.rename.enablePreview', { monaco: 'editor.rename.enablePreview' }],
687
+
688
+ ['editor.semanticHighlighting', { monaco: 'semanticHighlighting' }],
689
+
690
+ ['editor.bracketPairColorization', { monaco: 'bracketPairColorization' }],
691
+
692
+ /**
693
+ * Controls the algorithm that computes wrapping points.
694
+ * Default is "advanced" (Monaco Editor default is "simple")
695
+ */
696
+ ['editor.wrappingStrategy', { monaco: 'wrappingStrategy' }],
697
+
698
+ [
699
+ 'editor.experimental.stickyScroll.enabled',
700
+ {
701
+ monaco: 'experimental',
702
+ convert: (value) => ({
703
+ stickyScroll: {
704
+ enabled: value,
705
+ },
706
+ }),
707
+ },
708
+ ],
709
+
710
+ /**
711
+ * 是否强行readonly
712
+ */
713
+ [
714
+ 'editor.forceReadOnly',
715
+ {
716
+ monaco: 'readOnly',
717
+ convert: (value: boolean) => {
718
+ if (value) {
719
+ return true;
720
+ } else {
721
+ return undefined;
722
+ }
723
+ },
724
+ },
725
+ ],
726
+ ]);
727
+
728
+ export const textModelUpdateOptionsConverters: Map<KaitianPreferenceKey, NoConverter | IMonacoOptionsConverter> =
729
+ new Map<string, NoConverter | IMonacoOptionsConverter>([
730
+ ['editor.tabSize', { monaco: 'tabSize' }],
731
+ ['editor.indentSize', { monaco: 'indentSize' }],
732
+ ['editor.insertSpaces', { monaco: 'insertSpaces' }],
733
+ ['editor.trimAutoWhitespace', { monaco: 'trimAutoWhitespace' }],
734
+ ]);
735
+
736
+ export const diffEditorOptionsConverters: Map<KaitianPreferenceKey, NoConverter | IMonacoOptionsConverter> = new Map<
737
+ string,
738
+ NoConverter | IMonacoOptionsConverter
739
+ >([
740
+ /**
741
+ * Allow the user to resize the diff editor split view.
742
+ * Defaults to true.
743
+ */
744
+ ['diffEditor.enableSplitViewResizing', { monaco: 'enableSplitViewResizing' }],
745
+ /**
746
+ * Render the differences in two side-by-side editors.
747
+ * Defaults to true.
748
+ */
749
+ ['diffEditor.renderSideBySide', { monaco: 'renderSideBySide' }],
750
+ /**
751
+ * Compute the diff by ignoring leading/trailing whitespace
752
+ * Defaults to true.
753
+ */
754
+ ['diffEditor.ignoreTrimWhitespace', { monaco: 'ignoreTrimWhitespace' }],
755
+ /**
756
+ * Render +/- indicators for added/deleted changes.
757
+ * Defaults to true.
758
+ */
759
+ ['diffEditor.renderIndicators', { monaco: 'renderIndicators' }],
760
+ /**
761
+ * Original model should be editable?
762
+ * Defaults to false.
763
+ */
764
+ ['diffEditor.originalEditable', { monaco: 'originalEditable' }],
765
+ ]);
766
+
767
+ function isContainOptionKey(key: string, optionMap: Map<KaitianPreferenceKey, NoConverter | IMonacoOptionsConverter>) {
768
+ if (optionMap.has(key)) {
769
+ return true;
770
+ } else {
771
+ // 处理 "包含" 情况下的配置判断,如
772
+ // editor.suggest.xxx
773
+ const keys = optionMap.keys();
774
+ for (const k of keys) {
775
+ if (key.startsWith(k)) {
776
+ return true;
777
+ }
778
+ }
779
+ }
780
+ return false;
781
+ }
782
+
783
+ export function isEditorOption(key: string) {
784
+ return (
785
+ isContainOptionKey(key, editorOptionsConverters) ||
786
+ isContainOptionKey(key, textModelUpdateOptionsConverters) ||
787
+ isContainOptionKey(key, diffEditorOptionsConverters)
788
+ );
789
+ }
790
+
791
+ export function isDiffEditorOption(key: string): boolean {
792
+ return isContainOptionKey(key, diffEditorOptionsConverters);
793
+ }