@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,107 @@
1
+ /** ******************************************************************************
2
+ * Copyright (C) 2018 Ericsson and others.
3
+ *
4
+ * This program and the accompanying materials are made available under the
5
+ * terms of the Eclipse Public License v. 2.0 which is available at
6
+ * http://www.eclipse.org/legal/epl-2.0.
7
+ *
8
+ * This Source Code may also be made available under the following Secondary
9
+ * Licenses when the conditions for such availability set forth in the Eclipse
10
+ * Public License v. 2.0 are satisfied: GNU General Public License, version 2
11
+ * with the GNU Classpath Exception which is available at
12
+ * https://www.gnu.org/software/classpath/license.html.
13
+ *
14
+ * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
15
+ ********************************************************************************/
16
+
17
+ // Some code copied and modified from https://github.com/eclipse-theia/theia/tree/v1.14.0/packages/monaco/src/browser/textmate/textmate-registry.ts
18
+
19
+ import { IGrammarConfiguration } from 'vscode-textmate';
20
+
21
+ import { Injectable } from '@opensumi/di';
22
+ import { getDebugLogger, URI } from '@opensumi/ide-core-common';
23
+
24
+ import { TokenizerOption } from './textmate-tokenizer';
25
+
26
+ export interface TextmateGrammarConfiguration extends IGrammarConfiguration {
27
+ /**
28
+ * Optional options to further refine the tokenization of the grammar.
29
+ */
30
+ readonly tokenizerOption?: TokenizerOption;
31
+ }
32
+
33
+ export interface GrammarDefinitionProvider {
34
+ getGrammarDefinition(): Promise<GrammarDefinition>;
35
+ getInjections?(scopeName: string): string[];
36
+ }
37
+
38
+ export interface GrammarDefinition {
39
+ format: 'json' | 'plist';
40
+ content?: object | string;
41
+ location: URI;
42
+ }
43
+
44
+ @Injectable()
45
+ export class TextmateRegistry {
46
+ readonly scopeToProvider = new Map<string, GrammarDefinitionProvider>();
47
+ readonly languageToConfig = new Map<string, () => TextmateGrammarConfiguration>();
48
+ readonly languageIdToScope = new Map<string, string>();
49
+
50
+ // 将语法定义描述绑定到某一个Scope:source.json.comments
51
+ registerTextmateGrammarScope(scope: string, description: GrammarDefinitionProvider) {
52
+ if (this.scopeToProvider.has(scope)) {
53
+ getDebugLogger().warn(new Error(`a registered grammar provider for '${scope}' scope is overridden`));
54
+ }
55
+ this.scopeToProvider.set(scope, description);
56
+
57
+ return () => {
58
+ this.scopeToProvider.delete(scope);
59
+ };
60
+ }
61
+
62
+ getProvider(scope: string): GrammarDefinitionProvider | undefined {
63
+ return this.scopeToProvider.get(scope);
64
+ }
65
+
66
+ mapLanguageIdToTextmateGrammar(languageId: string, scope: string) {
67
+ const existingScope = this.getScope(languageId);
68
+ if (typeof existingScope === 'string') {
69
+ getDebugLogger().warn(
70
+ new Error(`'${languageId}' language is remapped from '${existingScope}' to '${scope}' scope`),
71
+ );
72
+ }
73
+ this.languageIdToScope.set(languageId, scope);
74
+
75
+ return () => {
76
+ this.languageIdToScope.delete(languageId);
77
+ };
78
+ }
79
+
80
+ getScope(languageId: string): string | undefined {
81
+ return this.languageIdToScope.get(languageId);
82
+ }
83
+
84
+ getLanguageId(scope: string): string | undefined {
85
+ for (const key of this.languageIdToScope.keys()) {
86
+ if (this.languageIdToScope.get(key) === scope) {
87
+ return key;
88
+ }
89
+ }
90
+ return undefined;
91
+ }
92
+
93
+ registerGrammarConfiguration(languageId: string, getConfig: () => TextmateGrammarConfiguration) {
94
+ if (this.languageToConfig.has(languageId)) {
95
+ // console.warn(new Error(`a registered grammar configuration for '${languageId}' language is overridden`));
96
+ }
97
+ this.languageToConfig.set(languageId, getConfig);
98
+
99
+ return () => {
100
+ this.languageToConfig.delete(languageId);
101
+ };
102
+ }
103
+
104
+ getGrammarConfiguration(languageId: string): () => TextmateGrammarConfiguration {
105
+ return this.languageToConfig.get(languageId) || (() => ({}));
106
+ }
107
+ }
@@ -0,0 +1,104 @@
1
+ import { INITIAL, StackElement, IGrammar } from 'vscode-textmate';
2
+
3
+ import { Disposable, Emitter, Event } from '@opensumi/ide-core-common/lib/utils';
4
+ import {
5
+ MetadataConsts,
6
+ TokenMetadata,
7
+ } from '@opensumi/monaco-editor-core/esm/vs/editor/common/encodedTokenAttributes';
8
+ import * as monaco from '@opensumi/monaco-editor-core/esm/vs/editor/editor.api';
9
+
10
+ export class TokenizerState implements monaco.languages.IState {
11
+ constructor(public readonly ruleStack: StackElement) {}
12
+
13
+ clone(): monaco.languages.IState {
14
+ return new TokenizerState(this.ruleStack);
15
+ }
16
+
17
+ equals(other: monaco.languages.IState): boolean {
18
+ return other instanceof TokenizerState && (other === this || other.ruleStack === this.ruleStack);
19
+ }
20
+ }
21
+
22
+ /**
23
+ * Options for the TextMate tokenizer.
24
+ */
25
+ export interface TokenizerOption {
26
+ /**
27
+ * Maximum line length that will be handled by the TextMate tokenizer. If the length of the actual line exceeds this
28
+ * limit, the tokenizer terminates and the tokenization of any subsequent lines might be broken.
29
+ *
30
+ * If the `lineLimit` is not defined, it means, there are no line length limits. Otherwise, it must be a positive
31
+ * integer or an error will be thrown.
32
+ */
33
+ readonly lineLimit?: number;
34
+ }
35
+
36
+ export class TextMateTokenizer extends Disposable implements monaco.languages.EncodedTokensProvider {
37
+ private readonly seenLanguages: boolean[];
38
+
39
+ private readonly onDidEncounterLanguageEmitter: Emitter<number> = new Emitter<number>();
40
+ public readonly onDidEncounterLanguage: Event<number> = this.onDidEncounterLanguageEmitter.event;
41
+
42
+ constructor(
43
+ private readonly grammar: IGrammar,
44
+ private readonly options: TokenizerOption,
45
+ private readonly conatinsEmbeddedLanguages?: boolean,
46
+ ) {
47
+ super();
48
+ this.seenLanguages = [];
49
+ }
50
+
51
+ getInitialState(): monaco.languages.IState {
52
+ return new TokenizerState(INITIAL);
53
+ }
54
+
55
+ tokenizeEncoded(line: string, state: TokenizerState): monaco.languages.IEncodedLineTokens {
56
+ // copied from vscode/src/vs/editor/common/modes/nullMode.ts
57
+ if (this.options.lineLimit !== undefined && line.length > this.options.lineLimit) {
58
+ const tokens = new Uint32Array(2);
59
+ tokens[0] = 0;
60
+ tokens[1] =
61
+ (1 << MetadataConsts.LANGUAGEID_OFFSET) |
62
+ (0 << MetadataConsts.TOKEN_TYPE_OFFSET) |
63
+ (0 << MetadataConsts.FONT_STYLE_OFFSET) |
64
+ (1 << MetadataConsts.FOREGROUND_OFFSET) |
65
+ (2 << MetadataConsts.BACKGROUND_OFFSET) |
66
+ (MetadataConsts.BALANCED_BRACKETS_MASK >>> 0);
67
+ // Line is too long to be tokenized
68
+ return {
69
+ endState: new TokenizerState(INITIAL),
70
+ tokens,
71
+ };
72
+ }
73
+
74
+ const result = this.grammar.tokenizeLine2(line, state.ruleStack, 500);
75
+
76
+ if (this.conatinsEmbeddedLanguages) {
77
+ const seenLanguages = this.seenLanguages;
78
+ const tokens = result.tokens;
79
+
80
+ // Must check if any of the embedded languages was hit
81
+ for (let i = 0, len = tokens.length >>> 1; i < len; i++) {
82
+ const metadata = tokens[(i << 1) + 1];
83
+ const languageId = TokenMetadata.getLanguageId(metadata);
84
+ if (!seenLanguages[languageId]) {
85
+ seenLanguages[languageId] = true;
86
+ this.onDidEncounterLanguageEmitter.fire(languageId);
87
+ }
88
+ }
89
+ }
90
+
91
+ return {
92
+ endState: new TokenizerState(result.ruleStack),
93
+ tokens: result.tokens,
94
+ };
95
+ }
96
+
97
+ tokenize?(line: string, state: TokenizerState): monaco.languages.ILineTokens {
98
+ const result = this.grammar.tokenizeLine(line, state.ruleStack);
99
+ return {
100
+ endState: new TokenizerState(result.ruleStack),
101
+ tokens: result.tokens.map((t) => ({ ...t, scopes: t.scopes.join('\r\n') })),
102
+ };
103
+ }
104
+ }