monaco-editor11 1.0.0 → 1.0.2

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 (93) hide show
  1. package/dist/monaco-editor11.es.js +55 -0
  2. package/dist/monaco-editor11.umd.js +1 -0
  3. package/package.json +2 -1
  4. package/dist/abap-CrvW7_qN.mjs +0 -1398
  5. package/dist/apex-BAOI8p1v.mjs +0 -327
  6. package/dist/azcli-BlCk_UqW.mjs +0 -68
  7. package/dist/bat-DPoEelVx.mjs +0 -100
  8. package/dist/bicep-Cp1F394l.mjs +0 -102
  9. package/dist/cameligo-CWqtSlQs.mjs +0 -174
  10. package/dist/clojure-CKBp32Gf.mjs +0 -761
  11. package/dist/coffee-CDo6vc-J.mjs +0 -232
  12. package/dist/cpp-DokufPgf.mjs +0 -389
  13. package/dist/csharp-BQi3szM0.mjs +0 -326
  14. package/dist/csp-BSGtCCZ-.mjs +0 -53
  15. package/dist/css-DEPFDJfb.mjs +0 -187
  16. package/dist/cssMode-BhKA1zSu.mjs +0 -141
  17. package/dist/cypher-DAb1vOxS.mjs +0 -263
  18. package/dist/dart-C8p4jewR.mjs +0 -281
  19. package/dist/dockerfile-DP0iLFPN.mjs +0 -130
  20. package/dist/ecl-BDQHA6fi.mjs +0 -456
  21. package/dist/elixir-D4II6kDM.mjs +0 -569
  22. package/dist/flow9-StcnL-VB.mjs +0 -142
  23. package/dist/freemarker2-ww_D58dk.mjs +0 -982
  24. package/dist/fsharp-DdUVp3EN.mjs +0 -217
  25. package/dist/go-D1-I258M.mjs +0 -218
  26. package/dist/graphql-DWkL3f8U.mjs +0 -151
  27. package/dist/handlebars-p6e472fk.mjs +0 -412
  28. package/dist/hb-vue3-print-nb.es.js +0 -24
  29. package/dist/hb-vue3-print-nb.umd.js +0 -1234
  30. package/dist/hcl-D_0MNifv.mjs +0 -183
  31. package/dist/html-RxjjEvRj.mjs +0 -301
  32. package/dist/htmlMode-CJ7jqvHB.mjs +0 -152
  33. package/dist/index-D22E33Ns.mjs +0 -128804
  34. package/dist/ini-C4I2-MT7.mjs +0 -71
  35. package/dist/java-OBvaP_SS.mjs +0 -232
  36. package/dist/javascript-4cugaJH-.mjs +0 -70
  37. package/dist/jsonMode-mEAKo0MB.mjs +0 -577
  38. package/dist/julia-BmDH8Kkf.mjs +0 -511
  39. package/dist/kotlin-Dhu5AGOD.mjs +0 -252
  40. package/dist/less-CzmjXREq.mjs +0 -162
  41. package/dist/lexon-CV2c4pN9.mjs +0 -157
  42. package/dist/liquid-CHAki8UD.mjs +0 -233
  43. package/dist/lspLanguageFeatures-B7Hqx8aW.mjs +0 -1458
  44. package/dist/lua-CFY5U8qF.mjs +0 -162
  45. package/dist/m3-BL_AnZVh.mjs +0 -210
  46. package/dist/markdown-CWKQPXCv.mjs +0 -229
  47. package/dist/mdx-zeC77g8c.mjs +0 -158
  48. package/dist/mips-ButYmJ5E.mjs +0 -198
  49. package/dist/monaco-editor11.css +0 -1
  50. package/dist/msdax-C3cnXqDh.mjs +0 -375
  51. package/dist/mysql-YlSHaf6G.mjs +0 -878
  52. package/dist/objective-c-Dwnlproe.mjs +0 -183
  53. package/dist/pascal-UzGbSWEN.mjs +0 -251
  54. package/dist/pascaligo-CslTgu68.mjs +0 -164
  55. package/dist/perl-oj6r_mgw.mjs +0 -626
  56. package/dist/pgsql-DSBO0Mev.mjs +0 -851
  57. package/dist/php-YzCD--7j.mjs +0 -500
  58. package/dist/pla-CmylB8vQ.mjs +0 -137
  59. package/dist/postiats-CLFW5gNY.mjs +0 -907
  60. package/dist/powerquery-CmOWUvlh.mjs +0 -890
  61. package/dist/powershell-fHQcmBLK.mjs +0 -239
  62. package/dist/protobuf-p5BArb-9.mjs +0 -420
  63. package/dist/pug-gVdUDvqf.mjs +0 -402
  64. package/dist/python-DULwfuw6.mjs +0 -294
  65. package/dist/qsharp-DnrWSUlt.mjs +0 -301
  66. package/dist/r-Cv309K2z.mjs +0 -243
  67. package/dist/razor-c0jgmA5G.mjs +0 -543
  68. package/dist/redis-DTcS4wMj.mjs +0 -302
  69. package/dist/redshift-hLxZVESM.mjs +0 -809
  70. package/dist/restructuredtext-C898lK4f.mjs +0 -174
  71. package/dist/ruby-CgKtnJIQ.mjs +0 -511
  72. package/dist/rust-bj8oxVnh.mjs +0 -343
  73. package/dist/sb-DWynz26l.mjs +0 -115
  74. package/dist/scala-BL5z1UEd.mjs +0 -370
  75. package/dist/scheme-DUJsH6VU.mjs +0 -108
  76. package/dist/scss-CxjmhvaL.mjs +0 -262
  77. package/dist/shell-D14Zs1dF.mjs +0 -221
  78. package/dist/solidity-WyRm-BGK.mjs +0 -1367
  79. package/dist/sophia-CKk-_Oa5.mjs +0 -199
  80. package/dist/sparql-DHtmINMZ.mjs +0 -201
  81. package/dist/sql-Dqaj5JHC.mjs +0 -853
  82. package/dist/st-Bj2IIaop.mjs +0 -416
  83. package/dist/swift-DwxP72iM.mjs +0 -312
  84. package/dist/systemverilog-D7wJfuql.mjs +0 -576
  85. package/dist/tcl-0ApMt-eC.mjs +0 -232
  86. package/dist/tsMode-CepBtZtU.mjs +0 -946
  87. package/dist/twig-DxwbdmvQ.mjs +0 -392
  88. package/dist/typescript-hbfpGuFj.mjs +0 -336
  89. package/dist/typespec-Fd-JwSuS.mjs +0 -117
  90. package/dist/vb-CxuyYE1I.mjs +0 -372
  91. package/dist/wgsl-DoEGc31J.mjs +0 -439
  92. package/dist/xml-DE69CcMx.mjs +0 -88
  93. package/dist/yaml-CdiGER8y.mjs +0 -199
@@ -1,569 +0,0 @@
1
- const e = {
2
- comments: {
3
- lineComment: "#"
4
- },
5
- brackets: [
6
- ["{", "}"],
7
- ["[", "]"],
8
- ["(", ")"]
9
- ],
10
- surroundingPairs: [
11
- { open: "{", close: "}" },
12
- { open: "[", close: "]" },
13
- { open: "(", close: ")" },
14
- { open: "'", close: "'" },
15
- { open: '"', close: '"' }
16
- ],
17
- autoClosingPairs: [
18
- { open: "'", close: "'", notIn: ["string", "comment"] },
19
- { open: '"', close: '"', notIn: ["comment"] },
20
- { open: '"""', close: '"""' },
21
- { open: "`", close: "`", notIn: ["string", "comment"] },
22
- { open: "(", close: ")" },
23
- { open: "{", close: "}" },
24
- { open: "[", close: "]" },
25
- { open: "<<", close: ">>" }
26
- ],
27
- indentationRules: {
28
- increaseIndentPattern: /^\s*(after|else|catch|rescue|fn|[^#]*(do|<\-|\->|\{|\[|\=))\s*$/,
29
- decreaseIndentPattern: /^\s*((\}|\])\s*$|(after|else|catch|rescue|end)\b)/
30
- }
31
- }, t = {
32
- defaultToken: "source",
33
- tokenPostfix: ".elixir",
34
- brackets: [
35
- { open: "[", close: "]", token: "delimiter.square" },
36
- { open: "(", close: ")", token: "delimiter.parenthesis" },
37
- { open: "{", close: "}", token: "delimiter.curly" },
38
- { open: "<<", close: ">>", token: "delimiter.angle.special" }
39
- ],
40
- // Below are lists/regexps to which we reference later.
41
- declarationKeywords: [
42
- "def",
43
- "defp",
44
- "defn",
45
- "defnp",
46
- "defguard",
47
- "defguardp",
48
- "defmacro",
49
- "defmacrop",
50
- "defdelegate",
51
- "defcallback",
52
- "defmacrocallback",
53
- "defmodule",
54
- "defprotocol",
55
- "defexception",
56
- "defimpl",
57
- "defstruct"
58
- ],
59
- operatorKeywords: ["and", "in", "not", "or", "when"],
60
- namespaceKeywords: ["alias", "import", "require", "use"],
61
- otherKeywords: [
62
- "after",
63
- "case",
64
- "catch",
65
- "cond",
66
- "do",
67
- "else",
68
- "end",
69
- "fn",
70
- "for",
71
- "if",
72
- "quote",
73
- "raise",
74
- "receive",
75
- "rescue",
76
- "super",
77
- "throw",
78
- "try",
79
- "unless",
80
- "unquote_splicing",
81
- "unquote",
82
- "with"
83
- ],
84
- constants: ["true", "false", "nil"],
85
- nameBuiltin: ["__MODULE__", "__DIR__", "__ENV__", "__CALLER__", "__STACKTRACE__"],
86
- // Matches any of the operator names:
87
- // <<< >>> ||| &&& ^^^ ~~~ === !== ~>> <~> |~> <|> == != <= >= && || \\ <> ++ -- |> =~ -> <- ~> <~ :: .. = < > + - * / | . ^ & !
88
- operator: /-[->]?|!={0,2}|\*{1,2}|\/|\\\\|&{1,3}|\.\.?|\^(?:\^\^)?|\+\+?|<(?:-|<<|=|>|\|>|~>?)?|=~|={1,3}|>(?:=|>>)?|\|~>|\|>|\|{1,3}|~>>?|~~~|::/,
89
- // See https://hexdocs.pm/elixir/syntax-reference.html#variables
90
- variableName: /[a-z_][a-zA-Z0-9_]*[?!]?/,
91
- // See https://hexdocs.pm/elixir/syntax-reference.html#atoms
92
- atomName: /[a-zA-Z_][a-zA-Z0-9_@]*[?!]?|@specialAtomName|@operator/,
93
- specialAtomName: /\.\.\.|<<>>|%\{\}|%|\{\}/,
94
- aliasPart: /[A-Z][a-zA-Z0-9_]*/,
95
- moduleName: /@aliasPart(?:\.@aliasPart)*/,
96
- // Sigil pairs are: """ """, ''' ''', " ", ' ', / /, | |, < >, { }, [ ], ( )
97
- sigilSymmetricDelimiter: /"""|'''|"|'|\/|\|/,
98
- sigilStartDelimiter: /@sigilSymmetricDelimiter|<|\{|\[|\(/,
99
- sigilEndDelimiter: /@sigilSymmetricDelimiter|>|\}|\]|\)/,
100
- sigilModifiers: /[a-zA-Z0-9]*/,
101
- decimal: /\d(?:_?\d)*/,
102
- hex: /[0-9a-fA-F](_?[0-9a-fA-F])*/,
103
- octal: /[0-7](_?[0-7])*/,
104
- binary: /[01](_?[01])*/,
105
- // See https://hexdocs.pm/elixir/master/String.html#module-escape-characters
106
- escape: /\\u[0-9a-fA-F]{4}|\\x[0-9a-fA-F]{2}|\\./,
107
- // The keys below correspond to tokenizer states.
108
- // We start from the root state and match against its rules
109
- // until we explicitly transition into another state.
110
- // The `include` simply brings in all operations from the given state
111
- // and is useful for improving readability.
112
- tokenizer: {
113
- root: [
114
- { include: "@whitespace" },
115
- { include: "@comments" },
116
- // Keywords start as either an identifier or a string,
117
- // but end with a : so it's important to match this first.
118
- { include: "@keywordsShorthand" },
119
- { include: "@numbers" },
120
- { include: "@identifiers" },
121
- { include: "@strings" },
122
- { include: "@atoms" },
123
- { include: "@sigils" },
124
- { include: "@attributes" },
125
- { include: "@symbols" }
126
- ],
127
- // Whitespace
128
- whitespace: [[/\s+/, "white"]],
129
- // Comments
130
- comments: [[/(#)(.*)/, ["comment.punctuation", "comment"]]],
131
- // Keyword list shorthand
132
- keywordsShorthand: [
133
- [/(@atomName)(:)(\s+)/, ["constant", "constant.punctuation", "white"]],
134
- // Use positive look-ahead to ensure the string is followed by :
135
- // and should be considered a keyword.
136
- [
137
- /"(?=([^"]|#\{.*?\}|\\")*":)/,
138
- { token: "constant.delimiter", next: "@doubleQuotedStringKeyword" }
139
- ],
140
- [
141
- /'(?=([^']|#\{.*?\}|\\')*':)/,
142
- { token: "constant.delimiter", next: "@singleQuotedStringKeyword" }
143
- ]
144
- ],
145
- doubleQuotedStringKeyword: [
146
- [/":/, { token: "constant.delimiter", next: "@pop" }],
147
- { include: "@stringConstantContentInterpol" }
148
- ],
149
- singleQuotedStringKeyword: [
150
- [/':/, { token: "constant.delimiter", next: "@pop" }],
151
- { include: "@stringConstantContentInterpol" }
152
- ],
153
- // Numbers
154
- numbers: [
155
- [/0b@binary/, "number.binary"],
156
- [/0o@octal/, "number.octal"],
157
- [/0x@hex/, "number.hex"],
158
- [/@decimal\.@decimal([eE]-?@decimal)?/, "number.float"],
159
- [/@decimal/, "number"]
160
- ],
161
- // Identifiers
162
- identifiers: [
163
- // Tokenize identifier name in function-like definitions.
164
- // Note: given `def a + b, do: nil`, `a` is not a function name,
165
- // so we use negative look-ahead to ensure there's no operator.
166
- [
167
- /\b(defp?|defnp?|defmacrop?|defguardp?|defdelegate)(\s+)(@variableName)(?!\s+@operator)/,
168
- [
169
- "keyword.declaration",
170
- "white",
171
- {
172
- cases: {
173
- unquote: "keyword",
174
- "@default": "function"
175
- }
176
- }
177
- ]
178
- ],
179
- // Tokenize function calls
180
- [
181
- // In-scope call - an identifier followed by ( or .(
182
- /(@variableName)(?=\s*\.?\s*\()/,
183
- {
184
- cases: {
185
- // Tokenize as keyword in cases like `if(..., do: ..., else: ...)`
186
- "@declarationKeywords": "keyword.declaration",
187
- "@namespaceKeywords": "keyword",
188
- "@otherKeywords": "keyword",
189
- "@default": "function.call"
190
- }
191
- }
192
- ],
193
- [
194
- // Referencing function in a module
195
- /(@moduleName)(\s*)(\.)(\s*)(@variableName)/,
196
- ["type.identifier", "white", "operator", "white", "function.call"]
197
- ],
198
- [
199
- // Referencing function in an Erlang module
200
- /(:)(@atomName)(\s*)(\.)(\s*)(@variableName)/,
201
- ["constant.punctuation", "constant", "white", "operator", "white", "function.call"]
202
- ],
203
- [
204
- // Piping into a function (tokenized separately as it may not have parentheses)
205
- /(\|>)(\s*)(@variableName)/,
206
- [
207
- "operator",
208
- "white",
209
- {
210
- cases: {
211
- "@otherKeywords": "keyword",
212
- "@default": "function.call"
213
- }
214
- }
215
- ]
216
- ],
217
- [
218
- // Function reference passed to another function
219
- /(&)(\s*)(@variableName)/,
220
- ["operator", "white", "function.call"]
221
- ],
222
- // Language keywords, builtins, constants and variables
223
- [
224
- /@variableName/,
225
- {
226
- cases: {
227
- "@declarationKeywords": "keyword.declaration",
228
- "@operatorKeywords": "keyword.operator",
229
- "@namespaceKeywords": "keyword",
230
- "@otherKeywords": "keyword",
231
- "@constants": "constant.language",
232
- "@nameBuiltin": "variable.language",
233
- "_.*": "comment.unused",
234
- "@default": "identifier"
235
- }
236
- }
237
- ],
238
- // Module names
239
- [/@moduleName/, "type.identifier"]
240
- ],
241
- // Strings
242
- strings: [
243
- [/"""/, { token: "string.delimiter", next: "@doubleQuotedHeredoc" }],
244
- [/'''/, { token: "string.delimiter", next: "@singleQuotedHeredoc" }],
245
- [/"/, { token: "string.delimiter", next: "@doubleQuotedString" }],
246
- [/'/, { token: "string.delimiter", next: "@singleQuotedString" }]
247
- ],
248
- doubleQuotedHeredoc: [
249
- [/"""/, { token: "string.delimiter", next: "@pop" }],
250
- { include: "@stringContentInterpol" }
251
- ],
252
- singleQuotedHeredoc: [
253
- [/'''/, { token: "string.delimiter", next: "@pop" }],
254
- { include: "@stringContentInterpol" }
255
- ],
256
- doubleQuotedString: [
257
- [/"/, { token: "string.delimiter", next: "@pop" }],
258
- { include: "@stringContentInterpol" }
259
- ],
260
- singleQuotedString: [
261
- [/'/, { token: "string.delimiter", next: "@pop" }],
262
- { include: "@stringContentInterpol" }
263
- ],
264
- // Atoms
265
- atoms: [
266
- [/(:)(@atomName)/, ["constant.punctuation", "constant"]],
267
- [/:"/, { token: "constant.delimiter", next: "@doubleQuotedStringAtom" }],
268
- [/:'/, { token: "constant.delimiter", next: "@singleQuotedStringAtom" }]
269
- ],
270
- doubleQuotedStringAtom: [
271
- [/"/, { token: "constant.delimiter", next: "@pop" }],
272
- { include: "@stringConstantContentInterpol" }
273
- ],
274
- singleQuotedStringAtom: [
275
- [/'/, { token: "constant.delimiter", next: "@pop" }],
276
- { include: "@stringConstantContentInterpol" }
277
- ],
278
- // Sigils
279
- // See https://elixir-lang.org/getting-started/sigils.html
280
- // Sigils allow for typing values using their textual representation.
281
- // All sigils start with ~ followed by a letter or
282
- // multi-letter uppercase starting at Elixir v1.15.0, indicating sigil type
283
- // and then a delimiter pair enclosing the textual representation.
284
- // Optional modifiers are allowed after the closing delimiter.
285
- // For instance a regular expressions can be written as:
286
- // ~r/foo|bar/ ~r{foo|bar} ~r/foo|bar/g
287
- //
288
- // In general lowercase sigils allow for interpolation
289
- // and escaped characters, whereas uppercase sigils don't
290
- //
291
- // During tokenization we want to distinguish some
292
- // specific sigil types, namely string and regexp,
293
- // so that they cen be themed separately.
294
- //
295
- // To reasonably handle all those combinations we leverage
296
- // dot-separated states, so if we transition to @sigilStart.interpol.s.{.}
297
- // then "sigilStart.interpol.s" state will match and also all
298
- // the individual dot-separated parameters can be accessed.
299
- sigils: [
300
- [/~[a-z]@sigilStartDelimiter/, { token: "@rematch", next: "@sigil.interpol" }],
301
- [/~([A-Z]+)@sigilStartDelimiter/, { token: "@rematch", next: "@sigil.noInterpol" }]
302
- ],
303
- sigil: [
304
- [/~([a-z]|[A-Z]+)\{/, { token: "@rematch", switchTo: "@sigilStart.$S2.$1.{.}" }],
305
- [/~([a-z]|[A-Z]+)\[/, { token: "@rematch", switchTo: "@sigilStart.$S2.$1.[.]" }],
306
- [/~([a-z]|[A-Z]+)\(/, { token: "@rematch", switchTo: "@sigilStart.$S2.$1.(.)" }],
307
- [/~([a-z]|[A-Z]+)\</, { token: "@rematch", switchTo: "@sigilStart.$S2.$1.<.>" }],
308
- [
309
- /~([a-z]|[A-Z]+)(@sigilSymmetricDelimiter)/,
310
- { token: "@rematch", switchTo: "@sigilStart.$S2.$1.$2.$2" }
311
- ]
312
- ],
313
- // The definitions below expect states to be of the form:
314
- //
315
- // sigilStart.<interpol-or-noInterpol>.<sigil-letter>.<start-delimiter>.<end-delimiter>
316
- // sigilContinue.<interpol-or-noInterpol>.<sigil-letter>.<start-delimiter>.<end-delimiter>
317
- //
318
- // The sigilStart state is used only to properly classify the token (as string/regex/sigil)
319
- // and immediately switches to the sigilContinue sate, which handles the actual content
320
- // and waits for the corresponding end delimiter.
321
- "sigilStart.interpol.s": [
322
- [
323
- /~s@sigilStartDelimiter/,
324
- {
325
- token: "string.delimiter",
326
- switchTo: "@sigilContinue.$S2.$S3.$S4.$S5"
327
- }
328
- ]
329
- ],
330
- "sigilContinue.interpol.s": [
331
- [
332
- /(@sigilEndDelimiter)@sigilModifiers/,
333
- {
334
- cases: {
335
- "$1==$S5": { token: "string.delimiter", next: "@pop" },
336
- "@default": "string"
337
- }
338
- }
339
- ],
340
- { include: "@stringContentInterpol" }
341
- ],
342
- "sigilStart.noInterpol.S": [
343
- [
344
- /~S@sigilStartDelimiter/,
345
- {
346
- token: "string.delimiter",
347
- switchTo: "@sigilContinue.$S2.$S3.$S4.$S5"
348
- }
349
- ]
350
- ],
351
- "sigilContinue.noInterpol.S": [
352
- // Ignore escaped sigil end
353
- [/(^|[^\\])\\@sigilEndDelimiter/, "string"],
354
- [
355
- /(@sigilEndDelimiter)@sigilModifiers/,
356
- {
357
- cases: {
358
- "$1==$S5": { token: "string.delimiter", next: "@pop" },
359
- "@default": "string"
360
- }
361
- }
362
- ],
363
- { include: "@stringContent" }
364
- ],
365
- "sigilStart.interpol.r": [
366
- [
367
- /~r@sigilStartDelimiter/,
368
- {
369
- token: "regexp.delimiter",
370
- switchTo: "@sigilContinue.$S2.$S3.$S4.$S5"
371
- }
372
- ]
373
- ],
374
- "sigilContinue.interpol.r": [
375
- [
376
- /(@sigilEndDelimiter)@sigilModifiers/,
377
- {
378
- cases: {
379
- "$1==$S5": { token: "regexp.delimiter", next: "@pop" },
380
- "@default": "regexp"
381
- }
382
- }
383
- ],
384
- { include: "@regexpContentInterpol" }
385
- ],
386
- "sigilStart.noInterpol.R": [
387
- [
388
- /~R@sigilStartDelimiter/,
389
- {
390
- token: "regexp.delimiter",
391
- switchTo: "@sigilContinue.$S2.$S3.$S4.$S5"
392
- }
393
- ]
394
- ],
395
- "sigilContinue.noInterpol.R": [
396
- // Ignore escaped sigil end
397
- [/(^|[^\\])\\@sigilEndDelimiter/, "regexp"],
398
- [
399
- /(@sigilEndDelimiter)@sigilModifiers/,
400
- {
401
- cases: {
402
- "$1==$S5": { token: "regexp.delimiter", next: "@pop" },
403
- "@default": "regexp"
404
- }
405
- }
406
- ],
407
- { include: "@regexpContent" }
408
- ],
409
- // Fallback to the generic sigil by default
410
- "sigilStart.interpol": [
411
- [
412
- /~([a-z]|[A-Z]+)@sigilStartDelimiter/,
413
- {
414
- token: "sigil.delimiter",
415
- switchTo: "@sigilContinue.$S2.$S3.$S4.$S5"
416
- }
417
- ]
418
- ],
419
- "sigilContinue.interpol": [
420
- [
421
- /(@sigilEndDelimiter)@sigilModifiers/,
422
- {
423
- cases: {
424
- "$1==$S5": { token: "sigil.delimiter", next: "@pop" },
425
- "@default": "sigil"
426
- }
427
- }
428
- ],
429
- { include: "@sigilContentInterpol" }
430
- ],
431
- "sigilStart.noInterpol": [
432
- [
433
- /~([a-z]|[A-Z]+)@sigilStartDelimiter/,
434
- {
435
- token: "sigil.delimiter",
436
- switchTo: "@sigilContinue.$S2.$S3.$S4.$S5"
437
- }
438
- ]
439
- ],
440
- "sigilContinue.noInterpol": [
441
- // Ignore escaped sigil end
442
- [/(^|[^\\])\\@sigilEndDelimiter/, "sigil"],
443
- [
444
- /(@sigilEndDelimiter)@sigilModifiers/,
445
- {
446
- cases: {
447
- "$1==$S5": { token: "sigil.delimiter", next: "@pop" },
448
- "@default": "sigil"
449
- }
450
- }
451
- ],
452
- { include: "@sigilContent" }
453
- ],
454
- // Attributes
455
- attributes: [
456
- // Module @doc* attributes - tokenized as comments
457
- [
458
- /\@(module|type)?doc (~[sS])?"""/,
459
- {
460
- token: "comment.block.documentation",
461
- next: "@doubleQuotedHeredocDocstring"
462
- }
463
- ],
464
- [
465
- /\@(module|type)?doc (~[sS])?'''/,
466
- {
467
- token: "comment.block.documentation",
468
- next: "@singleQuotedHeredocDocstring"
469
- }
470
- ],
471
- [
472
- /\@(module|type)?doc (~[sS])?"/,
473
- {
474
- token: "comment.block.documentation",
475
- next: "@doubleQuotedStringDocstring"
476
- }
477
- ],
478
- [
479
- /\@(module|type)?doc (~[sS])?'/,
480
- {
481
- token: "comment.block.documentation",
482
- next: "@singleQuotedStringDocstring"
483
- }
484
- ],
485
- [/\@(module|type)?doc false/, "comment.block.documentation"],
486
- // Module attributes
487
- [/\@(@variableName)/, "variable"]
488
- ],
489
- doubleQuotedHeredocDocstring: [
490
- [/"""/, { token: "comment.block.documentation", next: "@pop" }],
491
- { include: "@docstringContent" }
492
- ],
493
- singleQuotedHeredocDocstring: [
494
- [/'''/, { token: "comment.block.documentation", next: "@pop" }],
495
- { include: "@docstringContent" }
496
- ],
497
- doubleQuotedStringDocstring: [
498
- [/"/, { token: "comment.block.documentation", next: "@pop" }],
499
- { include: "@docstringContent" }
500
- ],
501
- singleQuotedStringDocstring: [
502
- [/'/, { token: "comment.block.documentation", next: "@pop" }],
503
- { include: "@docstringContent" }
504
- ],
505
- // Operators, punctuation, brackets
506
- symbols: [
507
- // Code point operator (either with regular character ?a or an escaped one ?\n)
508
- [/\?(\\.|[^\\\s])/, "number.constant"],
509
- // Anonymous function arguments
510
- [/&\d+/, "operator"],
511
- // Bitshift operators (must go before delimiters, so that << >> don't match first)
512
- [/<<<|>>>/, "operator"],
513
- // Delimiter pairs
514
- [/[()\[\]\{\}]|<<|>>/, "@brackets"],
515
- // Triple dot is a valid name (must go before operators, so that .. doesn't match instead)
516
- [/\.\.\./, "identifier"],
517
- // Punctuation => (must go before operators, so it's not tokenized as = then >)
518
- [/=>/, "punctuation"],
519
- // Operators
520
- [/@operator/, "operator"],
521
- // Punctuation
522
- [/[:;,.%]/, "punctuation"]
523
- ],
524
- // Generic helpers
525
- stringContentInterpol: [
526
- { include: "@interpolation" },
527
- { include: "@escapeChar" },
528
- { include: "@stringContent" }
529
- ],
530
- stringContent: [[/./, "string"]],
531
- stringConstantContentInterpol: [
532
- { include: "@interpolation" },
533
- { include: "@escapeChar" },
534
- { include: "@stringConstantContent" }
535
- ],
536
- stringConstantContent: [[/./, "constant"]],
537
- regexpContentInterpol: [
538
- { include: "@interpolation" },
539
- { include: "@escapeChar" },
540
- { include: "@regexpContent" }
541
- ],
542
- regexpContent: [
543
- // # may be a regular regexp char, so we use a heuristic
544
- // assuming a # surrounded by whitespace is actually a comment.
545
- [/(\s)(#)(\s.*)$/, ["white", "comment.punctuation", "comment"]],
546
- [/./, "regexp"]
547
- ],
548
- sigilContentInterpol: [
549
- { include: "@interpolation" },
550
- { include: "@escapeChar" },
551
- { include: "@sigilContent" }
552
- ],
553
- sigilContent: [[/./, "sigil"]],
554
- docstringContent: [[/./, "comment.block.documentation"]],
555
- escapeChar: [[/@escape/, "constant.character.escape"]],
556
- interpolation: [[/#{/, { token: "delimiter.bracket.embed", next: "@interpolationContinue" }]],
557
- interpolationContinue: [
558
- [/}/, { token: "delimiter.bracket.embed", next: "@pop" }],
559
- // Interpolation brackets may contain arbitrary code,
560
- // so we simply match against all the root rules,
561
- // until we reach interpolation end (the above matches).
562
- { include: "@root" }
563
- ]
564
- }
565
- };
566
- export {
567
- e as conf,
568
- t as language
569
- };