@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,6 @@
1
+ export * from './doc-cache';
2
+ export * from './editor';
3
+ export * from './resource';
4
+ export * from './language';
5
+ export * from './utils';
6
+ export * from './language-status';
@@ -0,0 +1,33 @@
1
+ import {
2
+ IAccessibilityInformation,
3
+ IDisposable,
4
+ Severity,
5
+ Event,
6
+ StatusBarHoverCommand,
7
+ } from '@opensumi/ide-core-common';
8
+ // eslint-disable-next-line import/no-restricted-paths
9
+ import type { ITextModel } from '@opensumi/ide-monaco/lib/browser/monaco-api/types';
10
+
11
+ import { LanguageSelector } from './language';
12
+
13
+ export const ILanguageStatusService = Symbol('ILanguageStatusService');
14
+ export interface ILanguageStatusService {
15
+ onDidChange: Event<void>;
16
+
17
+ addStatus(status: ILanguageStatus): IDisposable;
18
+
19
+ getLanguageStatus(model: ITextModel): ILanguageStatus[];
20
+ }
21
+
22
+ export interface ILanguageStatus {
23
+ readonly id: string;
24
+ readonly name: string;
25
+ readonly selector: LanguageSelector;
26
+ readonly severity: Severity;
27
+ readonly label: string;
28
+ readonly detail: string;
29
+ readonly source: string;
30
+ readonly command?: StatusBarHoverCommand;
31
+ readonly accessibilityInfo: IAccessibilityInformation | undefined;
32
+ readonly busy: boolean;
33
+ }
@@ -0,0 +1,206 @@
1
+ import LSTypes from 'vscode-languageserver-types';
2
+
3
+ import { MarkerSeverity } from '@opensumi/ide-core-common';
4
+ import { CancellationToken, IDisposable, IRelativePattern } from '@opensumi/ide-core-common';
5
+ import { URI as Uri } from '@opensumi/monaco-editor-core/esm/vs/base/common/uri';
6
+ import { editor } from '@opensumi/monaco-editor-core/esm/vs/editor/editor.api';
7
+ import type { IRelatedInformation } from '@opensumi/monaco-editor-core/esm/vs/platform/markers/common/markers';
8
+
9
+ export const ILanguageService = Symbol('ILanguageService');
10
+
11
+ export interface ILanguageService {
12
+ languages: Language[];
13
+ workspaceSymbolProviders: WorkspaceSymbolProvider[];
14
+ getLanguage(languageId: string): Language | undefined;
15
+ registerWorkspaceSymbolProvider(provider: WorkspaceSymbolProvider): IDisposable;
16
+ }
17
+
18
+ export interface DiagnosticCollection extends IDisposable {
19
+ set(uri: string, diagnostics: Diagnostic[]): void;
20
+ }
21
+ /**
22
+ * Represents a related message and source code location for a diagnostic. This should be
23
+ * used to point to code locations that cause or related to a diagnostics, e.g when duplicating
24
+ * a symbol in a scope.
25
+ */
26
+ export interface DiagnosticRelatedInformation {
27
+ /**
28
+ * The location of this related diagnostic information.
29
+ */
30
+ location: LSTypes.Location;
31
+ /**
32
+ * The message of this related diagnostic information.
33
+ */
34
+ message: string;
35
+ }
36
+ /**
37
+ * The DiagnosticRelatedInformation namespace provides helper functions to work with
38
+ * [DiagnosticRelatedInformation](#DiagnosticRelatedInformation) literals.
39
+ */
40
+ export declare namespace DiagnosticRelatedInformation {
41
+ /**
42
+ * Creates a new DiagnosticRelatedInformation literal.
43
+ */
44
+ function create(location: Location, message: string): DiagnosticRelatedInformation;
45
+ /**
46
+ * Checks whether the given literal conforms to the [DiagnosticRelatedInformation](#DiagnosticRelatedInformation) interface.
47
+ */
48
+ function is(value: any): value is DiagnosticRelatedInformation;
49
+ }
50
+
51
+ export enum DiagnosticSeverity {
52
+ Error = 1,
53
+ Warning = 2,
54
+ Information = 3,
55
+ Hint = 4,
56
+ }
57
+
58
+ /**
59
+ * Represents a diagnostic, such as a compiler error or warning. Diagnostic objects
60
+ * are only valid in the scope of a resource.
61
+ */
62
+ export interface Diagnostic {
63
+ /**
64
+ * The range at which the message applies
65
+ */
66
+ range: LSTypes.Range;
67
+ /**
68
+ * The diagnostic's severity. Can be omitted. If omitted it is up to the
69
+ * client to interpret diagnostics as error, warning, info or hint.
70
+ */
71
+ severity: DiagnosticSeverity;
72
+
73
+ /**
74
+ * A code or identifier for this diagnostic.
75
+ * Should be used for later processing, e.g. when providing {@link CodeActionContext code actions}.
76
+ */
77
+ code?:
78
+ | string
79
+ | number
80
+ | {
81
+ /**
82
+ * A code or identifier for this diagnostic.
83
+ * Should be used for later processing, e.g. when providing {@link CodeActionContext code actions}.
84
+ */
85
+ value: string | number;
86
+
87
+ /**
88
+ * A target URI to open with more information about the diagnostic error.
89
+ */
90
+ target: Uri;
91
+ };
92
+ /**
93
+ * A human-readable string describing the source of this
94
+ * diagnostic, e.g. 'typescript' or 'super lint'.
95
+ */
96
+ source?: string;
97
+ /**
98
+ * The diagnostic's message.
99
+ */
100
+ message: string;
101
+ /**
102
+ * An array of related diagnostic information, e.g. when symbol-names within
103
+ * a scope collide all definitions can be marked via this property.
104
+ */
105
+ relatedInformation?: DiagnosticRelatedInformation[];
106
+
107
+ tags?: DiagnosticTag[];
108
+ }
109
+
110
+ export enum DiagnosticTag {
111
+ Unnecessary = 1,
112
+ Deprecated = 2,
113
+ }
114
+
115
+ export function asSeverity(severity?: number): MarkerSeverity {
116
+ if (severity === 1) {
117
+ return MarkerSeverity.Error;
118
+ }
119
+ if (severity === 2) {
120
+ return MarkerSeverity.Warning;
121
+ }
122
+ if (severity === 3) {
123
+ return MarkerSeverity.Info;
124
+ }
125
+ return MarkerSeverity.Hint;
126
+ }
127
+ export function asRelatedInformations(
128
+ relatedInformation?: DiagnosticRelatedInformation[],
129
+ ): IRelatedInformation[] | undefined {
130
+ if (!relatedInformation) {
131
+ return undefined;
132
+ }
133
+ return relatedInformation.map((item) => asRelatedInformation(item));
134
+ }
135
+
136
+ export function asRelatedInformation(relatedInformation: DiagnosticRelatedInformation): IRelatedInformation {
137
+ return {
138
+ resource: Uri.parse(relatedInformation.location.uri),
139
+ startLineNumber: relatedInformation.location.range.start.line + 1,
140
+ startColumn: relatedInformation.location.range.start.character + 1,
141
+ endLineNumber: relatedInformation.location.range.end.line + 1,
142
+ endColumn: relatedInformation.location.range.end.character + 1,
143
+ message: relatedInformation.message,
144
+ };
145
+ }
146
+ export function asMonacoDiagnostics(diagnostics: Diagnostic[] | undefined): editor.IMarkerData[] | undefined {
147
+ if (!diagnostics) {
148
+ return undefined;
149
+ }
150
+ return diagnostics.map((diagnostic) => asMonacoDiagnostic(diagnostic));
151
+ }
152
+
153
+ export function asMonacoDiagnostic(diagnostic: Diagnostic): editor.IMarkerData {
154
+ return {
155
+ code:
156
+ typeof diagnostic.code === 'number'
157
+ ? diagnostic.code.toString()
158
+ : typeof diagnostic.code === 'object'
159
+ ? {
160
+ value: diagnostic.code.value.toString(),
161
+ target: diagnostic.code.target,
162
+ }
163
+ : diagnostic.code,
164
+ severity: asSeverity(diagnostic.severity),
165
+ message: diagnostic.message,
166
+ source: diagnostic.source,
167
+ // language server range is 0-based, marker is 1-based
168
+ startLineNumber: diagnostic.range.start.line + 1,
169
+ startColumn: diagnostic.range.start.character + 1,
170
+ endLineNumber: diagnostic.range.end.line + 1,
171
+ endColumn: diagnostic.range.end.character + 1,
172
+ relatedInformation: asRelatedInformations(diagnostic.relatedInformation),
173
+ tags: diagnostic.tags as number[],
174
+ };
175
+ }
176
+
177
+ export interface WorkspaceSymbolParams {
178
+ query: string;
179
+ }
180
+
181
+ export interface WorkspaceSymbolProvider {
182
+ provideWorkspaceSymbols(
183
+ params: WorkspaceSymbolParams,
184
+ token: CancellationToken,
185
+ ): Thenable<LSTypes.SymbolInformation[]>;
186
+ resolveWorkspaceSymbol(
187
+ symbol: LSTypes.SymbolInformation,
188
+ token: CancellationToken,
189
+ ): Thenable<LSTypes.SymbolInformation>;
190
+ }
191
+
192
+ export interface Language {
193
+ readonly id: string;
194
+ readonly name: string;
195
+ readonly extensions: Set<string>;
196
+ readonly filenames: Set<string>;
197
+ }
198
+
199
+ export interface LanguageFilter {
200
+ language?: string;
201
+ scheme?: string;
202
+ pattern?: string | IRelativePattern;
203
+ hasAccessToAllModels?: boolean;
204
+ }
205
+
206
+ export type LanguageSelector = string | LanguageFilter | (string | LanguageFilter)[];
@@ -0,0 +1,52 @@
1
+ import { Injectable } from '@opensumi/di';
2
+ import { URI, Emitter, MaybeNull, Event } from '@opensumi/ide-core-common';
3
+
4
+ // eslint-disable-next-line import/no-restricted-paths
5
+ import type { IEditorGroup } from '../../browser';
6
+ import { WorkbenchEditorService, IResourceOpenOptions, IUntitledOptions, IOpenResourceResult } from '../editor';
7
+ import { IResource } from '../resource';
8
+
9
+ @Injectable()
10
+ export class MockWorkbenchEditorService extends WorkbenchEditorService {
11
+ private readonly _onActiveResourceChange = new Emitter<MaybeNull<IResource>>();
12
+ public readonly onActiveResourceChange: Event<MaybeNull<IResource>> = this._onActiveResourceChange.event;
13
+
14
+ private readonly _onDidEditorGroupsChanged = new Emitter<void>();
15
+ public readonly onDidEditorGroupsChanged: Event<void> = this._onDidEditorGroupsChanged.event;
16
+
17
+ private readonly _onDidCurrentEditorGroupChanged = new Emitter<IEditorGroup>();
18
+ public readonly onDidCurrentEditorGroupChanged: Event<IEditorGroup> = this._onDidCurrentEditorGroupChanged.event;
19
+
20
+ async closeAll(uri?: URI, force?: boolean): Promise<void> {
21
+ throw new Error('Method not implemented.');
22
+ }
23
+
24
+ async open(uri: URI, options?: IResourceOpenOptions): Promise<IOpenResourceResult> {
25
+ throw new Error('Method not implemented.');
26
+ }
27
+
28
+ async openUris(uri: URI[]): Promise<void> {
29
+ throw new Error('Method not implemented.');
30
+ }
31
+
32
+ saveAll(includeUntitled?: boolean): Promise<void> {
33
+ throw new Error('Method not implemented.');
34
+ }
35
+
36
+ async close(uri: any, force?: boolean): Promise<void> {
37
+ throw new Error('Method not implemented.');
38
+ }
39
+
40
+ getAllOpenedUris(): URI[] {
41
+ throw new Error('Method not implemented.');
42
+ }
43
+
44
+ // 创建一个带待存的资源
45
+ createUntitledResource(options?: IUntitledOptions): Promise<IOpenResourceResult> {
46
+ throw new Error('Method not implemented.');
47
+ }
48
+
49
+ setEditorContextKeyService() {
50
+ throw new Error('Method not implemented.');
51
+ }
52
+ }
@@ -0,0 +1,147 @@
1
+ import { URI, BasicEvent, MaybePromise, IDisposable, Event } from '@opensumi/ide-core-common';
2
+
3
+ export interface IResourceProvider {
4
+ scheme?: string; // 相当于 handlesUri => 10
5
+
6
+ /**
7
+ * 一个 provider 是否处理某个资源
8
+ * 返回优先级,这个值越高的 provider 越优先处理, 小于 0 表示不处理
9
+ * 这个比较的计算结果会被缓存,仅仅当 provider 数量变更时才会清空
10
+ * 存在 handlesURI 时, 上面的scheme会被忽略
11
+ */
12
+ handlesUri?(uri: URI): number;
13
+
14
+ provideResource(uri: URI): MaybePromise<IResource>;
15
+
16
+ provideResourceSubname?(resource: IResource, groupResources: IResource[]): string | null;
17
+
18
+ shouldCloseResource?(resource: IResource, openedResources: IResource[][]): MaybePromise<boolean>;
19
+ /**
20
+ * 只是用来判断一个 resource 是否可以被 Close
21
+ * 与 shouldCloseResource 的区别是,这个方法不会触发真实的 close,你需要手动调用 `close` 方法
22
+ */
23
+ shouldCloseResourceWithoutConfirm?(resource: IResource): MaybePromise<boolean>;
24
+
25
+ close?(resource: IResource, saveAction: AskSaveResult): MaybePromise<boolean>;
26
+
27
+ onDisposeResource?(resource: IResource): void;
28
+ }
29
+
30
+ export abstract class ResourceService {
31
+ /**
32
+ * 注册一个新的 ResourceProvider 会触发该事件
33
+ */
34
+ readonly onRegisterResourceProvider: Event<IResourceProvider>;
35
+ /**
36
+ * 写在一个 ResourceProvider 会触发该事件
37
+ */
38
+ readonly onUnregisterResourceProvider: Event<IResourceProvider>;
39
+ /**
40
+ * 根据uri获得一个资源信息
41
+ * 如果uri没有对应的resource提供者,则会返回null
42
+ * @param uri
43
+ */
44
+ abstract getResource(uri: URI): Promise<IResource | null>;
45
+
46
+ /**
47
+ * 注册一个resource提供方
48
+ * @param provider
49
+ */
50
+ abstract registerResourceProvider(provider: IResourceProvider): IDisposable;
51
+
52
+ /**
53
+ * 是否能关闭一个资源
54
+ */
55
+ abstract shouldCloseResource(resource: IResource, openedResources: IResource[][]): Promise<boolean>;
56
+
57
+ /**
58
+ * 与 `shouldCloseResource` 不同的点在于:不弹窗让用户确认
59
+ * 返回 true 说明用户可以之后调用 `close` 方法将其关闭
60
+ */
61
+ abstract shouldCloseResourceWithoutConfirm(resource: IResource): Promise<boolean>;
62
+ close?(resource: IResource, saveAction: AskSaveResult): MaybePromise<boolean>;
63
+
64
+ abstract getResourceDecoration(uri: URI): IResourceDecoration;
65
+
66
+ abstract getResourceSubname(resource: IResource, groupResources: IResource[]): string | null;
67
+
68
+ /**
69
+ * 销毁一个 resource
70
+ * @param resource
71
+ */
72
+ abstract disposeResource(resource: IResource<any>): void;
73
+
74
+ /**
75
+ * 是否存在 provider 可以处理某个 uri
76
+ */
77
+ abstract handlesUri(uri: URI): boolean;
78
+ }
79
+
80
+ /**
81
+ * 当资源信息被更新时,期望provider发送这么一个事件,让当前使用资源的服务能及时了解
82
+ */
83
+ export class ResourceNeedUpdateEvent extends BasicEvent<URI> {}
84
+
85
+ export class ResourceDidUpdateEvent extends BasicEvent<URI> {}
86
+
87
+ export class ResourceRemoveEvent extends BasicEvent<URI> {}
88
+
89
+ export class ResourceDecorationChangeEvent extends BasicEvent<IResourceDecorationChangeEventPayload> {}
90
+
91
+ export class ResourceDecorationNeedChangeEvent extends BasicEvent<IResourceDecorationChangeEventPayload> {}
92
+
93
+ export type IResourceUpdateType = 'change' | 'remove';
94
+
95
+ export interface IResourceDecoration {
96
+ dirty: boolean;
97
+ }
98
+
99
+ export interface IResourceDecorationChangeEventPayload {
100
+ uri: URI;
101
+ decoration: IResourceDecoration;
102
+ }
103
+
104
+ /**
105
+ * Resource
106
+ * 一个资源代表了一个能够在编辑器区域被打开的东西
107
+ */
108
+ export interface IResource<MetaData = any> {
109
+ /**
110
+ * 是否允许刷新后恢复
111
+ */
112
+ supportsRevive?: boolean;
113
+
114
+ // 资源名称
115
+ name: string;
116
+ // 资源URI
117
+ uri: URI;
118
+ // 资源icon的class
119
+ icon: string;
120
+ // 资源的额外信息
121
+ metadata?: MetaData;
122
+ // 资源已被删除
123
+ deleted?: any;
124
+ }
125
+
126
+ export type IDiffResource = IResource<{ original: URI; modified: URI }>;
127
+
128
+ export const DIFF_SCHEME = 'diff';
129
+
130
+ export function isDiffResource(resource: IResource): resource is IDiffResource {
131
+ return resource.uri.scheme === DIFF_SCHEME;
132
+ }
133
+
134
+ export enum AskSaveResult {
135
+ REVERT = 1,
136
+ SAVE = 2,
137
+ CANCEL = 3,
138
+ }
139
+
140
+ // #region merge editor
141
+ export type IMergeEditorResource = IResource<{
142
+ ancestor: string;
143
+ input1: string;
144
+ input2: string;
145
+ output: string;
146
+ }>;
147
+ // #endregion merge editor
@@ -0,0 +1,10 @@
1
+ import { DragOverPosition, EditorGroupSplitAction } from './editor';
2
+
3
+ export function getSplitActionFromDragDrop(position: DragOverPosition): EditorGroupSplitAction {
4
+ return {
5
+ [DragOverPosition.LEFT]: EditorGroupSplitAction.Left,
6
+ [DragOverPosition.RIGHT]: EditorGroupSplitAction.Right,
7
+ [DragOverPosition.BOTTOM]: EditorGroupSplitAction.Bottom,
8
+ [DragOverPosition.TOP]: EditorGroupSplitAction.Top,
9
+ }[position];
10
+ }
package/src/index.ts ADDED
@@ -0,0 +1 @@
1
+ export * from './common';
@@ -1,2 +0,0 @@
1
- export * from '@opensumi/ide-core-browser/lib/components/scroll';
2
- //# sourceMappingURL=scroll.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"scroll.d.ts","sourceRoot":"","sources":["../../../../src/browser/component/scroll/scroll.tsx"],"names":[],"mappings":"AAAA,cAAc,kDAAkD,CAAC"}
@@ -1,5 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const tslib_1 = require("tslib");
4
- tslib_1.__exportStar(require("@opensumi/ide-core-browser/lib/components/scroll"), exports);
5
- //# sourceMappingURL=scroll.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"scroll.js","sourceRoot":"","sources":["../../../../src/browser/component/scroll/scroll.tsx"],"names":[],"mappings":";;;AAAA,2FAAiE"}
@@ -1,86 +0,0 @@
1
- @import '~@opensumi/ide-core-browser/lib/style/variable.less';
2
-
3
- .track-vertical {
4
- position: absolute;
5
- right: 0;
6
- top: 0;
7
- height: 100%;
8
- width: 10px;
9
- }
10
- .scroll-vertical {
11
- position: absolute;
12
- right: 0;
13
- top: 0;
14
- height: 100%;
15
- width: 10px;
16
- z-index: 2;
17
- }
18
-
19
- .track-horizontal {
20
- position: absolute;
21
- bottom: 0;
22
- left: 0;
23
- width: 100%;
24
- height: 5px;
25
- }
26
- .scroll-horizontal {
27
- position: absolute;
28
- bottom: 0;
29
- left: 0;
30
- width: 100%;
31
- height: 5px;
32
- z-index: 2;
33
- }
34
-
35
- :global(.thumb-vertical) {
36
- position: absolute;
37
- width: 5px;
38
- opacity: 0.8;
39
- top: 0;
40
- right: 0;
41
- transition: opacity 200ms ease-out;
42
- background: var(--scrollbarSlider-background);
43
- box-shadow: 1px 0 0 var(--scrollbar-shadow);
44
-
45
- &:hover {
46
- background: var(--scrollbarSlider-hoverBackground);
47
- }
48
- }
49
-
50
- :global(.thumb-horizontal) {
51
- position: absolute;
52
- height: 5px;
53
- left: 0;
54
- bottom: 0;
55
- opacity: 0.8;
56
- transition: opacity 200ms ease-out 200ms;
57
- background: var(--scrollbarSlider-background);
58
- box-shadow: 1px 0 0 var(--scrollbar-shadow);
59
-
60
- &:hover {
61
- background: var(--scrollbarSlider-hoverBackground);
62
- }
63
- }
64
-
65
- .scroll {
66
- position: relative;
67
- height: 100%;
68
- > *:first-child::-webkit-scrollbar {
69
- display: none !important;
70
- background: rgb(50, 50, 50);
71
- }
72
- > *:first-child {
73
- overflow: auto;
74
- height: 100%;
75
- width: 100%;
76
- }
77
- }
78
-
79
- .hide-thumb {
80
- :global(.thumb-horizontal) {
81
- opacity: 0 !important;
82
- }
83
- :global(.thumb-vertical) {
84
- opacity: 0 !important;
85
- }
86
- }