@jupyterlab/codemirror 4.0.0-alpha.2 → 4.0.0-alpha.20

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