@jupyterlab/codemirror 4.0.0-alpha.9 → 4.0.0-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/codemirror-ipythongfm.d.ts +9 -3
- package/lib/codemirror-ipythongfm.js +52 -30
- package/lib/codemirror-ipythongfm.js.map +1 -1
- package/lib/commands.d.ts +13 -0
- package/lib/commands.js +32 -0
- package/lib/commands.js.map +1 -0
- package/lib/editor.d.ts +48 -273
- package/lib/editor.js +220 -819
- package/lib/editor.js.map +1 -1
- package/lib/extension.d.ts +236 -0
- package/lib/extension.js +696 -0
- package/lib/extension.js.map +1 -0
- package/lib/extensions/customStyle.d.ts +25 -0
- package/lib/extensions/customStyle.js +51 -0
- package/lib/extensions/customStyle.js.map +1 -0
- package/lib/extensions/index.d.ts +3 -0
- package/lib/extensions/index.js +8 -0
- package/lib/extensions/index.js.map +1 -0
- package/lib/extensions/rulers.d.ts +8 -0
- package/lib/extensions/rulers.js +85 -0
- package/lib/extensions/rulers.js.map +1 -0
- package/lib/extensions/ybinding.d.ts +129 -0
- package/lib/extensions/ybinding.js +229 -0
- package/lib/extensions/ybinding.js.map +1 -0
- package/lib/factory.d.ts +15 -5
- package/lib/factory.js +53 -24
- package/lib/factory.js.map +1 -1
- package/lib/index.d.ts +7 -19
- package/lib/index.js +7 -23
- package/lib/index.js.map +1 -1
- package/lib/language.d.ts +96 -0
- package/lib/language.js +1687 -0
- package/lib/language.js.map +1 -0
- package/lib/mimetype.d.ts +3 -0
- package/lib/mimetype.js +16 -5
- package/lib/mimetype.js.map +1 -1
- package/lib/searchprovider.d.ts +219 -0
- package/lib/searchprovider.js +640 -0
- package/lib/searchprovider.js.map +1 -0
- package/lib/theme.d.ts +57 -0
- package/lib/theme.js +194 -0
- package/lib/theme.js.map +1 -0
- package/lib/token.d.ts +375 -0
- package/lib/token.js +18 -0
- package/lib/token.js.map +1 -0
- package/package.json +45 -41
- package/src/codemirror-ipythongfm.ts +109 -0
- package/src/commands.ts +34 -0
- package/src/editor.ts +783 -0
- package/src/extension.ts +890 -0
- package/src/extensions/customStyle.ts +79 -0
- package/src/extensions/index.ts +8 -0
- package/src/extensions/rulers.ts +112 -0
- package/src/extensions/ybinding.ts +295 -0
- package/src/factory.ts +100 -0
- package/src/index.ts +17 -0
- package/src/language.ts +1726 -0
- package/src/mimetype.ts +54 -0
- package/src/searchprovider.ts +813 -0
- package/src/theme.ts +219 -0
- package/src/token.ts +436 -0
- package/src/typings.d.ts +13 -0
- package/style/base.css +33 -187
- package/style/index.css +1 -7
- package/style/index.js +1 -7
- package/lib/codemirror-ipython.d.ts +0 -2
- package/lib/codemirror-ipython.js +0 -30
- package/lib/codemirror-ipython.js.map +0 -1
- package/lib/mode.d.ts +0 -82
- package/lib/mode.js +0 -150
- package/lib/mode.js.map +0 -1
- package/lib/syntaxstatus.d.ts +0 -67
- package/lib/syntaxstatus.js +0 -140
- package/lib/syntaxstatus.js.map +0 -1
- package/lib/tokens.d.ts +0 -18
- package/lib/tokens.js +0 -8
- package/lib/tokens.js.map +0 -1
- package/typings/codemirror/codemirror.d.ts +0 -227
package/src/language.ts
ADDED
|
@@ -0,0 +1,1726 @@
|
|
|
1
|
+
// Copyright (c) Jupyter Development Team.
|
|
2
|
+
// Distributed under the terms of the Modified BSD License.
|
|
3
|
+
|
|
4
|
+
import {
|
|
5
|
+
LanguageDescription,
|
|
6
|
+
LanguageSupport,
|
|
7
|
+
LRLanguage,
|
|
8
|
+
StreamLanguage,
|
|
9
|
+
StreamParser
|
|
10
|
+
} from '@codemirror/language';
|
|
11
|
+
import { IEditorMimeTypeService } from '@jupyterlab/codeeditor';
|
|
12
|
+
import { PathExt } from '@jupyterlab/coreutils';
|
|
13
|
+
import { ITranslator, nullTranslator } from '@jupyterlab/translation';
|
|
14
|
+
import { buildParser } from '@lezer/generator';
|
|
15
|
+
import { highlightTree } from '@lezer/highlight';
|
|
16
|
+
|
|
17
|
+
import { jupyterHighlightStyle } from './theme';
|
|
18
|
+
import { IEditorLanguage, IEditorLanguageRegistry } from './token';
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* CodeMirror language registry
|
|
22
|
+
*/
|
|
23
|
+
export class EditorLanguageRegistry implements IEditorLanguageRegistry {
|
|
24
|
+
private _modeList: IEditorLanguage[] = [];
|
|
25
|
+
|
|
26
|
+
constructor() {
|
|
27
|
+
// Add default language text/plain -> No expressions to parse
|
|
28
|
+
this.addLanguage({
|
|
29
|
+
name: 'none',
|
|
30
|
+
mime: 'text/plain',
|
|
31
|
+
support: new LanguageSupport(
|
|
32
|
+
// Create a dummy parser that as no expression to parse
|
|
33
|
+
LRLanguage.define({ parser: buildParser('@top Program { }') })
|
|
34
|
+
)
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
* Register a new language for CodeMirror
|
|
40
|
+
*
|
|
41
|
+
* @param language Language to register
|
|
42
|
+
*/
|
|
43
|
+
addLanguage(language: IEditorLanguage): void {
|
|
44
|
+
const info =
|
|
45
|
+
this.findByName(language.name) ?? this.findByMIME(language.mime, true);
|
|
46
|
+
if (info) {
|
|
47
|
+
throw new Error(`${language.mime} already registered`);
|
|
48
|
+
}
|
|
49
|
+
this._modeList.push(this.makeSpec(language));
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
/**
|
|
53
|
+
* Ensure a codemirror mode is available by name or Codemirror spec.
|
|
54
|
+
*
|
|
55
|
+
* @param language - The mode to ensure. If it is a string, uses [findBest]
|
|
56
|
+
* to get the appropriate spec.
|
|
57
|
+
*
|
|
58
|
+
* @returns A promise that resolves when the mode is available.
|
|
59
|
+
*/
|
|
60
|
+
async getLanguage(
|
|
61
|
+
language: string | IEditorLanguage
|
|
62
|
+
): Promise<IEditorLanguage | null> {
|
|
63
|
+
const spec = this.findBest(language);
|
|
64
|
+
if (spec && !spec.support) {
|
|
65
|
+
spec.support = await spec.load!();
|
|
66
|
+
}
|
|
67
|
+
return spec;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
/**
|
|
71
|
+
* Get the raw list of available modes specs.
|
|
72
|
+
*
|
|
73
|
+
* @returns The available modes
|
|
74
|
+
*/
|
|
75
|
+
getLanguages(): IEditorLanguage[] {
|
|
76
|
+
return [...this._modeList] as IEditorLanguage[];
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
/**
|
|
80
|
+
* Find a codemirror mode by MIME.
|
|
81
|
+
*
|
|
82
|
+
* @param mime Mime type to look for
|
|
83
|
+
* @param strict Whether xml and json should be assimilated to the generic mimetype
|
|
84
|
+
* @returns The mode or null
|
|
85
|
+
*/
|
|
86
|
+
findByMIME(
|
|
87
|
+
mime: string | readonly string[],
|
|
88
|
+
strict = false
|
|
89
|
+
): IEditorLanguage | null {
|
|
90
|
+
if (Array.isArray(mime)) {
|
|
91
|
+
for (let i = 0; i < mime.length; i++) {
|
|
92
|
+
const spec = this.findByMIME(mime[i]);
|
|
93
|
+
if (spec) return spec;
|
|
94
|
+
}
|
|
95
|
+
return null;
|
|
96
|
+
}
|
|
97
|
+
mime = (mime as string).toLowerCase();
|
|
98
|
+
for (let i = 0; i < this._modeList.length; i++) {
|
|
99
|
+
let info = this._modeList[i];
|
|
100
|
+
if (Array.isArray(info.mime)) {
|
|
101
|
+
for (let j = 0; j < info.mime.length; j++) {
|
|
102
|
+
if (info.mime[j] == mime) {
|
|
103
|
+
return info;
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
} else if (info.mime == mime) {
|
|
107
|
+
return info;
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
if (!strict) {
|
|
111
|
+
if (/\+xml$/.test(mime)) return this.findByMIME('application/xml');
|
|
112
|
+
if (/\+json$/.test(mime)) return this.findByMIME('application/json');
|
|
113
|
+
}
|
|
114
|
+
return null;
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
/**
|
|
118
|
+
* Find a codemirror mode by name.
|
|
119
|
+
*
|
|
120
|
+
* @param name The mode name
|
|
121
|
+
* @returns The mode or null
|
|
122
|
+
*/
|
|
123
|
+
findByName(name: string): IEditorLanguage | null {
|
|
124
|
+
name = name.toLowerCase();
|
|
125
|
+
for (let i = 0; i < this._modeList.length; i++) {
|
|
126
|
+
let info = this._modeList[i];
|
|
127
|
+
if (info.name.toLowerCase() == name) return info;
|
|
128
|
+
if (info.alias) {
|
|
129
|
+
for (let j = 0; j < info.alias.length; j++) {
|
|
130
|
+
if (info.alias[j].toLowerCase() == name) {
|
|
131
|
+
return info;
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
return null;
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
/**
|
|
140
|
+
* Find a codemirror mode by extension.
|
|
141
|
+
*
|
|
142
|
+
* @param ext The extension name
|
|
143
|
+
* @returns The mode or null
|
|
144
|
+
*/
|
|
145
|
+
findByExtension(ext: string | readonly string[]): IEditorLanguage | null {
|
|
146
|
+
if (Array.isArray(ext)) {
|
|
147
|
+
for (let i = 0; i < ext.length; i++) {
|
|
148
|
+
const spec = this.findByExtension(ext[i]);
|
|
149
|
+
if (spec) return spec;
|
|
150
|
+
}
|
|
151
|
+
return null;
|
|
152
|
+
}
|
|
153
|
+
ext = (ext as string).toLowerCase();
|
|
154
|
+
for (let i = 0; i < this._modeList.length; i++) {
|
|
155
|
+
let info = this._modeList[i];
|
|
156
|
+
for (let j = 0; j < info.extensions!.length; j++) {
|
|
157
|
+
if (info.extensions![j].toLowerCase() == ext) {
|
|
158
|
+
return info;
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
return null;
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
/**
|
|
166
|
+
* Find a codemirror mode by filename.
|
|
167
|
+
*
|
|
168
|
+
* @param name File name
|
|
169
|
+
* @returns The mode or null
|
|
170
|
+
*/
|
|
171
|
+
findByFileName(name: string): IEditorLanguage | null {
|
|
172
|
+
const basename = PathExt.basename(name);
|
|
173
|
+
for (let i = 0; i < this._modeList.length; i++) {
|
|
174
|
+
let info = this._modeList[i];
|
|
175
|
+
if (info.filename && info.filename.test(basename)) {
|
|
176
|
+
return info;
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
let dot = basename.lastIndexOf('.');
|
|
180
|
+
let ext = dot > -1 && basename.substring(dot + 1, basename.length);
|
|
181
|
+
if (ext) {
|
|
182
|
+
return this.findByExtension(ext);
|
|
183
|
+
}
|
|
184
|
+
return null;
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
/**
|
|
188
|
+
* Find a codemirror mode by name or CodeMirror spec.
|
|
189
|
+
*
|
|
190
|
+
* @param language The CodeMirror mode
|
|
191
|
+
* @param fallback Whether to fallback to default mimetype spec or not
|
|
192
|
+
* @returns The mode or null
|
|
193
|
+
*/
|
|
194
|
+
findBest(
|
|
195
|
+
language: string | IEditorLanguage,
|
|
196
|
+
fallback = true
|
|
197
|
+
): IEditorLanguage | null {
|
|
198
|
+
const modename = typeof language === 'string' ? language : language.name;
|
|
199
|
+
const mimetype = typeof language !== 'string' ? language.mime : modename;
|
|
200
|
+
const ext = typeof language !== 'string' ? language.extensions ?? [] : [];
|
|
201
|
+
|
|
202
|
+
return (
|
|
203
|
+
(modename ? this.findByName(modename) : null) ??
|
|
204
|
+
(mimetype ? this.findByMIME(mimetype) : null) ??
|
|
205
|
+
this.findByExtension(ext) ??
|
|
206
|
+
(fallback
|
|
207
|
+
? this.findByMIME(IEditorMimeTypeService.defaultMimeType)
|
|
208
|
+
: null)
|
|
209
|
+
);
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
/**
|
|
213
|
+
* Parse and style a string.
|
|
214
|
+
*
|
|
215
|
+
* @param code Code to highlight
|
|
216
|
+
* @param language Code language
|
|
217
|
+
* @param el HTML element into which the highlighted code will be inserted
|
|
218
|
+
*/
|
|
219
|
+
async highlight(
|
|
220
|
+
code: string,
|
|
221
|
+
language: IEditorLanguage | null,
|
|
222
|
+
el: HTMLElement
|
|
223
|
+
): Promise<void> {
|
|
224
|
+
if (language) {
|
|
225
|
+
await this.getLanguage(language);
|
|
226
|
+
}
|
|
227
|
+
|
|
228
|
+
const language_ = language?.support?.language;
|
|
229
|
+
if (!language_) {
|
|
230
|
+
el.appendChild(document.createTextNode(code));
|
|
231
|
+
return;
|
|
232
|
+
}
|
|
233
|
+
|
|
234
|
+
const tree = language_.parser.parse(code);
|
|
235
|
+
// position state required because unstyled tokens are not emitted
|
|
236
|
+
// in highlightTree
|
|
237
|
+
let pos = 0;
|
|
238
|
+
highlightTree(tree, jupyterHighlightStyle, (from, to, classes) => {
|
|
239
|
+
if (from > pos) {
|
|
240
|
+
// No style applied to the token between pos and from
|
|
241
|
+
el.appendChild(document.createTextNode(code.slice(pos, from)));
|
|
242
|
+
}
|
|
243
|
+
const sp = el.appendChild(document.createElement('span'));
|
|
244
|
+
sp.className = classes;
|
|
245
|
+
sp.appendChild(document.createTextNode(code.slice(from, to)));
|
|
246
|
+
pos = to;
|
|
247
|
+
});
|
|
248
|
+
|
|
249
|
+
if (pos < tree.length - 1) {
|
|
250
|
+
// No style applied on the trailing text
|
|
251
|
+
el.appendChild(document.createTextNode(code.slice(pos, tree.length)));
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
|
|
255
|
+
// Code mirror uses two similar structures, a plain object with optional fields,
|
|
256
|
+
// and a class with the same fields but all mandatory. Maybe adopting the same
|
|
257
|
+
// pattern would be less confusing (although far more verbose)
|
|
258
|
+
protected makeSpec(spec: IEditorLanguage): IEditorLanguage {
|
|
259
|
+
let res = LanguageDescription.of(spec) as any;
|
|
260
|
+
// CodeMirror does not store/use mime type of a language
|
|
261
|
+
res.mime = spec.mime;
|
|
262
|
+
res.displayName = spec.displayName;
|
|
263
|
+
return res as IEditorLanguage;
|
|
264
|
+
}
|
|
265
|
+
}
|
|
266
|
+
|
|
267
|
+
/**
|
|
268
|
+
* EditorLanguageRegistry namespace
|
|
269
|
+
*/
|
|
270
|
+
export namespace EditorLanguageRegistry {
|
|
271
|
+
/**
|
|
272
|
+
* Convert an CodeMirror 5 language parser to CodeMirror 6
|
|
273
|
+
*
|
|
274
|
+
* @param parser Legacy parser
|
|
275
|
+
* @returns Language object
|
|
276
|
+
*/
|
|
277
|
+
export function legacy(parser: StreamParser<unknown>): LanguageSupport {
|
|
278
|
+
return new LanguageSupport(StreamLanguage.define(parser));
|
|
279
|
+
}
|
|
280
|
+
|
|
281
|
+
/**
|
|
282
|
+
* Create a dialect of SQL
|
|
283
|
+
*
|
|
284
|
+
* @param dialectName SQL dialect
|
|
285
|
+
* @returns Language object
|
|
286
|
+
*/
|
|
287
|
+
async function sql(
|
|
288
|
+
dialectName: keyof typeof import('@codemirror/lang-sql')
|
|
289
|
+
): Promise<LanguageSupport> {
|
|
290
|
+
const m = await import('@codemirror/lang-sql');
|
|
291
|
+
return m.sql({ dialect: (m as any)[dialectName] });
|
|
292
|
+
}
|
|
293
|
+
|
|
294
|
+
/**
|
|
295
|
+
* Get the default editor languages
|
|
296
|
+
*
|
|
297
|
+
* @param translator Application translator
|
|
298
|
+
* @returns Default CodeMirror 6 languages
|
|
299
|
+
*/
|
|
300
|
+
export function getDefaultLanguages(
|
|
301
|
+
translator?: ITranslator | null
|
|
302
|
+
): ReadonlyArray<IEditorLanguage> {
|
|
303
|
+
const trans = (translator ?? nullTranslator).load('jupyterlab');
|
|
304
|
+
return [
|
|
305
|
+
{
|
|
306
|
+
name: 'C',
|
|
307
|
+
displayName: trans.__('C'),
|
|
308
|
+
mime: 'text/x-csrc',
|
|
309
|
+
extensions: ['c', 'h', 'ino'],
|
|
310
|
+
async load() {
|
|
311
|
+
const m = await import('@codemirror/lang-cpp');
|
|
312
|
+
return m.cpp();
|
|
313
|
+
}
|
|
314
|
+
},
|
|
315
|
+
{
|
|
316
|
+
name: 'C++',
|
|
317
|
+
displayName: trans.__('C++'),
|
|
318
|
+
mime: 'text/x-c++src',
|
|
319
|
+
extensions: ['cpp', 'c++', 'cc', 'cxx', 'hpp', 'h++', 'hh', 'hxx'],
|
|
320
|
+
async load() {
|
|
321
|
+
const m = await import('@codemirror/lang-cpp');
|
|
322
|
+
return m.cpp();
|
|
323
|
+
}
|
|
324
|
+
},
|
|
325
|
+
{
|
|
326
|
+
name: 'CQL',
|
|
327
|
+
displayName: trans.__('CQL'),
|
|
328
|
+
mime: 'text/x-cassandra',
|
|
329
|
+
extensions: ['cql'],
|
|
330
|
+
load() {
|
|
331
|
+
return sql('Cassandra');
|
|
332
|
+
}
|
|
333
|
+
},
|
|
334
|
+
{
|
|
335
|
+
name: 'CSS',
|
|
336
|
+
displayName: trans.__('CSS'),
|
|
337
|
+
mime: 'text/css',
|
|
338
|
+
extensions: ['css'],
|
|
339
|
+
async load() {
|
|
340
|
+
const m = await import('@codemirror/lang-css');
|
|
341
|
+
return m.css();
|
|
342
|
+
}
|
|
343
|
+
},
|
|
344
|
+
{
|
|
345
|
+
name: 'HTML',
|
|
346
|
+
displayName: trans.__('HTML'),
|
|
347
|
+
alias: ['xhtml'],
|
|
348
|
+
mime: 'text/html',
|
|
349
|
+
extensions: ['html', 'htm', 'handlebars', 'hbs'],
|
|
350
|
+
async load() {
|
|
351
|
+
const m = await import('@codemirror/lang-html');
|
|
352
|
+
return m.html();
|
|
353
|
+
}
|
|
354
|
+
},
|
|
355
|
+
{
|
|
356
|
+
name: 'Java',
|
|
357
|
+
displayName: trans.__('Java'),
|
|
358
|
+
mime: 'text/x-java',
|
|
359
|
+
extensions: ['java'],
|
|
360
|
+
async load() {
|
|
361
|
+
const m = await import('@codemirror/lang-java');
|
|
362
|
+
return m.java();
|
|
363
|
+
}
|
|
364
|
+
},
|
|
365
|
+
{
|
|
366
|
+
name: 'Javascript',
|
|
367
|
+
displayName: trans.__('Javascript'),
|
|
368
|
+
alias: ['ecmascript', 'js', 'node'],
|
|
369
|
+
mime: [
|
|
370
|
+
'text/javascript',
|
|
371
|
+
'text/ecmascript',
|
|
372
|
+
'application/javascript',
|
|
373
|
+
'application/x-javascript',
|
|
374
|
+
'application/ecmascript'
|
|
375
|
+
],
|
|
376
|
+
extensions: ['js', 'mjs', 'cjs'],
|
|
377
|
+
async load() {
|
|
378
|
+
const m = await import('@codemirror/lang-javascript');
|
|
379
|
+
return m.javascript();
|
|
380
|
+
}
|
|
381
|
+
},
|
|
382
|
+
{
|
|
383
|
+
name: 'JSON',
|
|
384
|
+
displayName: trans.__('JSON'),
|
|
385
|
+
alias: ['json5'],
|
|
386
|
+
mime: ['application/json', 'application/x-json'],
|
|
387
|
+
extensions: ['json', 'map'],
|
|
388
|
+
async load() {
|
|
389
|
+
const m = await import('@codemirror/lang-json');
|
|
390
|
+
return m.json();
|
|
391
|
+
}
|
|
392
|
+
},
|
|
393
|
+
{
|
|
394
|
+
name: 'JSX',
|
|
395
|
+
displayName: trans.__('JSX'),
|
|
396
|
+
mime: 'text/jsx',
|
|
397
|
+
extensions: ['jsx'],
|
|
398
|
+
async load() {
|
|
399
|
+
const m = await import('@codemirror/lang-javascript');
|
|
400
|
+
return m.javascript({ jsx: true });
|
|
401
|
+
}
|
|
402
|
+
},
|
|
403
|
+
{
|
|
404
|
+
name: 'MariaDB SQL',
|
|
405
|
+
displayName: trans.__('MariaDB SQL'),
|
|
406
|
+
mime: 'text/x-mariadb',
|
|
407
|
+
load() {
|
|
408
|
+
return sql('MariaSQL');
|
|
409
|
+
}
|
|
410
|
+
},
|
|
411
|
+
{
|
|
412
|
+
name: 'Markdown',
|
|
413
|
+
displayName: trans.__('Markdown'),
|
|
414
|
+
mime: 'text/x-markdown',
|
|
415
|
+
extensions: ['md', 'markdown', 'mkd'],
|
|
416
|
+
async load() {
|
|
417
|
+
const m = await import('@codemirror/lang-markdown');
|
|
418
|
+
return m.markdown({ codeLanguages: this._modeList as any });
|
|
419
|
+
}
|
|
420
|
+
},
|
|
421
|
+
{
|
|
422
|
+
name: 'MS SQL',
|
|
423
|
+
displayName: trans.__('MS SQL'),
|
|
424
|
+
mime: 'text/x-mssql',
|
|
425
|
+
load() {
|
|
426
|
+
return sql('MSSQL');
|
|
427
|
+
}
|
|
428
|
+
},
|
|
429
|
+
{
|
|
430
|
+
name: 'MySQL',
|
|
431
|
+
displayName: trans.__('MySQL'),
|
|
432
|
+
mime: 'text/x-mysql',
|
|
433
|
+
load() {
|
|
434
|
+
return sql('MySQL');
|
|
435
|
+
}
|
|
436
|
+
},
|
|
437
|
+
{
|
|
438
|
+
name: 'PHP',
|
|
439
|
+
displayName: trans.__('PHP'),
|
|
440
|
+
mime: [
|
|
441
|
+
'text/x-php',
|
|
442
|
+
'application/x-httpd-php',
|
|
443
|
+
'application/x-httpd-php-open'
|
|
444
|
+
],
|
|
445
|
+
extensions: ['php', 'php3', 'php4', 'php5', 'php7', 'phtml'],
|
|
446
|
+
async load() {
|
|
447
|
+
const m = await import('@codemirror/lang-php');
|
|
448
|
+
return m.php();
|
|
449
|
+
}
|
|
450
|
+
},
|
|
451
|
+
{
|
|
452
|
+
name: 'PLSQL',
|
|
453
|
+
displayName: trans.__('PLSQL'),
|
|
454
|
+
mime: 'text/x-plsql',
|
|
455
|
+
extensions: ['pls'],
|
|
456
|
+
load() {
|
|
457
|
+
return sql('PLSQL');
|
|
458
|
+
}
|
|
459
|
+
},
|
|
460
|
+
{
|
|
461
|
+
name: 'PostgreSQL',
|
|
462
|
+
displayName: trans.__('PostgreSQL'),
|
|
463
|
+
mime: 'text/x-pgsql',
|
|
464
|
+
load() {
|
|
465
|
+
return sql('PostgreSQL');
|
|
466
|
+
}
|
|
467
|
+
},
|
|
468
|
+
{
|
|
469
|
+
name: 'Python',
|
|
470
|
+
displayName: trans.__('Python'),
|
|
471
|
+
mime: 'text/x-python',
|
|
472
|
+
extensions: ['BUILD', 'bzl', 'py', 'pyw'],
|
|
473
|
+
filename: /^(BUCK|BUILD)$/,
|
|
474
|
+
async load() {
|
|
475
|
+
const m = await import('@codemirror/lang-python');
|
|
476
|
+
return m.python();
|
|
477
|
+
}
|
|
478
|
+
},
|
|
479
|
+
{
|
|
480
|
+
name: 'ipython',
|
|
481
|
+
displayName: trans.__('ipython'),
|
|
482
|
+
mime: 'text/x-ipython',
|
|
483
|
+
async load() {
|
|
484
|
+
// FIXME Restore '?' operator - using the default python LanguageSupport allows
|
|
485
|
+
// to activate feature such as code folding.
|
|
486
|
+
// return Promise.resolve(legacy(mkPython({ singleOperators: /\?/ })));
|
|
487
|
+
const m = await import('@codemirror/lang-python');
|
|
488
|
+
return m.python();
|
|
489
|
+
}
|
|
490
|
+
},
|
|
491
|
+
{
|
|
492
|
+
name: 'Rust',
|
|
493
|
+
displayName: trans.__('Rust'),
|
|
494
|
+
mime: 'text/x-rustsrc',
|
|
495
|
+
extensions: ['rs'],
|
|
496
|
+
async load() {
|
|
497
|
+
const m = await import('@codemirror/lang-rust');
|
|
498
|
+
return m.rust();
|
|
499
|
+
}
|
|
500
|
+
},
|
|
501
|
+
{
|
|
502
|
+
name: 'SQL',
|
|
503
|
+
displayName: trans.__('SQL'),
|
|
504
|
+
mime: 'text/x-sql',
|
|
505
|
+
extensions: ['sql'],
|
|
506
|
+
load() {
|
|
507
|
+
return sql('StandardSQL');
|
|
508
|
+
}
|
|
509
|
+
},
|
|
510
|
+
{
|
|
511
|
+
name: 'SQLite',
|
|
512
|
+
displayName: trans.__('SQLite'),
|
|
513
|
+
mime: 'text/x-sqlite',
|
|
514
|
+
load() {
|
|
515
|
+
return sql('SQLite');
|
|
516
|
+
}
|
|
517
|
+
},
|
|
518
|
+
{
|
|
519
|
+
name: 'TSX',
|
|
520
|
+
displayName: trans.__('TSX'),
|
|
521
|
+
alias: ['TypeScript-JSX'],
|
|
522
|
+
mime: 'text/typescript-jsx',
|
|
523
|
+
extensions: ['tsx'],
|
|
524
|
+
async load() {
|
|
525
|
+
const m = await import('@codemirror/lang-javascript');
|
|
526
|
+
return m.javascript({ jsx: true, typescript: true });
|
|
527
|
+
}
|
|
528
|
+
},
|
|
529
|
+
{
|
|
530
|
+
name: 'TypeScript',
|
|
531
|
+
displayName: trans.__('TypeScript'),
|
|
532
|
+
alias: ['ts'],
|
|
533
|
+
mime: 'application/typescript',
|
|
534
|
+
extensions: ['ts'],
|
|
535
|
+
async load() {
|
|
536
|
+
const m = await import('@codemirror/lang-javascript');
|
|
537
|
+
return m.javascript({ typescript: true });
|
|
538
|
+
}
|
|
539
|
+
},
|
|
540
|
+
{
|
|
541
|
+
name: 'WebAssembly',
|
|
542
|
+
displayName: trans.__('WebAssembly'),
|
|
543
|
+
mime: 'text/webassembly',
|
|
544
|
+
extensions: ['wat', 'wast'],
|
|
545
|
+
async load() {
|
|
546
|
+
const m = await import('@codemirror/lang-wast');
|
|
547
|
+
return m.wast();
|
|
548
|
+
}
|
|
549
|
+
},
|
|
550
|
+
{
|
|
551
|
+
name: 'XML',
|
|
552
|
+
displayName: trans.__('XML'),
|
|
553
|
+
alias: ['rss', 'wsdl', 'xsd'],
|
|
554
|
+
mime: ['application/xml', 'text/xml'],
|
|
555
|
+
extensions: ['xml', 'xsl', 'xsd', 'svg'],
|
|
556
|
+
async load() {
|
|
557
|
+
const m = await import('@codemirror/lang-xml');
|
|
558
|
+
return m.xml();
|
|
559
|
+
}
|
|
560
|
+
},
|
|
561
|
+
// Legacy modes ported from CodeMirror 5
|
|
562
|
+
{
|
|
563
|
+
name: 'APL',
|
|
564
|
+
displayName: trans.__('APL'),
|
|
565
|
+
mime: 'text/apl',
|
|
566
|
+
extensions: ['dyalog', 'apl'],
|
|
567
|
+
async load() {
|
|
568
|
+
const m = await import('@codemirror/legacy-modes/mode/apl');
|
|
569
|
+
return legacy(m.apl);
|
|
570
|
+
}
|
|
571
|
+
},
|
|
572
|
+
{
|
|
573
|
+
name: 'PGP',
|
|
574
|
+
displayName: trans.__('PGP'),
|
|
575
|
+
alias: ['asciiarmor'],
|
|
576
|
+
mime: [
|
|
577
|
+
'application/pgp',
|
|
578
|
+
'application/pgp-encrypted',
|
|
579
|
+
'application/pgp-keys',
|
|
580
|
+
'application/pgp-signature'
|
|
581
|
+
],
|
|
582
|
+
extensions: ['asc', 'pgp', 'sig'],
|
|
583
|
+
async load() {
|
|
584
|
+
const m = await import('@codemirror/legacy-modes/mode/asciiarmor');
|
|
585
|
+
return legacy(m.asciiArmor);
|
|
586
|
+
}
|
|
587
|
+
},
|
|
588
|
+
{
|
|
589
|
+
name: 'ASN.1',
|
|
590
|
+
displayName: trans.__('ASN.1'),
|
|
591
|
+
mime: 'text/x-ttcn-asn',
|
|
592
|
+
extensions: ['asn', 'asn1'],
|
|
593
|
+
async load() {
|
|
594
|
+
const m = await import('@codemirror/legacy-modes/mode/asn1');
|
|
595
|
+
return legacy(m.asn1({}));
|
|
596
|
+
}
|
|
597
|
+
},
|
|
598
|
+
{
|
|
599
|
+
name: 'Asterisk',
|
|
600
|
+
displayName: trans.__('Asterisk'),
|
|
601
|
+
mime: 'text/x-asterisk',
|
|
602
|
+
filename: /^extensions\.conf$/i,
|
|
603
|
+
async load() {
|
|
604
|
+
const m = await import('@codemirror/legacy-modes/mode/asterisk');
|
|
605
|
+
return legacy(m.asterisk);
|
|
606
|
+
}
|
|
607
|
+
},
|
|
608
|
+
{
|
|
609
|
+
name: 'Brainfuck',
|
|
610
|
+
displayName: trans.__('Brainfuck'),
|
|
611
|
+
mime: 'text/x-brainfuck',
|
|
612
|
+
extensions: ['b', 'bf'],
|
|
613
|
+
async load() {
|
|
614
|
+
const m = await import('@codemirror/legacy-modes/mode/brainfuck');
|
|
615
|
+
return legacy(m.brainfuck);
|
|
616
|
+
}
|
|
617
|
+
},
|
|
618
|
+
{
|
|
619
|
+
name: 'Cobol',
|
|
620
|
+
displayName: trans.__('Cobol'),
|
|
621
|
+
mime: 'text/x-cobol',
|
|
622
|
+
extensions: ['cob', 'cpy'],
|
|
623
|
+
async load() {
|
|
624
|
+
const m = await import('@codemirror/legacy-modes/mode/cobol');
|
|
625
|
+
return legacy(m.cobol);
|
|
626
|
+
}
|
|
627
|
+
},
|
|
628
|
+
{
|
|
629
|
+
name: 'C#',
|
|
630
|
+
displayName: trans.__('C#'),
|
|
631
|
+
alias: ['csharp', 'cs'],
|
|
632
|
+
mime: 'text/x-csharp',
|
|
633
|
+
extensions: ['cs'],
|
|
634
|
+
async load() {
|
|
635
|
+
const m = await import('@codemirror/legacy-modes/mode/clike');
|
|
636
|
+
return legacy(m.csharp);
|
|
637
|
+
}
|
|
638
|
+
},
|
|
639
|
+
{
|
|
640
|
+
name: 'Clojure',
|
|
641
|
+
displayName: trans.__('Clojure'),
|
|
642
|
+
mime: 'text/x-clojure',
|
|
643
|
+
extensions: ['clj', 'cljc', 'cljx'],
|
|
644
|
+
async load() {
|
|
645
|
+
const m = await import('@codemirror/legacy-modes/mode/clojure');
|
|
646
|
+
return legacy(m.clojure);
|
|
647
|
+
}
|
|
648
|
+
},
|
|
649
|
+
{
|
|
650
|
+
name: 'ClojureScript',
|
|
651
|
+
displayName: trans.__('ClojureScript'),
|
|
652
|
+
mime: 'text/x-clojurescript',
|
|
653
|
+
extensions: ['cljs'],
|
|
654
|
+
async load() {
|
|
655
|
+
const m = await import('@codemirror/legacy-modes/mode/clojure');
|
|
656
|
+
return legacy(m.clojure);
|
|
657
|
+
}
|
|
658
|
+
},
|
|
659
|
+
{
|
|
660
|
+
name: 'Closure Stylesheets (GSS)',
|
|
661
|
+
displayName: trans.__('Closure Stylesheets (GSS)'),
|
|
662
|
+
mime: 'text/x-gss',
|
|
663
|
+
extensions: ['gss'],
|
|
664
|
+
async load() {
|
|
665
|
+
const m = await import('@codemirror/legacy-modes/mode/css');
|
|
666
|
+
return legacy(m.gss);
|
|
667
|
+
}
|
|
668
|
+
},
|
|
669
|
+
{
|
|
670
|
+
name: 'CMake',
|
|
671
|
+
displayName: trans.__('CMake'),
|
|
672
|
+
mime: 'text/x-cmake',
|
|
673
|
+
extensions: ['cmake', 'cmake.in'],
|
|
674
|
+
filename: /^CMakeLists\.txt$/,
|
|
675
|
+
async load() {
|
|
676
|
+
const m = await import('@codemirror/legacy-modes/mode/cmake');
|
|
677
|
+
return legacy(m.cmake);
|
|
678
|
+
}
|
|
679
|
+
},
|
|
680
|
+
{
|
|
681
|
+
name: 'CoffeeScript',
|
|
682
|
+
displayName: trans.__('CoffeScript'),
|
|
683
|
+
alias: ['coffee', 'coffee-script'],
|
|
684
|
+
mime: [
|
|
685
|
+
'application/vnd.coffeescript',
|
|
686
|
+
'text/coffeescript',
|
|
687
|
+
'text/x-coffeescript'
|
|
688
|
+
],
|
|
689
|
+
extensions: ['coffee'],
|
|
690
|
+
async load() {
|
|
691
|
+
const m = await import('@codemirror/legacy-modes/mode/coffeescript');
|
|
692
|
+
return legacy(m.coffeeScript);
|
|
693
|
+
}
|
|
694
|
+
},
|
|
695
|
+
{
|
|
696
|
+
name: 'Common Lisp',
|
|
697
|
+
displayName: trans.__('Common Lisp'),
|
|
698
|
+
alias: ['lisp'],
|
|
699
|
+
mime: 'text/x-common-lisp',
|
|
700
|
+
extensions: ['cl', 'lisp', 'el'],
|
|
701
|
+
async load() {
|
|
702
|
+
const m = await import('@codemirror/legacy-modes/mode/commonlisp');
|
|
703
|
+
return legacy(m.commonLisp);
|
|
704
|
+
}
|
|
705
|
+
},
|
|
706
|
+
{
|
|
707
|
+
name: 'Cypher',
|
|
708
|
+
displayName: trans.__('Cypher'),
|
|
709
|
+
mime: 'application/x-cypher-query',
|
|
710
|
+
extensions: ['cyp', 'cypher'],
|
|
711
|
+
async load() {
|
|
712
|
+
const m = await import('@codemirror/legacy-modes/mode/cypher');
|
|
713
|
+
return legacy(m.cypher);
|
|
714
|
+
}
|
|
715
|
+
},
|
|
716
|
+
{
|
|
717
|
+
name: 'Cython',
|
|
718
|
+
displayName: trans.__('Cython'),
|
|
719
|
+
mime: 'text/x-cython',
|
|
720
|
+
extensions: ['pyx', 'pxd', 'pxi'],
|
|
721
|
+
async load() {
|
|
722
|
+
const m = await import('@codemirror/legacy-modes/mode/python');
|
|
723
|
+
return legacy(m.cython);
|
|
724
|
+
}
|
|
725
|
+
},
|
|
726
|
+
{
|
|
727
|
+
name: 'Crystal',
|
|
728
|
+
displayName: trans.__('Crystal'),
|
|
729
|
+
mime: 'text/x-crystal',
|
|
730
|
+
extensions: ['cr'],
|
|
731
|
+
async load() {
|
|
732
|
+
const m = await import('@codemirror/legacy-modes/mode/crystal');
|
|
733
|
+
return legacy(m.crystal);
|
|
734
|
+
}
|
|
735
|
+
},
|
|
736
|
+
{
|
|
737
|
+
name: 'D',
|
|
738
|
+
displayName: trans.__('D'),
|
|
739
|
+
mime: 'text/x-d',
|
|
740
|
+
extensions: ['d'],
|
|
741
|
+
async load() {
|
|
742
|
+
const m = await import('@codemirror/legacy-modes/mode/d');
|
|
743
|
+
return legacy(m.d);
|
|
744
|
+
}
|
|
745
|
+
},
|
|
746
|
+
{
|
|
747
|
+
name: 'Dart',
|
|
748
|
+
displayName: trans.__('Dart'),
|
|
749
|
+
mime: ['application/dart', 'text/x-dart'],
|
|
750
|
+
extensions: ['dart'],
|
|
751
|
+
async load() {
|
|
752
|
+
const m = await import('@codemirror/legacy-modes/mode/clike');
|
|
753
|
+
return legacy(m.dart);
|
|
754
|
+
}
|
|
755
|
+
},
|
|
756
|
+
{
|
|
757
|
+
name: 'diff',
|
|
758
|
+
displayName: trans.__('diff'),
|
|
759
|
+
mime: 'text/x-diff',
|
|
760
|
+
extensions: ['diff', 'patch'],
|
|
761
|
+
async load() {
|
|
762
|
+
const m = await import('@codemirror/legacy-modes/mode/diff');
|
|
763
|
+
return legacy(m.diff);
|
|
764
|
+
}
|
|
765
|
+
},
|
|
766
|
+
{
|
|
767
|
+
name: 'Dockerfile',
|
|
768
|
+
displayName: trans.__('Dockerfile'),
|
|
769
|
+
mime: 'text/x-dockerfile',
|
|
770
|
+
filename: /^Dockerfile$/,
|
|
771
|
+
async load() {
|
|
772
|
+
const m = await import('@codemirror/legacy-modes/mode/dockerfile');
|
|
773
|
+
return legacy(m.dockerFile);
|
|
774
|
+
}
|
|
775
|
+
},
|
|
776
|
+
{
|
|
777
|
+
name: 'DTD',
|
|
778
|
+
displayName: trans.__('DTD'),
|
|
779
|
+
mime: 'application/xml-dtd',
|
|
780
|
+
extensions: ['dtd'],
|
|
781
|
+
async load() {
|
|
782
|
+
const m = await import('@codemirror/legacy-modes/mode/dtd');
|
|
783
|
+
return legacy(m.dtd);
|
|
784
|
+
}
|
|
785
|
+
},
|
|
786
|
+
{
|
|
787
|
+
name: 'Dylan',
|
|
788
|
+
displayName: trans.__('Dylan'),
|
|
789
|
+
mime: 'text/x-dylan',
|
|
790
|
+
extensions: ['dylan', 'dyl', 'intr'],
|
|
791
|
+
async load() {
|
|
792
|
+
const m = await import('@codemirror/legacy-modes/mode/dylan');
|
|
793
|
+
return legacy(m.dylan);
|
|
794
|
+
}
|
|
795
|
+
},
|
|
796
|
+
{
|
|
797
|
+
name: 'EBNF',
|
|
798
|
+
displayName: trans.__('EBNF'),
|
|
799
|
+
mime: 'text/x-ebnf',
|
|
800
|
+
async load() {
|
|
801
|
+
const m = await import('@codemirror/legacy-modes/mode/ebnf');
|
|
802
|
+
return legacy(m.ebnf);
|
|
803
|
+
}
|
|
804
|
+
},
|
|
805
|
+
{
|
|
806
|
+
name: 'ECL',
|
|
807
|
+
displayName: trans.__('ECL'),
|
|
808
|
+
mime: 'text/x-ecl',
|
|
809
|
+
extensions: ['ecl'],
|
|
810
|
+
async load() {
|
|
811
|
+
const m = await import('@codemirror/legacy-modes/mode/ecl');
|
|
812
|
+
return legacy(m.ecl);
|
|
813
|
+
}
|
|
814
|
+
},
|
|
815
|
+
{
|
|
816
|
+
name: 'edn',
|
|
817
|
+
displayName: trans.__('edn'),
|
|
818
|
+
mime: 'application/edn',
|
|
819
|
+
extensions: ['edn'],
|
|
820
|
+
async load() {
|
|
821
|
+
const m = await import('@codemirror/legacy-modes/mode/clojure');
|
|
822
|
+
return legacy(m.clojure);
|
|
823
|
+
}
|
|
824
|
+
},
|
|
825
|
+
{
|
|
826
|
+
name: 'Eiffel',
|
|
827
|
+
displayName: trans.__('Eiffel'),
|
|
828
|
+
mime: 'text/x-eiffel',
|
|
829
|
+
extensions: ['e'],
|
|
830
|
+
async load() {
|
|
831
|
+
const m = await import('@codemirror/legacy-modes/mode/eiffel');
|
|
832
|
+
return legacy(m.eiffel);
|
|
833
|
+
}
|
|
834
|
+
},
|
|
835
|
+
{
|
|
836
|
+
name: 'Elm',
|
|
837
|
+
displayName: trans.__('Elm'),
|
|
838
|
+
mime: 'text/x-elm',
|
|
839
|
+
extensions: ['elm'],
|
|
840
|
+
async load() {
|
|
841
|
+
const m = await import('@codemirror/legacy-modes/mode/elm');
|
|
842
|
+
return legacy(m.elm);
|
|
843
|
+
}
|
|
844
|
+
},
|
|
845
|
+
{
|
|
846
|
+
name: 'Erlang',
|
|
847
|
+
displayName: trans.__('Erlang'),
|
|
848
|
+
mime: 'text/x-erlang',
|
|
849
|
+
extensions: ['erl'],
|
|
850
|
+
async load() {
|
|
851
|
+
const m = await import('@codemirror/legacy-modes/mode/erlang');
|
|
852
|
+
return legacy(m.erlang);
|
|
853
|
+
}
|
|
854
|
+
},
|
|
855
|
+
{
|
|
856
|
+
name: 'Esper',
|
|
857
|
+
displayName: trans.__('Esper'),
|
|
858
|
+
mime: 'text/x-esper',
|
|
859
|
+
async load() {
|
|
860
|
+
const m = await import('@codemirror/legacy-modes/mode/sql');
|
|
861
|
+
return legacy(m.esper);
|
|
862
|
+
}
|
|
863
|
+
},
|
|
864
|
+
{
|
|
865
|
+
name: 'Factor',
|
|
866
|
+
displayName: trans.__('Factor'),
|
|
867
|
+
mime: 'text/x-factor',
|
|
868
|
+
extensions: ['factor'],
|
|
869
|
+
async load() {
|
|
870
|
+
const m = await import('@codemirror/legacy-modes/mode/factor');
|
|
871
|
+
return legacy(m.factor);
|
|
872
|
+
}
|
|
873
|
+
},
|
|
874
|
+
{
|
|
875
|
+
name: 'FCL',
|
|
876
|
+
displayName: trans.__('FCL'),
|
|
877
|
+
mime: 'text/x-fcl',
|
|
878
|
+
async load() {
|
|
879
|
+
const m = await import('@codemirror/legacy-modes/mode/fcl');
|
|
880
|
+
return legacy(m.fcl);
|
|
881
|
+
}
|
|
882
|
+
},
|
|
883
|
+
{
|
|
884
|
+
name: 'Forth',
|
|
885
|
+
displayName: trans.__('Forth'),
|
|
886
|
+
mime: 'text/x-forth',
|
|
887
|
+
extensions: ['forth', 'fth', '4th'],
|
|
888
|
+
async load() {
|
|
889
|
+
const m = await import('@codemirror/legacy-modes/mode/forth');
|
|
890
|
+
return legacy(m.forth);
|
|
891
|
+
}
|
|
892
|
+
},
|
|
893
|
+
{
|
|
894
|
+
name: 'Fortran',
|
|
895
|
+
displayName: trans.__('Fortran'),
|
|
896
|
+
mime: 'text/x-fortran',
|
|
897
|
+
extensions: ['f', 'for', 'f77', 'f90', 'f95'],
|
|
898
|
+
async load() {
|
|
899
|
+
const m = await import('@codemirror/legacy-modes/mode/fortran');
|
|
900
|
+
return legacy(m.fortran);
|
|
901
|
+
}
|
|
902
|
+
},
|
|
903
|
+
{
|
|
904
|
+
name: 'F#',
|
|
905
|
+
displayName: trans.__('F#'),
|
|
906
|
+
alias: ['fsharp'],
|
|
907
|
+
mime: 'text/x-fsharp',
|
|
908
|
+
extensions: ['fs'],
|
|
909
|
+
async load() {
|
|
910
|
+
const m = await import('@codemirror/legacy-modes/mode/mllike');
|
|
911
|
+
return legacy(m.fSharp);
|
|
912
|
+
}
|
|
913
|
+
},
|
|
914
|
+
{
|
|
915
|
+
name: 'Gas',
|
|
916
|
+
displayName: trans.__('Gas'),
|
|
917
|
+
mime: 'text/x-gas',
|
|
918
|
+
extensions: ['s'],
|
|
919
|
+
async load() {
|
|
920
|
+
const m = await import('@codemirror/legacy-modes/mode/gas');
|
|
921
|
+
return legacy(m.gas);
|
|
922
|
+
}
|
|
923
|
+
},
|
|
924
|
+
{
|
|
925
|
+
name: 'Gherkin',
|
|
926
|
+
displayName: trans.__('Gherkin'),
|
|
927
|
+
mime: 'text/x-feature',
|
|
928
|
+
extensions: ['feature'],
|
|
929
|
+
async load() {
|
|
930
|
+
const m = await import('@codemirror/legacy-modes/mode/gherkin');
|
|
931
|
+
return legacy(m.gherkin);
|
|
932
|
+
}
|
|
933
|
+
},
|
|
934
|
+
{
|
|
935
|
+
name: 'Go',
|
|
936
|
+
displayName: trans.__('Go'),
|
|
937
|
+
mime: 'text/x-go',
|
|
938
|
+
extensions: ['go'],
|
|
939
|
+
async load() {
|
|
940
|
+
const m = await import('@codemirror/legacy-modes/mode/go');
|
|
941
|
+
return legacy(m.go);
|
|
942
|
+
}
|
|
943
|
+
},
|
|
944
|
+
{
|
|
945
|
+
name: 'Groovy',
|
|
946
|
+
displayName: trans.__('Groovy'),
|
|
947
|
+
mime: 'text/x-groovy',
|
|
948
|
+
extensions: ['groovy', 'gradle'],
|
|
949
|
+
filename: /^Jenkinsfile$/,
|
|
950
|
+
async load() {
|
|
951
|
+
const m = await import('@codemirror/legacy-modes/mode/groovy');
|
|
952
|
+
return legacy(m.groovy);
|
|
953
|
+
}
|
|
954
|
+
},
|
|
955
|
+
{
|
|
956
|
+
name: 'Haskell',
|
|
957
|
+
displayName: trans.__('Haskell'),
|
|
958
|
+
mime: 'text/x-haskell',
|
|
959
|
+
extensions: ['hs'],
|
|
960
|
+
async load() {
|
|
961
|
+
const m = await import('@codemirror/legacy-modes/mode/haskell');
|
|
962
|
+
return legacy(m.haskell);
|
|
963
|
+
}
|
|
964
|
+
},
|
|
965
|
+
{
|
|
966
|
+
name: 'Haxe',
|
|
967
|
+
displayName: trans.__('Haxe'),
|
|
968
|
+
mime: 'text/x-haxe',
|
|
969
|
+
extensions: ['hx'],
|
|
970
|
+
async load() {
|
|
971
|
+
const m = await import('@codemirror/legacy-modes/mode/haxe');
|
|
972
|
+
return legacy(m.haxe);
|
|
973
|
+
}
|
|
974
|
+
},
|
|
975
|
+
{
|
|
976
|
+
name: 'HXML',
|
|
977
|
+
displayName: trans.__('HXML'),
|
|
978
|
+
mime: 'text/x-hxml',
|
|
979
|
+
extensions: ['hxml'],
|
|
980
|
+
async load() {
|
|
981
|
+
const m = await import('@codemirror/legacy-modes/mode/haxe');
|
|
982
|
+
return legacy(m.hxml);
|
|
983
|
+
}
|
|
984
|
+
},
|
|
985
|
+
{
|
|
986
|
+
name: 'HTTP',
|
|
987
|
+
displayName: trans.__('HTTP'),
|
|
988
|
+
mime: 'message/http',
|
|
989
|
+
async load() {
|
|
990
|
+
const m = await import('@codemirror/legacy-modes/mode/http');
|
|
991
|
+
return legacy(m.http);
|
|
992
|
+
}
|
|
993
|
+
},
|
|
994
|
+
{
|
|
995
|
+
name: 'IDL',
|
|
996
|
+
displayName: trans.__('IDL'),
|
|
997
|
+
mime: 'text/x-idl',
|
|
998
|
+
extensions: ['pro'],
|
|
999
|
+
async load() {
|
|
1000
|
+
const m = await import('@codemirror/legacy-modes/mode/idl');
|
|
1001
|
+
return legacy(m.idl);
|
|
1002
|
+
}
|
|
1003
|
+
},
|
|
1004
|
+
{
|
|
1005
|
+
name: 'JSON-LD',
|
|
1006
|
+
displayName: trans.__('JSON-LD'),
|
|
1007
|
+
alias: ['jsonld'],
|
|
1008
|
+
mime: 'application/ld+json',
|
|
1009
|
+
extensions: ['jsonld'],
|
|
1010
|
+
async load() {
|
|
1011
|
+
const m = await import('@codemirror/legacy-modes/mode/javascript');
|
|
1012
|
+
return legacy(m.jsonld);
|
|
1013
|
+
}
|
|
1014
|
+
},
|
|
1015
|
+
{
|
|
1016
|
+
name: 'Jinja2',
|
|
1017
|
+
displayName: trans.__('Jinja2'),
|
|
1018
|
+
mime: 'text/jinja2',
|
|
1019
|
+
extensions: ['j2', 'jinja', 'jinja2'],
|
|
1020
|
+
async load() {
|
|
1021
|
+
const m = await import('@codemirror/legacy-modes/mode/jinja2');
|
|
1022
|
+
return legacy(m.jinja2);
|
|
1023
|
+
}
|
|
1024
|
+
},
|
|
1025
|
+
{
|
|
1026
|
+
name: 'Julia',
|
|
1027
|
+
displayName: trans.__('Julia'),
|
|
1028
|
+
mime: 'text/x-julia',
|
|
1029
|
+
extensions: ['jl'],
|
|
1030
|
+
async load() {
|
|
1031
|
+
const m = await import('@codemirror/legacy-modes/mode/julia');
|
|
1032
|
+
return legacy(m.julia);
|
|
1033
|
+
}
|
|
1034
|
+
},
|
|
1035
|
+
{
|
|
1036
|
+
name: 'Kotlin',
|
|
1037
|
+
displayName: trans.__('Kotlin'),
|
|
1038
|
+
mime: 'text/x-kotlin',
|
|
1039
|
+
extensions: ['kt'],
|
|
1040
|
+
async load() {
|
|
1041
|
+
const m = await import('@codemirror/legacy-modes/mode/clike');
|
|
1042
|
+
return legacy(m.kotlin);
|
|
1043
|
+
}
|
|
1044
|
+
},
|
|
1045
|
+
{
|
|
1046
|
+
name: 'LESS',
|
|
1047
|
+
displayName: trans.__('LESS'),
|
|
1048
|
+
mime: 'text/x-less',
|
|
1049
|
+
extensions: ['less'],
|
|
1050
|
+
async load() {
|
|
1051
|
+
const m = await import('@codemirror/legacy-modes/mode/css');
|
|
1052
|
+
return legacy(m.less);
|
|
1053
|
+
}
|
|
1054
|
+
},
|
|
1055
|
+
{
|
|
1056
|
+
name: 'LiveScript',
|
|
1057
|
+
displayName: trans.__('LiveScript'),
|
|
1058
|
+
alias: ['ls'],
|
|
1059
|
+
mime: 'text/x-livescript',
|
|
1060
|
+
extensions: ['ls'],
|
|
1061
|
+
async load() {
|
|
1062
|
+
const m = await import('@codemirror/legacy-modes/mode/livescript');
|
|
1063
|
+
return legacy(m.liveScript);
|
|
1064
|
+
}
|
|
1065
|
+
},
|
|
1066
|
+
{
|
|
1067
|
+
name: 'Lua',
|
|
1068
|
+
displayName: trans.__('Lua'),
|
|
1069
|
+
mime: 'text/x-lua',
|
|
1070
|
+
extensions: ['lua'],
|
|
1071
|
+
async load() {
|
|
1072
|
+
const m = await import('@codemirror/legacy-modes/mode/lua');
|
|
1073
|
+
return legacy(m.lua);
|
|
1074
|
+
}
|
|
1075
|
+
},
|
|
1076
|
+
{
|
|
1077
|
+
name: 'mIRC',
|
|
1078
|
+
displayName: trans.__('mIRC'),
|
|
1079
|
+
mime: 'text/mirc',
|
|
1080
|
+
async load() {
|
|
1081
|
+
const m = await import('@codemirror/legacy-modes/mode/mirc');
|
|
1082
|
+
return legacy(m.mirc);
|
|
1083
|
+
}
|
|
1084
|
+
},
|
|
1085
|
+
{
|
|
1086
|
+
name: 'Mathematica',
|
|
1087
|
+
displayName: trans.__('Mathematica'),
|
|
1088
|
+
mime: 'text/x-mathematica',
|
|
1089
|
+
extensions: ['m', 'nb', 'wl', 'wls'],
|
|
1090
|
+
async load() {
|
|
1091
|
+
const m = await import('@codemirror/legacy-modes/mode/mathematica');
|
|
1092
|
+
return legacy(m.mathematica);
|
|
1093
|
+
}
|
|
1094
|
+
},
|
|
1095
|
+
{
|
|
1096
|
+
name: 'Modelica',
|
|
1097
|
+
displayName: trans.__('Modelica'),
|
|
1098
|
+
mime: 'text/x-modelica',
|
|
1099
|
+
extensions: ['mo'],
|
|
1100
|
+
async load() {
|
|
1101
|
+
const m = await import('@codemirror/legacy-modes/mode/modelica');
|
|
1102
|
+
return legacy(m.modelica);
|
|
1103
|
+
}
|
|
1104
|
+
},
|
|
1105
|
+
{
|
|
1106
|
+
name: 'MUMPS',
|
|
1107
|
+
displayName: trans.__('MUMPS'),
|
|
1108
|
+
mime: 'text/x-mumps',
|
|
1109
|
+
extensions: ['mps'],
|
|
1110
|
+
async load() {
|
|
1111
|
+
const m = await import('@codemirror/legacy-modes/mode/mumps');
|
|
1112
|
+
return legacy(m.mumps);
|
|
1113
|
+
}
|
|
1114
|
+
},
|
|
1115
|
+
{
|
|
1116
|
+
name: 'mbox',
|
|
1117
|
+
displayName: trans.__('mbox'),
|
|
1118
|
+
mime: 'application/mbox',
|
|
1119
|
+
extensions: ['mbox'],
|
|
1120
|
+
async load() {
|
|
1121
|
+
const m = await import('@codemirror/legacy-modes/mode/mbox');
|
|
1122
|
+
return legacy(m.mbox);
|
|
1123
|
+
}
|
|
1124
|
+
},
|
|
1125
|
+
{
|
|
1126
|
+
name: 'Nginx',
|
|
1127
|
+
displayName: trans.__('Nginx'),
|
|
1128
|
+
mime: 'text/x-nginx-conf',
|
|
1129
|
+
filename: /nginx.*\.conf$/i,
|
|
1130
|
+
async load() {
|
|
1131
|
+
const m = await import('@codemirror/legacy-modes/mode/nginx');
|
|
1132
|
+
return legacy(m.nginx);
|
|
1133
|
+
}
|
|
1134
|
+
},
|
|
1135
|
+
{
|
|
1136
|
+
name: 'NSIS',
|
|
1137
|
+
displayName: trans.__('NSIS'),
|
|
1138
|
+
mime: 'text/x-nsis',
|
|
1139
|
+
extensions: ['nsh', 'nsi'],
|
|
1140
|
+
async load() {
|
|
1141
|
+
const m = await import('@codemirror/legacy-modes/mode/nsis');
|
|
1142
|
+
return legacy(m.nsis);
|
|
1143
|
+
}
|
|
1144
|
+
},
|
|
1145
|
+
{
|
|
1146
|
+
name: 'NTriples',
|
|
1147
|
+
displayName: trans.__('NTriples'),
|
|
1148
|
+
mime: [
|
|
1149
|
+
'application/n-triples',
|
|
1150
|
+
'application/n-quads',
|
|
1151
|
+
'text/n-triples'
|
|
1152
|
+
],
|
|
1153
|
+
extensions: ['nt', 'nq'],
|
|
1154
|
+
async load() {
|
|
1155
|
+
const m = await import('@codemirror/legacy-modes/mode/ntriples');
|
|
1156
|
+
return legacy(m.ntriples);
|
|
1157
|
+
}
|
|
1158
|
+
},
|
|
1159
|
+
{
|
|
1160
|
+
name: 'Objective-C',
|
|
1161
|
+
displayName: trans.__('Objective-C'),
|
|
1162
|
+
alias: ['objective-c', 'objc'],
|
|
1163
|
+
mime: 'text/x-objectivec',
|
|
1164
|
+
extensions: ['m'],
|
|
1165
|
+
async load() {
|
|
1166
|
+
const m = await import('@codemirror/legacy-modes/mode/clike');
|
|
1167
|
+
return legacy(m.objectiveC);
|
|
1168
|
+
}
|
|
1169
|
+
},
|
|
1170
|
+
{
|
|
1171
|
+
name: 'Objective-C++',
|
|
1172
|
+
displayName: trans.__('Objective-C++'),
|
|
1173
|
+
alias: ['objective-c++', 'objc++'],
|
|
1174
|
+
mime: 'text/x-objectivec++',
|
|
1175
|
+
extensions: ['mm'],
|
|
1176
|
+
async load() {
|
|
1177
|
+
const m = await import('@codemirror/legacy-modes/mode/clike');
|
|
1178
|
+
return legacy(m.objectiveCpp);
|
|
1179
|
+
}
|
|
1180
|
+
},
|
|
1181
|
+
{
|
|
1182
|
+
name: 'OCaml',
|
|
1183
|
+
displayName: trans.__('OCaml'),
|
|
1184
|
+
mime: 'text/x-ocaml',
|
|
1185
|
+
extensions: ['ml', 'mli', 'mll', 'mly'],
|
|
1186
|
+
async load() {
|
|
1187
|
+
const m = await import('@codemirror/legacy-modes/mode/mllike');
|
|
1188
|
+
return legacy(m.oCaml);
|
|
1189
|
+
}
|
|
1190
|
+
},
|
|
1191
|
+
{
|
|
1192
|
+
name: 'Octave',
|
|
1193
|
+
displayName: trans.__('Octave'),
|
|
1194
|
+
mime: 'text/x-octave',
|
|
1195
|
+
extensions: ['m'],
|
|
1196
|
+
async load() {
|
|
1197
|
+
const m = await import('@codemirror/legacy-modes/mode/octave');
|
|
1198
|
+
return legacy(m.octave);
|
|
1199
|
+
}
|
|
1200
|
+
},
|
|
1201
|
+
{
|
|
1202
|
+
name: 'Oz',
|
|
1203
|
+
displayName: trans.__('Oz'),
|
|
1204
|
+
mime: 'text/x-oz',
|
|
1205
|
+
extensions: ['oz'],
|
|
1206
|
+
async load() {
|
|
1207
|
+
const m = await import('@codemirror/legacy-modes/mode/oz');
|
|
1208
|
+
return legacy(m.oz);
|
|
1209
|
+
}
|
|
1210
|
+
},
|
|
1211
|
+
{
|
|
1212
|
+
name: 'Pascal',
|
|
1213
|
+
displayName: trans.__('Pascal'),
|
|
1214
|
+
mime: 'text/x-pascal',
|
|
1215
|
+
extensions: ['p', 'pas'],
|
|
1216
|
+
async load() {
|
|
1217
|
+
const m = await import('@codemirror/legacy-modes/mode/pascal');
|
|
1218
|
+
return legacy(m.pascal);
|
|
1219
|
+
}
|
|
1220
|
+
},
|
|
1221
|
+
{
|
|
1222
|
+
name: 'Perl',
|
|
1223
|
+
displayName: trans.__('Perl'),
|
|
1224
|
+
mime: 'text/x-perl',
|
|
1225
|
+
extensions: ['pl', 'pm'],
|
|
1226
|
+
async load() {
|
|
1227
|
+
const m = await import('@codemirror/legacy-modes/mode/perl');
|
|
1228
|
+
return legacy(m.perl);
|
|
1229
|
+
}
|
|
1230
|
+
},
|
|
1231
|
+
{
|
|
1232
|
+
name: 'Pig',
|
|
1233
|
+
displayName: trans.__('Pig'),
|
|
1234
|
+
mime: 'text/x-pig',
|
|
1235
|
+
extensions: ['pig'],
|
|
1236
|
+
async load() {
|
|
1237
|
+
const m = await import('@codemirror/legacy-modes/mode/pig');
|
|
1238
|
+
return legacy(m.pig);
|
|
1239
|
+
}
|
|
1240
|
+
},
|
|
1241
|
+
{
|
|
1242
|
+
name: 'PowerShell',
|
|
1243
|
+
displayName: trans.__('PowerShell'),
|
|
1244
|
+
mime: 'application/x-powershell',
|
|
1245
|
+
extensions: ['ps1', 'psd1', 'psm1'],
|
|
1246
|
+
async load() {
|
|
1247
|
+
const m = await import('@codemirror/legacy-modes/mode/powershell');
|
|
1248
|
+
return legacy(m.powerShell);
|
|
1249
|
+
}
|
|
1250
|
+
},
|
|
1251
|
+
{
|
|
1252
|
+
name: 'Properties files',
|
|
1253
|
+
displayName: trans.__('Properties files'),
|
|
1254
|
+
alias: ['ini', 'properties'],
|
|
1255
|
+
mime: 'text/x-properties',
|
|
1256
|
+
extensions: ['properties', 'ini', 'in'],
|
|
1257
|
+
async load() {
|
|
1258
|
+
const m = await import('@codemirror/legacy-modes/mode/properties');
|
|
1259
|
+
return legacy(m.properties);
|
|
1260
|
+
}
|
|
1261
|
+
},
|
|
1262
|
+
{
|
|
1263
|
+
name: 'ProtoBuf',
|
|
1264
|
+
displayName: trans.__('ProtoBuf'),
|
|
1265
|
+
mime: 'text/x-protobuf',
|
|
1266
|
+
extensions: ['proto'],
|
|
1267
|
+
async load() {
|
|
1268
|
+
const m = await import('@codemirror/legacy-modes/mode/protobuf');
|
|
1269
|
+
return legacy(m.protobuf);
|
|
1270
|
+
}
|
|
1271
|
+
},
|
|
1272
|
+
{
|
|
1273
|
+
name: 'Puppet',
|
|
1274
|
+
displayName: trans.__('Puppet'),
|
|
1275
|
+
mime: 'text/x-puppet',
|
|
1276
|
+
extensions: ['pp'],
|
|
1277
|
+
async load() {
|
|
1278
|
+
const m = await import('@codemirror/legacy-modes/mode/puppet');
|
|
1279
|
+
return legacy(m.puppet);
|
|
1280
|
+
}
|
|
1281
|
+
},
|
|
1282
|
+
{
|
|
1283
|
+
name: 'Q',
|
|
1284
|
+
displayName: trans.__('Q'),
|
|
1285
|
+
mime: 'text/x-q',
|
|
1286
|
+
extensions: ['q'],
|
|
1287
|
+
async load() {
|
|
1288
|
+
const m = await import('@codemirror/legacy-modes/mode/q');
|
|
1289
|
+
return legacy(m.q);
|
|
1290
|
+
}
|
|
1291
|
+
},
|
|
1292
|
+
{
|
|
1293
|
+
name: 'R',
|
|
1294
|
+
displayName: trans.__('R'),
|
|
1295
|
+
alias: ['rscript'],
|
|
1296
|
+
mime: 'text/x-rsrc',
|
|
1297
|
+
extensions: ['r', 'R'],
|
|
1298
|
+
async load() {
|
|
1299
|
+
const m = await import('@codemirror/legacy-modes/mode/r');
|
|
1300
|
+
return legacy(m.r);
|
|
1301
|
+
}
|
|
1302
|
+
},
|
|
1303
|
+
{
|
|
1304
|
+
name: 'RPM Changes',
|
|
1305
|
+
displayName: trans.__('RPM Changes'),
|
|
1306
|
+
mime: 'text/x-rpm-changes',
|
|
1307
|
+
async load() {
|
|
1308
|
+
const m = await import('@codemirror/legacy-modes/mode/rpm');
|
|
1309
|
+
return legacy(m.rpmChanges);
|
|
1310
|
+
}
|
|
1311
|
+
},
|
|
1312
|
+
{
|
|
1313
|
+
name: 'RPM Spec',
|
|
1314
|
+
displayName: trans.__('RPM Spec'),
|
|
1315
|
+
mime: 'text/x-rpm-spec',
|
|
1316
|
+
extensions: ['spec'],
|
|
1317
|
+
async load() {
|
|
1318
|
+
const m = await import('@codemirror/legacy-modes/mode/rpm');
|
|
1319
|
+
return legacy(m.rpmSpec);
|
|
1320
|
+
}
|
|
1321
|
+
},
|
|
1322
|
+
{
|
|
1323
|
+
name: 'Ruby',
|
|
1324
|
+
displayName: trans.__('Ruby'),
|
|
1325
|
+
alias: ['jruby', 'macruby', 'rake', 'rb', 'rbx'],
|
|
1326
|
+
mime: 'text/x-ruby',
|
|
1327
|
+
extensions: ['rb'],
|
|
1328
|
+
async load() {
|
|
1329
|
+
const m = await import('@codemirror/legacy-modes/mode/ruby');
|
|
1330
|
+
return legacy(m.ruby);
|
|
1331
|
+
}
|
|
1332
|
+
},
|
|
1333
|
+
{
|
|
1334
|
+
name: 'SAS',
|
|
1335
|
+
displayName: trans.__('SAS'),
|
|
1336
|
+
mime: 'text/x-sas',
|
|
1337
|
+
extensions: ['sas'],
|
|
1338
|
+
async load() {
|
|
1339
|
+
const m = await import('@codemirror/legacy-modes/mode/sas');
|
|
1340
|
+
return legacy(m.sas);
|
|
1341
|
+
}
|
|
1342
|
+
},
|
|
1343
|
+
{
|
|
1344
|
+
name: 'Scala',
|
|
1345
|
+
displayName: trans.__('Scala'),
|
|
1346
|
+
mime: 'text/x-scala',
|
|
1347
|
+
extensions: ['scala'],
|
|
1348
|
+
async load() {
|
|
1349
|
+
const m = await import('@codemirror/legacy-modes/mode/clike');
|
|
1350
|
+
return legacy(m.scala);
|
|
1351
|
+
}
|
|
1352
|
+
},
|
|
1353
|
+
{
|
|
1354
|
+
name: 'Scheme',
|
|
1355
|
+
displayName: trans.__('Scheme'),
|
|
1356
|
+
mime: 'text/x-scheme',
|
|
1357
|
+
extensions: ['scm', 'ss'],
|
|
1358
|
+
async load() {
|
|
1359
|
+
const m = await import('@codemirror/legacy-modes/mode/scheme');
|
|
1360
|
+
return legacy(m.scheme);
|
|
1361
|
+
}
|
|
1362
|
+
},
|
|
1363
|
+
{
|
|
1364
|
+
name: 'SCSS',
|
|
1365
|
+
displayName: trans.__('SCSS'),
|
|
1366
|
+
mime: 'text/x-scss',
|
|
1367
|
+
extensions: ['scss'],
|
|
1368
|
+
async load() {
|
|
1369
|
+
const m = await import('@codemirror/legacy-modes/mode/css');
|
|
1370
|
+
return legacy(m.sCSS);
|
|
1371
|
+
}
|
|
1372
|
+
},
|
|
1373
|
+
{
|
|
1374
|
+
name: 'Shell',
|
|
1375
|
+
displayName: trans.__('Shell'),
|
|
1376
|
+
alias: ['bash', 'sh', 'zsh'],
|
|
1377
|
+
mime: ['text/x-sh', 'application/x-sh'],
|
|
1378
|
+
extensions: ['sh', 'ksh', 'bash'],
|
|
1379
|
+
filename: /^PKGBUILD$/,
|
|
1380
|
+
async load() {
|
|
1381
|
+
const m = await import('@codemirror/legacy-modes/mode/shell');
|
|
1382
|
+
return legacy(m.shell);
|
|
1383
|
+
}
|
|
1384
|
+
},
|
|
1385
|
+
{
|
|
1386
|
+
name: 'Sieve',
|
|
1387
|
+
displayName: trans.__('Sieve'),
|
|
1388
|
+
mime: 'application/sieve',
|
|
1389
|
+
extensions: ['siv', 'sieve'],
|
|
1390
|
+
async load() {
|
|
1391
|
+
const m = await import('@codemirror/legacy-modes/mode/sieve');
|
|
1392
|
+
return legacy(m.sieve);
|
|
1393
|
+
}
|
|
1394
|
+
},
|
|
1395
|
+
{
|
|
1396
|
+
name: 'Smalltalk',
|
|
1397
|
+
displayName: trans.__('Smalltalk'),
|
|
1398
|
+
mime: 'text/x-stsrc',
|
|
1399
|
+
extensions: ['st'],
|
|
1400
|
+
async load() {
|
|
1401
|
+
const m = await import('@codemirror/legacy-modes/mode/smalltalk');
|
|
1402
|
+
return legacy(m.smalltalk);
|
|
1403
|
+
}
|
|
1404
|
+
},
|
|
1405
|
+
{
|
|
1406
|
+
name: 'Solr',
|
|
1407
|
+
displayName: trans.__('Solr'),
|
|
1408
|
+
mime: 'text/x-solr',
|
|
1409
|
+
async load() {
|
|
1410
|
+
const m = await import('@codemirror/legacy-modes/mode/solr');
|
|
1411
|
+
return legacy(m.solr);
|
|
1412
|
+
}
|
|
1413
|
+
},
|
|
1414
|
+
{
|
|
1415
|
+
name: 'SML',
|
|
1416
|
+
displayName: trans.__('SML'),
|
|
1417
|
+
mime: 'text/x-sml',
|
|
1418
|
+
extensions: ['sml', 'sig', 'fun', 'smackspec'],
|
|
1419
|
+
async load() {
|
|
1420
|
+
const m = await import('@codemirror/legacy-modes/mode/mllike');
|
|
1421
|
+
return legacy(m.sml);
|
|
1422
|
+
}
|
|
1423
|
+
},
|
|
1424
|
+
{
|
|
1425
|
+
name: 'SPARQL',
|
|
1426
|
+
displayName: trans.__('SPARQL'),
|
|
1427
|
+
alias: ['sparul'],
|
|
1428
|
+
mime: 'application/sparql-query',
|
|
1429
|
+
extensions: ['rq', 'sparql'],
|
|
1430
|
+
async load() {
|
|
1431
|
+
const m = await import('@codemirror/legacy-modes/mode/sparql');
|
|
1432
|
+
return legacy(m.sparql);
|
|
1433
|
+
}
|
|
1434
|
+
},
|
|
1435
|
+
{
|
|
1436
|
+
name: 'Spreadsheet',
|
|
1437
|
+
displayName: trans.__('Spreadsheet'),
|
|
1438
|
+
alias: ['excel', 'formula'],
|
|
1439
|
+
mime: 'text/x-spreadsheet',
|
|
1440
|
+
async load() {
|
|
1441
|
+
const m = await import('@codemirror/legacy-modes/mode/spreadsheet');
|
|
1442
|
+
return legacy(m.spreadsheet);
|
|
1443
|
+
}
|
|
1444
|
+
},
|
|
1445
|
+
{
|
|
1446
|
+
name: 'Squirrel',
|
|
1447
|
+
displayName: trans.__('Squirrel'),
|
|
1448
|
+
mime: 'text/x-squirrel',
|
|
1449
|
+
extensions: ['nut'],
|
|
1450
|
+
async load() {
|
|
1451
|
+
const m = await import('@codemirror/legacy-modes/mode/clike');
|
|
1452
|
+
return legacy(m.squirrel);
|
|
1453
|
+
}
|
|
1454
|
+
},
|
|
1455
|
+
{
|
|
1456
|
+
name: 'Stylus',
|
|
1457
|
+
displayName: trans.__('Stylus'),
|
|
1458
|
+
mime: 'text/x-styl',
|
|
1459
|
+
extensions: ['styl'],
|
|
1460
|
+
async load() {
|
|
1461
|
+
const m = await import('@codemirror/legacy-modes/mode/stylus');
|
|
1462
|
+
return legacy(m.stylus);
|
|
1463
|
+
}
|
|
1464
|
+
},
|
|
1465
|
+
{
|
|
1466
|
+
name: 'Swift',
|
|
1467
|
+
displayName: trans.__('Swift'),
|
|
1468
|
+
mime: 'text/x-swift',
|
|
1469
|
+
extensions: ['swift'],
|
|
1470
|
+
async load() {
|
|
1471
|
+
const m = await import('@codemirror/legacy-modes/mode/swift');
|
|
1472
|
+
return legacy(m.swift);
|
|
1473
|
+
}
|
|
1474
|
+
},
|
|
1475
|
+
{
|
|
1476
|
+
name: 'sTeX',
|
|
1477
|
+
displayName: trans.__('sTeX'),
|
|
1478
|
+
mime: 'text/x-stex',
|
|
1479
|
+
async load() {
|
|
1480
|
+
const m = await import('@codemirror/legacy-modes/mode/stex');
|
|
1481
|
+
return legacy(m.stex);
|
|
1482
|
+
}
|
|
1483
|
+
},
|
|
1484
|
+
{
|
|
1485
|
+
name: 'LaTeX',
|
|
1486
|
+
displayName: trans.__('LaTeX'),
|
|
1487
|
+
alias: ['tex'],
|
|
1488
|
+
mime: 'text/x-latex',
|
|
1489
|
+
extensions: ['text', 'ltx', 'tex'],
|
|
1490
|
+
async load() {
|
|
1491
|
+
const m = await import('@codemirror/legacy-modes/mode/stex');
|
|
1492
|
+
return legacy(m.stex);
|
|
1493
|
+
}
|
|
1494
|
+
},
|
|
1495
|
+
{
|
|
1496
|
+
name: 'SystemVerilog',
|
|
1497
|
+
displayName: trans.__('SystemVerilog'),
|
|
1498
|
+
mime: 'text/x-systemverilog',
|
|
1499
|
+
extensions: ['v', 'sv', 'svh'],
|
|
1500
|
+
async load() {
|
|
1501
|
+
const m = await import('@codemirror/legacy-modes/mode/verilog');
|
|
1502
|
+
return legacy(m.verilog);
|
|
1503
|
+
}
|
|
1504
|
+
},
|
|
1505
|
+
{
|
|
1506
|
+
name: 'Tcl',
|
|
1507
|
+
displayName: trans.__('Tcl'),
|
|
1508
|
+
mime: 'text/x-tcl',
|
|
1509
|
+
extensions: ['tcl'],
|
|
1510
|
+
async load() {
|
|
1511
|
+
const m = await import('@codemirror/legacy-modes/mode/tcl');
|
|
1512
|
+
return legacy(m.tcl);
|
|
1513
|
+
}
|
|
1514
|
+
},
|
|
1515
|
+
{
|
|
1516
|
+
name: 'Textile',
|
|
1517
|
+
displayName: trans.__('Textile'),
|
|
1518
|
+
mime: 'text/x-textile',
|
|
1519
|
+
extensions: ['textile'],
|
|
1520
|
+
async load() {
|
|
1521
|
+
const m = await import('@codemirror/legacy-modes/mode/textile');
|
|
1522
|
+
return legacy(m.textile);
|
|
1523
|
+
}
|
|
1524
|
+
},
|
|
1525
|
+
{
|
|
1526
|
+
name: 'TiddlyWiki',
|
|
1527
|
+
displayName: trans.__('TiddlyWiki'),
|
|
1528
|
+
mime: 'text/x-tiddlywiki',
|
|
1529
|
+
async load() {
|
|
1530
|
+
const m = await import('@codemirror/legacy-modes/mode/tiddlywiki');
|
|
1531
|
+
return legacy(m.tiddlyWiki);
|
|
1532
|
+
}
|
|
1533
|
+
},
|
|
1534
|
+
{
|
|
1535
|
+
name: 'Tiki wiki',
|
|
1536
|
+
displayName: trans.__('Tiki wiki'),
|
|
1537
|
+
mime: 'text/tiki',
|
|
1538
|
+
async load() {
|
|
1539
|
+
const m = await import('@codemirror/legacy-modes/mode/tiki');
|
|
1540
|
+
return legacy(m.tiki);
|
|
1541
|
+
}
|
|
1542
|
+
},
|
|
1543
|
+
{
|
|
1544
|
+
name: 'TOML',
|
|
1545
|
+
displayName: trans.__('TOML'),
|
|
1546
|
+
mime: 'text/x-toml',
|
|
1547
|
+
extensions: ['toml'],
|
|
1548
|
+
async load() {
|
|
1549
|
+
const m = await import('@codemirror/legacy-modes/mode/toml');
|
|
1550
|
+
return legacy(m.toml);
|
|
1551
|
+
}
|
|
1552
|
+
},
|
|
1553
|
+
{
|
|
1554
|
+
name: 'troff',
|
|
1555
|
+
displayName: trans.__('troff'),
|
|
1556
|
+
mime: 'text/troff',
|
|
1557
|
+
extensions: ['1', '2', '3', '4', '5', '6', '7', '8', '9'],
|
|
1558
|
+
async load() {
|
|
1559
|
+
const m = await import('@codemirror/legacy-modes/mode/troff');
|
|
1560
|
+
return legacy(m.troff);
|
|
1561
|
+
}
|
|
1562
|
+
},
|
|
1563
|
+
{
|
|
1564
|
+
name: 'TTCN',
|
|
1565
|
+
displayName: trans.__('TTCN'),
|
|
1566
|
+
mime: 'text/x-ttcn',
|
|
1567
|
+
extensions: ['ttcn', 'ttcn3', 'ttcnpp'],
|
|
1568
|
+
async load() {
|
|
1569
|
+
const m = await import('@codemirror/legacy-modes/mode/ttcn');
|
|
1570
|
+
return legacy(m.ttcn);
|
|
1571
|
+
}
|
|
1572
|
+
},
|
|
1573
|
+
{
|
|
1574
|
+
name: 'TTCN_CFG',
|
|
1575
|
+
displayName: trans.__('TTCN_CFG'),
|
|
1576
|
+
mime: 'text/x-ttcn-cfg',
|
|
1577
|
+
extensions: ['cfg'],
|
|
1578
|
+
async load() {
|
|
1579
|
+
const m = await import('@codemirror/legacy-modes/mode/ttcn-cfg');
|
|
1580
|
+
return legacy(m.ttcnCfg);
|
|
1581
|
+
}
|
|
1582
|
+
},
|
|
1583
|
+
{
|
|
1584
|
+
name: 'Turtle',
|
|
1585
|
+
displayName: trans.__('Turtle'),
|
|
1586
|
+
mime: 'text/turtle',
|
|
1587
|
+
extensions: ['ttl'],
|
|
1588
|
+
async load() {
|
|
1589
|
+
const m = await import('@codemirror/legacy-modes/mode/turtle');
|
|
1590
|
+
return legacy(m.turtle);
|
|
1591
|
+
}
|
|
1592
|
+
},
|
|
1593
|
+
{
|
|
1594
|
+
name: 'Web IDL',
|
|
1595
|
+
displayName: trans.__('Web IDL'),
|
|
1596
|
+
mime: 'text/x-webidl',
|
|
1597
|
+
extensions: ['webidl'],
|
|
1598
|
+
async load() {
|
|
1599
|
+
const m = await import('@codemirror/legacy-modes/mode/webidl');
|
|
1600
|
+
return legacy(m.webIDL);
|
|
1601
|
+
}
|
|
1602
|
+
},
|
|
1603
|
+
{
|
|
1604
|
+
name: 'VB.NET',
|
|
1605
|
+
displayName: trans.__('VB.NET'),
|
|
1606
|
+
mime: 'text/x-vb',
|
|
1607
|
+
extensions: ['vb'],
|
|
1608
|
+
async load() {
|
|
1609
|
+
const m = await import('@codemirror/legacy-modes/mode/vb');
|
|
1610
|
+
return legacy(m.vb);
|
|
1611
|
+
}
|
|
1612
|
+
},
|
|
1613
|
+
{
|
|
1614
|
+
name: 'VBScript',
|
|
1615
|
+
displayName: trans.__('VBScript'),
|
|
1616
|
+
mime: 'text/vbscript',
|
|
1617
|
+
extensions: ['vbs'],
|
|
1618
|
+
async load() {
|
|
1619
|
+
const m = await import('@codemirror/legacy-modes/mode/vbscript');
|
|
1620
|
+
return legacy(m.vbScript);
|
|
1621
|
+
}
|
|
1622
|
+
},
|
|
1623
|
+
{
|
|
1624
|
+
name: 'Velocity',
|
|
1625
|
+
displayName: trans.__('Velocity'),
|
|
1626
|
+
mime: 'text/velocity',
|
|
1627
|
+
extensions: ['vtl'],
|
|
1628
|
+
async load() {
|
|
1629
|
+
const m = await import('@codemirror/legacy-modes/mode/velocity');
|
|
1630
|
+
return legacy(m.velocity);
|
|
1631
|
+
}
|
|
1632
|
+
},
|
|
1633
|
+
{
|
|
1634
|
+
name: 'Verilog',
|
|
1635
|
+
displayName: trans.__('Verilog'),
|
|
1636
|
+
mime: 'text/x-verilog',
|
|
1637
|
+
extensions: ['v'],
|
|
1638
|
+
async load() {
|
|
1639
|
+
const m = await import('@codemirror/legacy-modes/mode/verilog');
|
|
1640
|
+
return legacy(m.verilog);
|
|
1641
|
+
}
|
|
1642
|
+
},
|
|
1643
|
+
{
|
|
1644
|
+
name: 'VHDL',
|
|
1645
|
+
displayName: trans.__('VHDL'),
|
|
1646
|
+
mime: 'text/x-vhdl',
|
|
1647
|
+
extensions: ['vhd', 'vhdl'],
|
|
1648
|
+
async load() {
|
|
1649
|
+
const m = await import('@codemirror/legacy-modes/mode/vhdl');
|
|
1650
|
+
return legacy(m.vhdl);
|
|
1651
|
+
}
|
|
1652
|
+
},
|
|
1653
|
+
{
|
|
1654
|
+
name: 'XQuery',
|
|
1655
|
+
displayName: trans.__('XQuery'),
|
|
1656
|
+
mime: 'application/xquery',
|
|
1657
|
+
extensions: ['xy', 'xquery'],
|
|
1658
|
+
async load() {
|
|
1659
|
+
const m = await import('@codemirror/legacy-modes/mode/xquery');
|
|
1660
|
+
return legacy(m.xQuery);
|
|
1661
|
+
}
|
|
1662
|
+
},
|
|
1663
|
+
{
|
|
1664
|
+
name: 'Yacas',
|
|
1665
|
+
displayName: trans.__('Yacas'),
|
|
1666
|
+
mime: 'text/x-yacas',
|
|
1667
|
+
extensions: ['ys'],
|
|
1668
|
+
async load() {
|
|
1669
|
+
const m = await import('@codemirror/legacy-modes/mode/yacas');
|
|
1670
|
+
return legacy(m.yacas);
|
|
1671
|
+
}
|
|
1672
|
+
},
|
|
1673
|
+
{
|
|
1674
|
+
name: 'YAML',
|
|
1675
|
+
displayName: trans.__('YAML'),
|
|
1676
|
+
alias: ['yml'],
|
|
1677
|
+
mime: ['text/x-yaml', 'text/yaml'],
|
|
1678
|
+
extensions: ['yaml', 'yml'],
|
|
1679
|
+
async load() {
|
|
1680
|
+
const m = await import('@codemirror/legacy-modes/mode/yaml');
|
|
1681
|
+
return legacy(m.yaml);
|
|
1682
|
+
}
|
|
1683
|
+
},
|
|
1684
|
+
{
|
|
1685
|
+
name: 'Z80',
|
|
1686
|
+
displayName: trans.__('Z80'),
|
|
1687
|
+
mime: 'text/x-z80',
|
|
1688
|
+
extensions: ['z80'],
|
|
1689
|
+
async load() {
|
|
1690
|
+
const m = await import('@codemirror/legacy-modes/mode/z80');
|
|
1691
|
+
return legacy(m.z80);
|
|
1692
|
+
}
|
|
1693
|
+
},
|
|
1694
|
+
{
|
|
1695
|
+
name: 'mscgen',
|
|
1696
|
+
displayName: trans.__('mscgen'),
|
|
1697
|
+
mime: 'text/x-mscgen',
|
|
1698
|
+
extensions: ['mscgen', 'mscin', 'msc'],
|
|
1699
|
+
async load() {
|
|
1700
|
+
const m = await import('@codemirror/legacy-modes/mode/mscgen');
|
|
1701
|
+
return legacy(m.mscgen);
|
|
1702
|
+
}
|
|
1703
|
+
},
|
|
1704
|
+
{
|
|
1705
|
+
name: 'xu',
|
|
1706
|
+
displayName: trans.__('xu'),
|
|
1707
|
+
mime: 'text/x-xu',
|
|
1708
|
+
extensions: ['xu'],
|
|
1709
|
+
async load() {
|
|
1710
|
+
const m = await import('@codemirror/legacy-modes/mode/mscgen');
|
|
1711
|
+
return legacy(m.xu);
|
|
1712
|
+
}
|
|
1713
|
+
},
|
|
1714
|
+
{
|
|
1715
|
+
name: 'msgenny',
|
|
1716
|
+
displayName: trans.__('msgenny'),
|
|
1717
|
+
mime: 'text/x-msgenny',
|
|
1718
|
+
extensions: ['msgenny'],
|
|
1719
|
+
async load() {
|
|
1720
|
+
const m = await import('@codemirror/legacy-modes/mode/mscgen');
|
|
1721
|
+
return legacy(m.msgenny);
|
|
1722
|
+
}
|
|
1723
|
+
}
|
|
1724
|
+
];
|
|
1725
|
+
}
|
|
1726
|
+
}
|