tm-grammars 1.17.3 → 1.17.5
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/README.md +67 -67
- package/grammars/actionscript-3.json +12 -12
- package/grammars/angular-expression.json +6 -6
- package/grammars/angular-ts.json +42 -42
- package/grammars/apex.json +25 -25
- package/grammars/apl.json +8 -8
- package/grammars/ara.json +6 -6
- package/grammars/astro.json +1 -1
- package/grammars/ballerina.json +4 -4
- package/grammars/bicep.json +1 -1
- package/grammars/blade.json +16 -16
- package/grammars/c.json +11 -11
- package/grammars/clarity.json +25 -25
- package/grammars/codeql.json +182 -182
- package/grammars/coffee.json +9 -9
- package/grammars/common-lisp.json +2 -2
- package/grammars/cpp.json +3 -3
- package/grammars/crystal.json +4 -4
- package/grammars/csharp.json +50 -50
- package/grammars/css.json +15 -15
- package/grammars/dax.json +6 -6
- package/grammars/dream-maker.json +6 -6
- package/grammars/emacs-lisp.json +74 -74
- package/grammars/gdscript.json +12 -12
- package/grammars/glimmer-js.json +1 -1
- package/grammars/glimmer-ts.json +1 -1
- package/grammars/groovy.json +2 -2
- package/grammars/hack.json +8 -8
- package/grammars/haskell.json +64 -62
- package/grammars/haxe.json +1 -1
- package/grammars/html.json +1 -1
- package/grammars/imba.json +16 -16
- package/grammars/java.json +5 -5
- package/grammars/javascript.json +44 -44
- package/grammars/json.json +2 -2
- package/grammars/jsonc.json +2 -2
- package/grammars/jsonl.json +2 -2
- package/grammars/jsx.json +44 -44
- package/grammars/less.json +8 -8
- package/grammars/markdown.json +5 -5
- package/grammars/marko.json +1 -1
- package/grammars/matlab.json +7 -7
- package/grammars/mdc.json +6 -6
- package/grammars/mojo.json +85 -85
- package/grammars/narrat.json +2 -2
- package/grammars/objective-c.json +7 -7
- package/grammars/objective-cpp.json +13 -13
- package/grammars/php.json +10 -10
- package/grammars/purescript.json +1 -1
- package/grammars/python.json +85 -85
- package/grammars/racket.json +18 -15
- package/grammars/razor.json +3 -3
- package/grammars/regexp.json +7 -7
- package/grammars/riscv.json +1 -1
- package/grammars/ruby.json +4 -4
- package/grammars/scala.json +2 -2
- package/grammars/scheme.json +10 -10
- package/grammars/scss.json +4 -4
- package/grammars/shellsession.json +1 -1
- package/grammars/stylus.json +3 -3
- package/grammars/swift.json +32 -32
- package/grammars/system-verilog.json +1 -1
- package/grammars/toml.json +3 -3
- package/grammars/tsx.json +44 -44
- package/grammars/twig.json +4 -4
- package/grammars/typescript.json +42 -42
- package/grammars/typespec.json +3 -3
- package/grammars/vhdl.json +37 -37
- package/grammars/vue.json +1 -1
- package/grammars/vyper.json +105 -105
- package/grammars/yaml.json +17 -17
- package/index.js +73 -73
- package/package.json +1 -1
package/grammars/haskell.json
CHANGED
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
"hs-boot",
|
|
6
6
|
"hsig"
|
|
7
7
|
],
|
|
8
|
+
"keyEquivalent": "^~H",
|
|
8
9
|
"name": "haskell",
|
|
9
10
|
"patterns": [
|
|
10
11
|
{
|
|
@@ -136,7 +137,7 @@
|
|
|
136
137
|
"name": "keyword.other.class.haskell"
|
|
137
138
|
}
|
|
138
139
|
},
|
|
139
|
-
"end": "(?x)
|
|
140
|
+
"end": "(?x) # Detect end of class declaration:\n # 'where' keyword\n (?=(?<!')\\bwhere\\b(?!')) \n # Decreasing indentation\n |(?=\\}|;) # Explicit indentation\n |^(?! # Implicit indentation: end match on newline *unless* the new line is either:\n \\1\\s+\\S # - more indented, or\n | \\s* # - starts with whitespace, followed by:\n (?: $ # - the end of the line (i.e. empty line), or\n |\\{-[^@] # - the start of a block comment, or\n |--+ # - the start of a single-line comment.\n (?![\\p{S}\\p{P}&&[^(),;\\[\\]{}`_\"']]).*$) # non-symbol\n # The double dash may not be followed by other operator characters\n # (then it would be an operator, not a comment)\n )",
|
|
140
141
|
"name": "meta.declaration.class.haskell",
|
|
141
142
|
"patterns": [
|
|
142
143
|
{
|
|
@@ -151,7 +152,7 @@
|
|
|
151
152
|
]
|
|
152
153
|
},
|
|
153
154
|
{
|
|
154
|
-
"begin": "(?x)\n^(\\s*)(data|newtype)(?:\\s+(instance))?\\s+\n
|
|
155
|
+
"begin": "(?x)\n ^(\\s*)(data|newtype)(?:\\s+(instance))?\\s+\n # Keep consuming characters until:\n ((?:(?!\n # the equals symbol or the start of a single-line comment, or\n (?: \n (?<![\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']]) # non-symbol\n (?:=|--+)\n (?![\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']]) # non-symbol\n )\n # the \"where\" or \"deriving\" keywords, or\n | (?:\\b(?<!')(?:where|deriving)\\b(?!'))\n # the start of a block comment.\n | {-\n #\n ).)*)\n (?=\\b(?<!'')where\\b(?!''))",
|
|
155
156
|
"beginCaptures": {
|
|
156
157
|
"2": {
|
|
157
158
|
"name": "keyword.other.$2.haskell"
|
|
@@ -167,14 +168,14 @@
|
|
|
167
168
|
]
|
|
168
169
|
}
|
|
169
170
|
},
|
|
170
|
-
"end": "(?x)
|
|
171
|
+
"end": "(?x) # Detect end of data declaration:\n # Deriving clause\n (?=(?<!')\\bderiving\\b(?!')) \n # Decreasing indentation\n |(?=\\}|;) # Explicit indentation\n |^(?! # Implicit indentation: end match on newline *unless* the new line is either:\n \\1\\s+\\S # - more indented, or\n | \\s* # - starts with whitespace, followed by:\n (?: $ # - the end of the line (i.e. empty line), or\n |\\{-[^@] # - the start of a block comment, or\n |--+ # - the start of a single-line comment.\n (?![\\p{S}\\p{P}&&[^(),;\\[\\]{}`_\"']]).*$) # non-symbol\n # The double dash may not be followed by other operator characters\n # (then it would be an operator, not a comment)\n )\n",
|
|
171
172
|
"name": "meta.declaration.$2.generalized.haskell",
|
|
172
173
|
"patterns": [
|
|
173
174
|
{
|
|
174
175
|
"include": "#comment_like"
|
|
175
176
|
},
|
|
176
177
|
{
|
|
177
|
-
"begin": "(?x)\n(?<!')\\b(where)\n\\s*(\\{)(?!-)",
|
|
178
|
+
"begin": "(?x)\n (?<!')\\b(where)\n \\s*(\\{)(?!-)",
|
|
178
179
|
"beginCaptures": {
|
|
179
180
|
"1": {
|
|
180
181
|
"name": "keyword.other.where.haskell"
|
|
@@ -237,7 +238,7 @@
|
|
|
237
238
|
"name": "keyword.operator.double-colon.haskell"
|
|
238
239
|
}
|
|
239
240
|
},
|
|
240
|
-
"end": "(?x)
|
|
241
|
+
"end": "(?x) # Detect end of pattern type definition by decreasing indentation:\n (?=\\}|;) # Explicit indentation\n |^(?! # Implicit indentation: end match on newline *unless* the new line is either:\n \\1\\s+\\S # - more indented, or\n | \\s* # - starts with whitespace, followed by:\n (?: $ # - the end of the line (i.e. empty line), or\n |\\{-[^@] # - the start of a block comment, or\n |--+ # - the start of a single-line comment.\n (?![\\p{S}\\p{P}&&[^(),;\\[\\]{}`_\"']]).*$) # non-symbol\n # The double dash may not be followed by other operator characters\n # (then it would be an operator, not a comment)\n )\n",
|
|
241
242
|
"name": "meta.declaration.pattern.type.haskell",
|
|
242
243
|
"patterns": [
|
|
243
244
|
{
|
|
@@ -252,7 +253,7 @@
|
|
|
252
253
|
"name": "keyword.other.pattern.haskell"
|
|
253
254
|
}
|
|
254
255
|
},
|
|
255
|
-
"end": "(?x)
|
|
256
|
+
"end": "(?x) # Detect end of pattern type definition by decreasing indentation:\n (?=\\}|;) # Explicit indentation\n |^(?! # Implicit indentation: end match on newline *unless* the new line is either:\n \\1\\s+\\S # - more indented, or\n | \\s* # - starts with whitespace, followed by:\n (?: $ # - the end of the line (i.e. empty line), or\n |\\{-[^@] # - the start of a block comment, or\n |--+ # - the start of a single-line comment.\n (?![\\p{S}\\p{P}&&[^(),;\\[\\]{}`_\"']]).*$) # non-symbol\n # The double dash may not be followed by other operator characters\n # (then it would be an operator, not a comment)\n )\n",
|
|
256
257
|
"name": "meta.declaration.pattern.haskell",
|
|
257
258
|
"patterns": [
|
|
258
259
|
{
|
|
@@ -261,7 +262,7 @@
|
|
|
261
262
|
]
|
|
262
263
|
},
|
|
263
264
|
{
|
|
264
|
-
"begin": "(?x)\n\n^(\\s*)(data|newtype)(?:\\s+(family|instance))?\\s+\n
|
|
265
|
+
"begin": "(?x)\n # Data declaration\n ^(\\s*)(data|newtype)(?:\\s+(family|instance))?\\s+\n # Keep consuming characters until:\n (((?!\n # the equals symbol or the start of a single-line comment, or\n (?: \n (?<![\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']]) # non-symbol\n (?:=|--+)\n (?![\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']]) # non-symbol\n )\n # the \"where\" or \"deriving\" keywords, or\n | (?:\\b(?<!')(?:where|deriving)\\b(?!'))\n # the start of a block comment.\n | {-\n #\n ).)*)",
|
|
265
266
|
"beginCaptures": {
|
|
266
267
|
"2": {
|
|
267
268
|
"name": "keyword.other.$2.haskell"
|
|
@@ -277,7 +278,7 @@
|
|
|
277
278
|
]
|
|
278
279
|
}
|
|
279
280
|
},
|
|
280
|
-
"end": "(?x)\n\n(?=\\}|;)\n|^(
|
|
281
|
+
"end": "(?x) # Detect end of data declaration: \n # Decreasing indentation\n (?=\\}|;) # Explicit indentation\n |^(?! # Implicit indentation: end match on newline *unless* the new line is either:\n \\1\\s+\\S # - more indented, or\n | \\s* # - starts with whitespace, followed by:\n (?: $ # - the end of the line (i.e. empty line), or\n |\\{-[^@] # - the start of a block comment, or\n |--+ # - the start of a single-line comment.\n (?![\\p{S}\\p{P}&&[^(),;\\[\\]{}`_\"']]).*$) # non-symbol\n # The double dash may not be followed by other operator characters\n # (then it would be an operator, not a comment)\n )",
|
|
281
282
|
"name": "meta.declaration.$2.algebraic.haskell",
|
|
282
283
|
"patterns": [
|
|
283
284
|
{
|
|
@@ -304,7 +305,7 @@
|
|
|
304
305
|
]
|
|
305
306
|
},
|
|
306
307
|
{
|
|
307
|
-
"begin": "(?x)\n\n^(\\s*)(type)\\s+(family)\\b(?!')\n
|
|
308
|
+
"begin": "(?x)\n # Type family\n ^(\\s*)(type)\\s+(family)\\b(?!')\n # Keep consuming characters until:\n (((?!\n # the equals symbol or the start of a single-line comment, or\n (?: \n (?<![\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']]) # non-symbol\n (?:=|--+)\n (?![\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']]) # non-symbol\n )\n # the \"where\" keyword, or\n | \\b(?<!')where\\b(?!')\n # the start of a block comment.\n | {-\n #\n ).)*)",
|
|
308
309
|
"beginCaptures": {
|
|
309
310
|
"2": {
|
|
310
311
|
"name": "keyword.other.type.haskell"
|
|
@@ -326,7 +327,7 @@
|
|
|
326
327
|
]
|
|
327
328
|
}
|
|
328
329
|
},
|
|
329
|
-
"end": "(?x)
|
|
330
|
+
"end": "(?x) # Detect end of type family by decreasing indentation:\n (?=\\}|;) # Explicit indentation\n |^(?! # Implicit indentation: end match on newline *unless* the new line is either:\n \\1\\s+\\S # - more indented, or\n | \\s* # - starts with whitespace, followed by:\n (?: $ # - the end of the line (i.e. empty line), or\n |\\{-[^@] # - the start of a block comment, or\n |--+ # - the start of a single-line comment.\n (?![\\p{S}\\p{P}&&[^(),;\\[\\]{}`_\"']]).*$) # non-symbol\n # The double dash may not be followed by other operator characters\n # (then it would be an operator, not a comment)\n )\n",
|
|
330
331
|
"name": "meta.declaration.type.family.haskell",
|
|
331
332
|
"patterns": [
|
|
332
333
|
{
|
|
@@ -341,7 +342,7 @@
|
|
|
341
342
|
]
|
|
342
343
|
},
|
|
343
344
|
{
|
|
344
|
-
"begin": "(?x)\n\n^(\\s*)(type)(?:\\s+(instance))?\\s+\n
|
|
345
|
+
"begin": "(?x)\n # Type declaration\n ^(\\s*)(type)(?:\\s+(instance))?\\s+\n # Keep consuming characters until:\n (((?!\n # the equals symbol, the start of a single-line comment, or a type signature\n (?: \n (?<![\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']]) # non-symbol\n (?:=|--+|::|∷)\n (?![\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']]) # non-symbol\n )\n # the start of a block comment.\n | {-\n #\n ).)*)",
|
|
345
346
|
"beginCaptures": {
|
|
346
347
|
"2": {
|
|
347
348
|
"name": "keyword.other.type.haskell"
|
|
@@ -357,7 +358,7 @@
|
|
|
357
358
|
]
|
|
358
359
|
}
|
|
359
360
|
},
|
|
360
|
-
"end": "(?x)
|
|
361
|
+
"end": "(?x) # Detect end of type definition by decreasing indentation:\n (?=\\}|;) # Explicit indentation\n |^(?! # Implicit indentation: end match on newline *unless* the new line is either:\n \\1\\s+\\S # - more indented, or\n | \\s* # - starts with whitespace, followed by:\n (?: $ # - the end of the line (i.e. empty line), or\n |\\{-[^@] # - the start of a block comment, or\n |--+ # - the start of a single-line comment.\n (?![\\p{S}\\p{P}&&[^(),;\\[\\]{}`_\"']]).*$) # non-symbol\n # The double dash may not be followed by other operator characters\n # (then it would be an operator, not a comment)\n )\n",
|
|
361
362
|
"name": "meta.declaration.type.haskell",
|
|
362
363
|
"patterns": [
|
|
363
364
|
{
|
|
@@ -372,7 +373,7 @@
|
|
|
372
373
|
"name": "keyword.other.instance.haskell"
|
|
373
374
|
}
|
|
374
375
|
},
|
|
375
|
-
"end": "(?x)
|
|
376
|
+
"end": "(?x) # Detect end of instance declaration:\n # 'where' keyword\n (?=\\b(?<!')(where)\\b(?!'))\n # Decreasing indentation\n |(?=\\}|;) # Explicit indentation\n |^(?! # Implicit indentation: end match on newline *unless* the new line is either:\n \\1\\s+\\S # - more indented, or\n | \\s* # - starts with whitespace, followed by:\n (?: $ # - the end of the line (i.e. empty line), or\n |\\{-[^@] # - the start of a block comment, or\n |--+ # - the start of a single-line comment.\n (?![\\p{S}\\p{P}&&[^(),;\\[\\]{}`_\"']]).*$) # non-symbol\n # The double dash may not be followed by other operator characters\n # (then it would be an operator, not a comment)\n )\n",
|
|
376
377
|
"name": "meta.declaration.instance.haskell",
|
|
377
378
|
"patterns": [
|
|
378
379
|
{
|
|
@@ -393,7 +394,7 @@
|
|
|
393
394
|
"name": "keyword.other.import.haskell"
|
|
394
395
|
}
|
|
395
396
|
},
|
|
396
|
-
"end": "(?x)\n\n(?=\\b(?<!')(where)\\b(?!'))\n\n|(?=\\}|;)\n|^(
|
|
397
|
+
"end": "(?x) # Detect end of import\n # 'where' keyword\n (?=\\b(?<!')(where)\\b(?!'))\n # Decreasing indentation\n |(?=\\}|;) # Explicit indentation\n |^(?! # Implicit indentation: end match on newline *unless* the new line is either:\n \\1\\s+\\S # - more indented, or\n | \\s* # - starts with whitespace, followed by:\n (?: $ # - the end of the line (i.e. empty line), or\n |\\{-[^@] # - the start of a block comment, or\n |--+ # - the start of a single-line comment.\n (?![\\p{S}\\p{P}&&[^(),;\\[\\]{}`_\"']]).*$) # non-symbol\n # The double dash may not be followed by other operator characters\n # (then it would be an operator, not a comment)\n )\n",
|
|
397
398
|
"name": "meta.import.haskell",
|
|
398
399
|
"patterns": [
|
|
399
400
|
{
|
|
@@ -562,7 +563,7 @@
|
|
|
562
563
|
"include": "#comment_like"
|
|
563
564
|
},
|
|
564
565
|
{
|
|
565
|
-
"begin": "(?x)\n(?<![\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']])\n(?:(=)|(\\|))\n(?![\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']])",
|
|
566
|
+
"begin": "(?x)\n (?<![\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']]) # non-symbol\n (?:(=)|(\\|))\n (?![\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']]) # non-symbol",
|
|
566
567
|
"beginCaptures": {
|
|
567
568
|
"1": {
|
|
568
569
|
"name": "keyword.operator.eq.haskell"
|
|
@@ -571,7 +572,7 @@
|
|
|
571
572
|
"name": "keyword.operator.pipe.haskell"
|
|
572
573
|
}
|
|
573
574
|
},
|
|
574
|
-
"end": "(?x)\n(?:\\G|^)\\s
|
|
575
|
+
"end": "(?x)\n (?:\\G|^)\\s* # Enforce starting condition to avoid catastrophic backtracking (https://github.com/JustusAdam/language-haskell/issues/161)\n (?: # Infix data constructor\n # First argument\n (?:\n # Simple type\n (?<!')\\b((?:[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'\\.])+)\n # Type inside balanced parentheses\n | ('? # Optional promotion tick\n (?<paren>\n \\( # Opening parenthesis\n (?:\n [^\\(\\)]* # Match non-parentheses\n | \\g<paren> # or recurse into further depth\n )*\n \\) # Closing parenthesis\n )\n )\n # Type inside balanced brackets\n | ('? # Optional promotion tick\n (?<brac>\n \\( # Opening bracket\n (?:\n [^\\[\\]]* # Match non-brackets\n | \\g<brac> # or recurse into further depth\n )*\n \\] # Closing bracket\n )\n )\n ) \n # Then either\n \\s*\n # - a symbolic infix constructor, or\n (?:(?<![\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']])(:[\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']]*)\n # - an alphabetic infix constructor\n | (`)([\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)(`)\n )\n\n ) # Otherwise, prefix data constructor, either:\n | # - an alphabetic data constructor e.g. \"Cons_123\"\n (?:(?<!')\\b([\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*))\n | # - a symbolic (prefix) data constructor\n (\\()\\s*(:[\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']]*)\\s*(\\))",
|
|
575
576
|
"endCaptures": {
|
|
576
577
|
"1": {
|
|
577
578
|
"patterns": [
|
|
@@ -676,7 +677,7 @@
|
|
|
676
677
|
"name": "punctuation.definition.string.end.haskell"
|
|
677
678
|
}
|
|
678
679
|
},
|
|
679
|
-
"match": "(?x)\n(?<![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])\n(')\n(?:\n[\\ -\\[\\]-~]\n| (\\\\(?:NUL|SOH|STX|ETX|EOT|ENQ|ACK|BEL|BS|HT|LF|VT|FF|CR|SO|SI|DLE\n|DC1|DC2|DC3|DC4|NAK|SYN|ETB|CAN|EM|SUB|ESC|FS|GS|RS\n|US|SP|DEL|[abfnrtv\\\\\\\"'\\\\&]))\n| (\\\\o[0-7]+)\n| (\\\\x[0-9A-Fa-f]+)\n| (\\\\\\^[A-Z@\\[\\]\\\\\\^_])\n)\n(')\n",
|
|
680
|
+
"match": "(?x)\n (?<![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])\n (')\n (?:\n [\\ -\\[\\]-~] # Basic Char\n | (\\\\(?:NUL|SOH|STX|ETX|EOT|ENQ|ACK|BEL|BS|HT|LF|VT|FF|CR|SO|SI|DLE\n |DC1|DC2|DC3|DC4|NAK|SYN|ETB|CAN|EM|SUB|ESC|FS|GS|RS\n |US|SP|DEL|[abfnrtv\\\\\\\"'\\\\&])) # Escapes\n | (\\\\o[0-7]+) # Octal Escapes\n | (\\\\x[0-9A-Fa-f]+) # Hexadecimal Escapes\n | (\\\\\\^[A-Z@\\[\\]\\\\\\^_]) # Control Chars\n )\n (')\n",
|
|
680
681
|
"name": "string.quoted.single.haskell"
|
|
681
682
|
},
|
|
682
683
|
"comma": {
|
|
@@ -777,7 +778,7 @@
|
|
|
777
778
|
"name": "keyword.operator.big-arrow.haskell"
|
|
778
779
|
}
|
|
779
780
|
},
|
|
780
|
-
"match": "(?x)\n(.*)\n(?<![\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']])\n(=>|⇒)\n(?![\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']])\n"
|
|
781
|
+
"match": "(?x)\n (.*)\n (?<![\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']])\n (=>|⇒)\n (?![\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']])\n"
|
|
781
782
|
},
|
|
782
783
|
"cpp": {
|
|
783
784
|
"captures": {
|
|
@@ -805,7 +806,7 @@
|
|
|
805
806
|
"name": "keyword.other.deriving.strategy.$3.haskell"
|
|
806
807
|
}
|
|
807
808
|
},
|
|
808
|
-
"end": "(?x)\n\n(?=\\}|;)\n|^(
|
|
809
|
+
"end": "(?x) # Detect end of deriving statement\n # Decreasing indentation\n (?=\\}|;) # Explicit indentation\n |^(?! # Implicit indentation: end match on newline *unless* the new line is either:\n \\1\\s+\\S # - more indented, or\n | \\s* # - starts with whitespace, followed by:\n (?: $ # - the end of the line (i.e. empty line), or\n |\\{-[^@] # - the start of a block comment, or\n |--+ # - the start of a single-line comment.\n (?![\\p{S}\\p{P}&&[^(),;\\[\\]{}`_\"']]).*$) # non-symbol\n # The double dash may not be followed by other operator characters\n # (then it would be an operator, not a comment)\n )",
|
|
809
810
|
"name": "meta.deriving.haskell",
|
|
810
811
|
"patterns": [
|
|
811
812
|
{
|
|
@@ -880,7 +881,7 @@
|
|
|
880
881
|
]
|
|
881
882
|
}
|
|
882
883
|
},
|
|
883
|
-
"match": "(?x)\n(deriving)(?:\\s+(stock|newtype|anyclass))?\\s+\n([\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)\n(\\s+(via)\\s+(.*)$)?\n",
|
|
884
|
+
"match": "(?x)\n (deriving)(?:\\s+(stock|newtype|anyclass))?\\s+\n ([\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)\n (\\s+(via)\\s+(.*)$)?\n",
|
|
884
885
|
"name": "meta.deriving.haskell"
|
|
885
886
|
},
|
|
886
887
|
{
|
|
@@ -909,7 +910,7 @@
|
|
|
909
910
|
"name": "keyword.other.pattern.haskell"
|
|
910
911
|
}
|
|
911
912
|
},
|
|
912
|
-
"end": "(?x)\n\n([\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)\n\n| (\\()\\s*(:[\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']]+)\\s*(\\))",
|
|
913
|
+
"end": "(?x)\n # Data constructor\n ([\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)\n # Prefix form of symbolic constructor\n | (\\()\\s*(:[\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']]+)\\s*(\\))",
|
|
913
914
|
"endCaptures": {
|
|
914
915
|
"1": {
|
|
915
916
|
"name": "constant.other.haskell"
|
|
@@ -937,7 +938,7 @@
|
|
|
937
938
|
"name": "keyword.other.type.haskell"
|
|
938
939
|
}
|
|
939
940
|
},
|
|
940
|
-
"end": "(?x)\n\n([\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)\n\n| (\\()\\s*([\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']]+)\\s*(\\))",
|
|
941
|
+
"end": "(?x)\n # Type name\n ([\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)\n # Prefix form of type operator\n | (\\()\\s*([\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']]+)\\s*(\\))",
|
|
941
942
|
"endCaptures": {
|
|
942
943
|
"1": {
|
|
943
944
|
"name": "storage.type.haskell"
|
|
@@ -987,7 +988,7 @@
|
|
|
987
988
|
"name": "keyword.other.$3.haskell"
|
|
988
989
|
}
|
|
989
990
|
},
|
|
990
|
-
"end": "(?x)
|
|
991
|
+
"end": "(?x) # Detect end of FFI block by decreasing indentation:\n (?=\\}|;) # Explicit indentation\n |^(?! # Implicit indentation: end match on newline *unless* the new line is either:\n \\1\\s+\\S # - more indented, or\n | \\s* # - starts with whitespace, followed by:\n (?: $ # - the end of the line (i.e. empty line), or\n |\\{-[^@] # - the start of a block comment, or\n |--+ # - the start of a single-line comment.\n (?![\\p{S}\\p{P}&&[^(),;\\[\\]{}`_\"']]).*$) # non-symbol\n # The double dash may not be followed by other operator characters\n # (then it would be an operator, not a comment)\n )\n",
|
|
991
992
|
"name": "meta.$3.foreign.haskell",
|
|
992
993
|
"patterns": [
|
|
993
994
|
{
|
|
@@ -1028,7 +1029,7 @@
|
|
|
1028
1029
|
"name": "entity.name.function.infix.haskell"
|
|
1029
1030
|
}
|
|
1030
1031
|
},
|
|
1031
|
-
"match": "(?x)\n\\b(?<!')(safe|unsafe|interruptible)\\b(?!')\n\\s*\n(\"(?:\\\\\"|[^\"])*\")?\n\\s*\n(?:\n(?:\\b(?<!'')([\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)\\b(?!'))\n|(?:\\(\\s*(?!--+\\))([\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']]+)\\s*\\))\n)\n"
|
|
1032
|
+
"match": "(?x)\n \\b(?<!')(safe|unsafe|interruptible)\\b(?!')\n \\s*\n (\"(?:\\\\\"|[^\"])*\")?\n \\s*\n (?:\n (?:\\b(?<!'')([\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)\\b(?!'))\n |(?:\\(\\s*(?!--+\\))([\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']]+)\\s*\\))\n )\n"
|
|
1032
1033
|
},
|
|
1033
1034
|
{
|
|
1034
1035
|
"captures": {
|
|
@@ -1044,7 +1045,7 @@
|
|
|
1044
1045
|
]
|
|
1045
1046
|
}
|
|
1046
1047
|
},
|
|
1047
|
-
"match": "(?x)\n\\b(?<!')(safe|unsafe|interruptible)\\b(?!')\n\\s*\n(\"(?:\\\\\"|[^\"])*\")?\n\\s*$\n"
|
|
1048
|
+
"match": "(?x)\n \\b(?<!')(safe|unsafe|interruptible)\\b(?!')\n \\s*\n (\"(?:\\\\\"|[^\"])*\")?\n \\s*$\n"
|
|
1048
1049
|
},
|
|
1049
1050
|
{
|
|
1050
1051
|
"captures": {
|
|
@@ -1057,7 +1058,7 @@
|
|
|
1057
1058
|
]
|
|
1058
1059
|
}
|
|
1059
1060
|
},
|
|
1060
|
-
"match": "(?x)\n\"(?:\\\\\"|[^\"])*\""
|
|
1061
|
+
"match": "(?x)\n \"(?:\\\\\"|[^\"])*\""
|
|
1061
1062
|
},
|
|
1062
1063
|
{
|
|
1063
1064
|
"captures": {
|
|
@@ -1074,7 +1075,7 @@
|
|
|
1074
1075
|
"name": "punctuation.paren.haskell"
|
|
1075
1076
|
}
|
|
1076
1077
|
},
|
|
1077
|
-
"match": "(?x)\n(?:\\b(?<!'')([\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)\\b(?!'))\n|(?:(\\()\\s*(?!--+\\))([\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']]+)\\s*(\\)))\n"
|
|
1078
|
+
"match": "(?x)\n (?:\\b(?<!'')([\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)\\b(?!'))\n |(?:(\\()\\s*(?!--+\\))([\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']]+)\\s*(\\)))\n"
|
|
1078
1079
|
}
|
|
1079
1080
|
]
|
|
1080
1081
|
},
|
|
@@ -1096,7 +1097,7 @@
|
|
|
1096
1097
|
}
|
|
1097
1098
|
},
|
|
1098
1099
|
"comment": "Floats are decimal or hexadecimal",
|
|
1099
|
-
"match": "(?x)\n\\b(?<!')\n(
|
|
1100
|
+
"match": "(?x)\n \\b(?<!')\n (?: # Decimal\n ([0-9][_0-9]*\\.[0-9][_0-9]*(?:[eE][-+]?[0-9][_0-9]*)?\n |[0-9][_0-9]*[eE][-+]?[0-9][_0-9]*\n )\n | # Hexadecimal\n (0[xX]_*[0-9a-fA-F][_0-9a-fA-F]*\\.[0-9a-fA-F][_0-9a-fA-F]*(?:[pP][-+]?[0-9][_0-9]*)?\n |0[xX]_*[0-9a-fA-F][_0-9a-fA-F]*[pP][-+]?[0-9][_0-9]*\n )\n )\\b(?!')"
|
|
1100
1101
|
},
|
|
1101
1102
|
"forall": {
|
|
1102
1103
|
"begin": "\\b(?<!')(forall|∀)\\b(?!')",
|
|
@@ -1127,7 +1128,7 @@
|
|
|
1127
1128
|
]
|
|
1128
1129
|
},
|
|
1129
1130
|
"fun_decl": {
|
|
1130
|
-
"begin": "(?x)^(\\s*)\n(?<fn>\n(?:\n[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*\\#*\n| \\(\\s*\n(?!--+\\))\n[\\p{S}\\p{P}&&[^(),:;\\[\\]`{}_\"']]\n[\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']]*\n\\s*\\)\n)\n(?:\\s*,\\s*\\g<fn>)?\n)\n\\s*(?<![\\p{S}\\p{P}&&[^\\),;\\]`}_\"']])(::|∷)(?![\\p{S}\\p{P}&&[^\\(,;\\[`{_\"']])\n",
|
|
1131
|
+
"begin": "(?x)^(\\s*)\n (?<fn>\n (?:\n [\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*\\#*\n | \\(\\s*\n (?!--+\\))\n [\\p{S}\\p{P}&&[^(),:;\\[\\]`{}_\"']]\n [\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']]*\n \\s*\\)\n )\n (?:\\s*,\\s*\\g<fn>)?\n )\n \\s*(?<![\\p{S}\\p{P}&&[^\\),;\\]`}_\"']])(::|∷)(?![\\p{S}\\p{P}&&[^\\(,;\\[`{_\"']])\n",
|
|
1131
1132
|
"beginCaptures": {
|
|
1132
1133
|
"2": {
|
|
1133
1134
|
"name": "entity.name.function.haskell",
|
|
@@ -1144,7 +1145,7 @@
|
|
|
1144
1145
|
"name": "keyword.operator.double-colon.haskell"
|
|
1145
1146
|
}
|
|
1146
1147
|
},
|
|
1147
|
-
"end": "(?x)\n
|
|
1148
|
+
"end": "(?x)\n # End of type annotation:\n # To the left of a reserved symbolic keyword such as = or <-\n (?= \n # non-symbolic character\n (?<![\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']])\n # symbolic keyword except (->)\n ((<-|←)|(=)|(-<|↢)|(-<<|⤛))\n # non-symbolic character\n ([(),;\\[\\]`{}_\"']|[^\\p{S}\\p{P}])\n )\n # Decreasing indentation:\n |(?=\\}|;) # Explicit indentation\n |^(?! # Implicit indentation: end match on newline *unless* the new line is either:\n \\1\\s+\\S # - more indented, or\n | \\s* # - starts with whitespace, followed by:\n (?: $ # - the end of the line (i.e. empty line), or\n |\\{-[^@] # - the start of a block comment, or\n |--+ # - the start of a single-line comment.\n (?![\\p{S}\\p{P}&&[^(),;\\[\\]{}`_\"']]).*$) # non-symbol\n # The double dash may not be followed by other operator characters\n # (then it would be an operator, not a comment)\n )\n",
|
|
1148
1149
|
"name": "meta.function.type-declaration.haskell",
|
|
1149
1150
|
"patterns": [
|
|
1150
1151
|
{
|
|
@@ -1155,7 +1156,7 @@
|
|
|
1155
1156
|
"gadt_constructor": {
|
|
1156
1157
|
"patterns": [
|
|
1157
1158
|
{
|
|
1158
|
-
"begin": "(?x)\n^(\\s*)\n(?:\n(\\b(?<!')[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)\n|(\\()\\s*(:[\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']]*)\\s*(\\))\n)",
|
|
1159
|
+
"begin": "(?x)\n ^(\\s*)\n (?:\n (\\b(?<!')[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)\n |(\\()\\s*(:[\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']]*)\\s*(\\))\n )",
|
|
1159
1160
|
"beginCaptures": {
|
|
1160
1161
|
"2": {
|
|
1161
1162
|
"name": "constant.other.haskell"
|
|
@@ -1170,7 +1171,7 @@
|
|
|
1170
1171
|
"name": "punctuation.paren.haskell"
|
|
1171
1172
|
}
|
|
1172
1173
|
},
|
|
1173
|
-
"end": "(?x)\n\n(?=\\b(?<!'')deriving\\b(?!'))\n\n|(?=\\}|;)\n|^(
|
|
1174
|
+
"end": "(?x)\n # GADT constructor ends\n (?=\\b(?<!'')deriving\\b(?!')) \n # Decreasing indentation\n |(?=\\}|;) # Explicit indentation\n |^(?! # Implicit indentation: end match on newline *unless* the new line is either:\n \\1\\s+\\S # - more indented, or\n | \\s* # - starts with whitespace, followed by:\n (?: $ # - the end of the line (i.e. empty line), or\n |\\{-[^@] # - the start of a block comment, or\n |--+ # - the start of a single-line comment.\n (?![\\p{S}\\p{P}&&[^(),;\\[\\]{}`_\"']]).*$) # non-symbol\n # The double dash may not be followed by other operator characters\n # (then it would be an operator, not a comment)\n )\n",
|
|
1174
1175
|
"patterns": [
|
|
1175
1176
|
{
|
|
1176
1177
|
"include": "#comment_like"
|
|
@@ -1190,7 +1191,7 @@
|
|
|
1190
1191
|
]
|
|
1191
1192
|
},
|
|
1192
1193
|
{
|
|
1193
|
-
"begin": "(?x)\n(\\b(?<!')[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}]*)\n|(\\()\\s*(:[\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']]*)\\s*(\\))",
|
|
1194
|
+
"begin": "(?x)\n (\\b(?<!')[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}]*) # named constructor\n |(\\()\\s*(:[\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']]*)\\s*(\\)) # prefix operator",
|
|
1194
1195
|
"beginCaptures": {
|
|
1195
1196
|
"1": {
|
|
1196
1197
|
"name": "constant.other.haskell"
|
|
@@ -1241,7 +1242,7 @@
|
|
|
1241
1242
|
}
|
|
1242
1243
|
},
|
|
1243
1244
|
"comment": "In case this regex seems overly general, note that Haskell permits the definition of new operators which can be nearly any string of punctuation characters, such as $%^&*.\n",
|
|
1244
|
-
"match": "(?x)\n((?:(?<!'')('')?[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'']*\\.)*)\n(\\#+|[\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']]+(?<!\\#))"
|
|
1245
|
+
"match": "(?x)\n ((?:(?<!'')('')?[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'']*\\.)*)\n (\\#+|[\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']]+(?<!\\#))"
|
|
1245
1246
|
},
|
|
1246
1247
|
{
|
|
1247
1248
|
"captures": {
|
|
@@ -1311,7 +1312,7 @@
|
|
|
1311
1312
|
"name": "constant.numeric.integral.binary.haskell"
|
|
1312
1313
|
}
|
|
1313
1314
|
},
|
|
1314
|
-
"match": "(?x)\n\\b(?<!')\n(?:\n([0-9][_0-9]*)\n| (0[xX]_*[0-9a-fA-F][_0-9a-fA-F]*)\n| (0[oO]_*[0-7][_0-7]*)\n| (0[bB]_*[01][_01]*)\n)\n\\b(?!')"
|
|
1315
|
+
"match": "(?x)\n \\b(?<!')\n (?:\n ([0-9][_0-9]*) # Decimal integer\n | (0[xX]_*[0-9a-fA-F][_0-9a-fA-F]*) # Hexadecimal integer\n | (0[oO]_*[0-7][_0-7]*) # Octal integer\n | (0[bB]_*[01][_01]*) # Binary integer\n )\n \\b(?!')"
|
|
1315
1316
|
},
|
|
1316
1317
|
"keyword": {
|
|
1317
1318
|
"captures": {
|
|
@@ -1325,7 +1326,7 @@
|
|
|
1325
1326
|
"match": "\\b(?<!')(?:(where|let|in|default)|(m?do|if|then|else|case|of|proc|rec))\\b(?!')"
|
|
1326
1327
|
},
|
|
1327
1328
|
"layout_herald": {
|
|
1328
|
-
"begin": "(?x)\n(?<!')\\b(?:(where|let|m?do)|(of))\n\\s*(\\{)(?!-)",
|
|
1329
|
+
"begin": "(?x)\n (?<!')\\b(?:(where|let|m?do)|(of))\n \\s*(\\{)(?!-)",
|
|
1329
1330
|
"beginCaptures": {
|
|
1330
1331
|
"1": {
|
|
1331
1332
|
"name": "keyword.other.$1.haskell"
|
|
@@ -1455,7 +1456,7 @@
|
|
|
1455
1456
|
]
|
|
1456
1457
|
}
|
|
1457
1458
|
},
|
|
1458
|
-
"match": "(?x)\n(?<![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}\\p{S}\\p{P}&&[^(,;\\[`{]])\n(\\#)\n(?:\n\n(\"(?:\\\\\"|[^\"])*\")\n\n|[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'\\.]+\n)",
|
|
1459
|
+
"match": "(?x) \n (?<![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}\\p{S}\\p{P}&&[^(,;\\[`{]]) # Disallow closing characters\n (\\#)\n (?:\n # String\n (\"(?:\\\\\"|[^\"])*\")\n # Sequence of allowed label identifiers\n |[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'\\.]+\n )",
|
|
1459
1460
|
"name": "entity.name.label.haskell"
|
|
1460
1461
|
}
|
|
1461
1462
|
]
|
|
@@ -1475,7 +1476,7 @@
|
|
|
1475
1476
|
"end": "(?=#-\\})",
|
|
1476
1477
|
"patterns": [
|
|
1477
1478
|
{
|
|
1478
|
-
"match": "(?x)\n(?:No)?\n(?:AutoDeriveTypeable|DatatypeContexts|DoRec|IncoherentInstances|MonadFailDesugaring|MonoPatBinds|NullaryTypeClasses|OverlappingInstances|PatternSignatures|RecordPuns|RelaxedPolyRec)",
|
|
1479
|
+
"match": "(?x)\n (?:No)?\n (?:AutoDeriveTypeable|DatatypeContexts|DoRec|IncoherentInstances|MonadFailDesugaring|MonoPatBinds|NullaryTypeClasses|OverlappingInstances|PatternSignatures|RecordPuns|RelaxedPolyRec)",
|
|
1479
1480
|
"name": "invalid.deprecated"
|
|
1480
1481
|
},
|
|
1481
1482
|
{
|
|
@@ -1484,7 +1485,7 @@
|
|
|
1484
1485
|
"name": "keyword.other.preprocessor.extension.haskell"
|
|
1485
1486
|
}
|
|
1486
1487
|
},
|
|
1487
|
-
"match": "(?x)\n(\n(?:No)?\n(?:AllowAmbiguousTypes|AlternativeLayoutRule|AlternativeLayoutRuleTransitional|Arrows|BangPatterns|BinaryLiterals|CApiFFI|CPP|CUSKs|ConstrainedClassMethods|ConstraintKinds|DataKinds|DefaultSignatures|DeriveAnyClass|DeriveDataTypeable|DeriveFoldable|DeriveFunctor|DeriveGeneric|DeriveLift|DeriveTraversable|DerivingStrategies|DerivingVia|DisambiguateRecordFields|DoAndIfThenElse|BlockArguments|DuplicateRecordFields|EmptyCase|EmptyDataDecls|EmptyDataDeriving|ExistentialQuantification|ExplicitForAll|ExplicitNamespaces|ExtendedDefaultRules|FlexibleContexts|FlexibleInstances|ForeignFunctionInterface|FunctionalDependencies|GADTSyntax|GADTs|GHCForeignImportPrim|Generali(?:s|z)edNewtypeDeriving|ImplicitParams|ImplicitPrelude|ImportQualifiedPost|ImpredicativeTypes|TypeFamilyDependencies|InstanceSigs|ApplicativeDo|InterruptibleFFI|JavaScriptFFI|KindSignatures|LambdaCase|LiberalTypeSynonyms|MagicHash|MonadComprehensions|MonoLocalBinds|MonomorphismRestriction|MultiParamTypeClasses|MultiWayIf|NumericUnderscores|NPlusKPatterns|NamedFieldPuns|NamedWildCards|NegativeLiterals|HexFloatLiterals|NondecreasingIndentation|NumDecimals|OverloadedLabels|OverloadedLists|OverloadedStrings|PackageImports|ParallelArrays|ParallelListComp|PartialTypeSignatures|PatternGuards|PatternSynonyms|PolyKinds|PolymorphicComponents|QuantifiedConstraints|PostfixOperators|QuasiQuotes|Rank2Types|RankNTypes|RebindableSyntax|RecordWildCards|RecursiveDo|RelaxedLayout|RoleAnnotations|ScopedTypeVariables|StandaloneDeriving|StarIsType|StaticPointers|Strict|StrictData|TemplateHaskell|TemplateHaskellQuotes|StandaloneKindSignatures|TraditionalRecordSyntax|TransformListComp|TupleSections|TypeApplications|TypeInType|TypeFamilies|TypeOperators|TypeSynonymInstances|UnboxedTuples|UnboxedSums|UndecidableInstances|UndecidableSuperClasses|UnicodeSyntax|UnliftedFFITypes|UnliftedNewtypes|ViewPatterns)\n)"
|
|
1488
|
+
"match": "(?x)\n (\n (?:No)?\n (?:AllowAmbiguousTypes|AlternativeLayoutRule|AlternativeLayoutRuleTransitional|Arrows|BangPatterns|BinaryLiterals|CApiFFI|CPP|CUSKs|ConstrainedClassMethods|ConstraintKinds|DataKinds|DefaultSignatures|DeriveAnyClass|DeriveDataTypeable|DeriveFoldable|DeriveFunctor|DeriveGeneric|DeriveLift|DeriveTraversable|DerivingStrategies|DerivingVia|DisambiguateRecordFields|DoAndIfThenElse|BlockArguments|DuplicateRecordFields|EmptyCase|EmptyDataDecls|EmptyDataDeriving|ExistentialQuantification|ExplicitForAll|ExplicitNamespaces|ExtendedDefaultRules|FlexibleContexts|FlexibleInstances|ForeignFunctionInterface|FunctionalDependencies|GADTSyntax|GADTs|GHCForeignImportPrim|Generali(?:s|z)edNewtypeDeriving|ImplicitParams|ImplicitPrelude|ImportQualifiedPost|ImpredicativeTypes|TypeFamilyDependencies|InstanceSigs|ApplicativeDo|InterruptibleFFI|JavaScriptFFI|KindSignatures|LambdaCase|LiberalTypeSynonyms|MagicHash|MonadComprehensions|MonoLocalBinds|MonomorphismRestriction|MultiParamTypeClasses|MultiWayIf|NumericUnderscores|NPlusKPatterns|NamedFieldPuns|NamedWildCards|NegativeLiterals|HexFloatLiterals|NondecreasingIndentation|NumDecimals|OverloadedLabels|OverloadedLists|OverloadedStrings|PackageImports|ParallelArrays|ParallelListComp|PartialTypeSignatures|PatternGuards|PatternSynonyms|PolyKinds|PolymorphicComponents|QuantifiedConstraints|PostfixOperators|QuasiQuotes|Rank2Types|RankNTypes|RebindableSyntax|RecordWildCards|RecursiveDo|RelaxedLayout|RoleAnnotations|ScopedTypeVariables|StandaloneDeriving|StarIsType|StaticPointers|Strict|StrictData|TemplateHaskell|TemplateHaskellQuotes|StandaloneKindSignatures|TraditionalRecordSyntax|TransformListComp|TupleSections|TypeApplications|TypeInType|TypeFamilies|TypeOperators|TypeSynonymInstances|UnboxedTuples|UnboxedSums|UndecidableInstances|UndecidableSuperClasses|UnicodeSyntax|UnliftedFFITypes|UnliftedNewtypes|ViewPatterns)\n )"
|
|
1488
1489
|
},
|
|
1489
1490
|
{
|
|
1490
1491
|
"include": "#comma"
|
|
@@ -1492,7 +1493,7 @@
|
|
|
1492
1493
|
]
|
|
1493
1494
|
},
|
|
1494
1495
|
{
|
|
1495
|
-
"begin": "(?xi)\n\\b(?<!')(SPECIALI(?:S|Z)E)\n(?:\n\\s*( \\[ [^\\[\\]]* \\])?\\s*\n|\\s+\n)\n(instance)\\b(?!')",
|
|
1496
|
+
"begin": "(?xi)\n \\b(?<!')(SPECIALI(?:S|Z)E)\n (?:\n \\s*( \\[ [^\\[\\]]* \\])?\\s*\n |\\s+\n )\n (instance)\\b(?!')",
|
|
1496
1497
|
"beginCaptures": {
|
|
1497
1498
|
"1": {
|
|
1498
1499
|
"name": "keyword.other.preprocessor.pragma.haskell"
|
|
@@ -1516,7 +1517,7 @@
|
|
|
1516
1517
|
]
|
|
1517
1518
|
},
|
|
1518
1519
|
{
|
|
1519
|
-
"begin": "(?xi)\n\\b(?<!')(SPECIALI(?:S|Z)E)\\b(?!')\n(?:\\s+(INLINE)\\b(?!'))?\n(?:\\s*(\\[ [^\\[\\]]* \\])?)\n\\s*",
|
|
1520
|
+
"begin": "(?xi)\n \\b(?<!')(SPECIALI(?:S|Z)E)\\b(?!')\n (?:\\s+(INLINE)\\b(?!'))?\n (?:\\s*(\\[ [^\\[\\]]* \\])?)\n \\s*",
|
|
1520
1521
|
"beginCaptures": {
|
|
1521
1522
|
"1": {
|
|
1522
1523
|
"name": "keyword.other.preprocessor.pragma.haskell"
|
|
@@ -1540,7 +1541,7 @@
|
|
|
1540
1541
|
]
|
|
1541
1542
|
},
|
|
1542
1543
|
{
|
|
1543
|
-
"match": "(?xi) \\b(?<!')\n(LANGUAGE|OPTIONS_GHC|INCLUDE\n|MINIMAL|UNPACK|OVERLAPS|INCOHERENT\n|NOUNPACK|SOURCE|OVERLAPPING|OVERLAPPABLE|INLINE\n|NOINLINE|INLINE?ABLE|CONLIKE|LINE|COLUMN|RULES\n|COMPLETE)\\b(?!')",
|
|
1544
|
+
"match": "(?xi) \\b(?<!')\n (LANGUAGE|OPTIONS_GHC|INCLUDE\n |MINIMAL|UNPACK|OVERLAPS|INCOHERENT\n |NOUNPACK|SOURCE|OVERLAPPING|OVERLAPPABLE|INLINE\n |NOINLINE|INLINE?ABLE|CONLIKE|LINE|COLUMN|RULES\n |COMPLETE)\\b(?!')",
|
|
1544
1545
|
"name": "keyword.other.preprocessor.haskell"
|
|
1545
1546
|
},
|
|
1546
1547
|
{
|
|
@@ -1574,7 +1575,7 @@
|
|
|
1574
1575
|
}
|
|
1575
1576
|
},
|
|
1576
1577
|
"comment": "An operator cannot be composed entirely of '-' characters; instead, it should be matched as a comment.\n",
|
|
1577
|
-
"match": "(?x)\n(\\()\\s*(?!(?:--+|\\.\\.)\\))(\\#+|[\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']]+(?<!\\#))\\s*(\\))"
|
|
1578
|
+
"match": "(?x)\n (\\()\\s*(?!(?:--+|\\.\\.)\\))(\\#+|[\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']]+(?<!\\#))\\s*(\\))"
|
|
1578
1579
|
}
|
|
1579
1580
|
]
|
|
1580
1581
|
},
|
|
@@ -1585,7 +1586,7 @@
|
|
|
1585
1586
|
"quasi_quote": {
|
|
1586
1587
|
"patterns": [
|
|
1587
1588
|
{
|
|
1588
|
-
"begin": "(?x)\n(\\[)\n(e|d|p)?\n(\\|\\|?)",
|
|
1589
|
+
"begin": "(?x)\n (\\[)\n (e|d|p)?\n (\\|\\|?)",
|
|
1589
1590
|
"beginCaptures": {
|
|
1590
1591
|
"1": {
|
|
1591
1592
|
"name": "keyword.operator.quasi-quotation.begin.haskell"
|
|
@@ -1611,7 +1612,7 @@
|
|
|
1611
1612
|
]
|
|
1612
1613
|
},
|
|
1613
1614
|
{
|
|
1614
|
-
"begin": "(?x)\n(\\[)\n(t)\n(\\|\\|?)",
|
|
1615
|
+
"begin": "(?x)\n (\\[)\n (t)\n (\\|\\|?)",
|
|
1615
1616
|
"beginCaptures": {
|
|
1616
1617
|
"1": {
|
|
1617
1618
|
"name": "keyword.operator.quasi-quotation.begin.haskell"
|
|
@@ -1637,7 +1638,7 @@
|
|
|
1637
1638
|
]
|
|
1638
1639
|
},
|
|
1639
1640
|
{
|
|
1640
|
-
"begin": "(?x)\n(\\[)\n(?:(\\$\\$)|(\\$))?\n((?:[^\\s\\p{S}\\p{P}]|[\\.'_])*)\n(\\|\\|?)",
|
|
1641
|
+
"begin": "(?x)\n (\\[)\n (?:(\\$\\$)|(\\$))?\n ((?:[^\\s\\p{S}\\p{P}]|[\\.'_])*)\n (\\|\\|?)",
|
|
1641
1642
|
"beginCaptures": {
|
|
1642
1643
|
"1": {
|
|
1643
1644
|
"name": "keyword.operator.quasi-quotation.begin.haskell"
|
|
@@ -1717,7 +1718,7 @@
|
|
|
1717
1718
|
]
|
|
1718
1719
|
},
|
|
1719
1720
|
"record_decl_field": {
|
|
1720
|
-
"begin": "(?x)\n(?:([\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)\n|(\\()\\s*([\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']]+)\\s*(\\))\n)\n",
|
|
1721
|
+
"begin": "(?x)\n (?:([\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)\n |(\\()\\s*([\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']]+)\\s*(\\))\n )\n",
|
|
1721
1722
|
"beginCaptures": {
|
|
1722
1723
|
"1": {
|
|
1723
1724
|
"name": "variable.other.member.definition.haskell"
|
|
@@ -1759,7 +1760,7 @@
|
|
|
1759
1760
|
"record_field": {
|
|
1760
1761
|
"patterns": [
|
|
1761
1762
|
{
|
|
1762
|
-
"begin": "(?x)\n(?:([\\p{Ll}\\p{Lu}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}\\.']*)\n|(\\()\\s*([\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']]+)\\s*(\\))\n)\n",
|
|
1763
|
+
"begin": "(?x)\n (?:([\\p{Ll}\\p{Lu}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}\\.']*)\n |(\\()\\s*([\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']]+)\\s*(\\))\n )\n",
|
|
1763
1764
|
"beginCaptures": {
|
|
1764
1765
|
"1": {
|
|
1765
1766
|
"name": "variable.other.member.haskell",
|
|
@@ -1808,7 +1809,7 @@
|
|
|
1808
1809
|
"name": "variable.other.member.wildcard.haskell"
|
|
1809
1810
|
}
|
|
1810
1811
|
},
|
|
1811
|
-
"match": "(?x)\n(?<![\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']])\n(\\.\\.)\n(?![\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']])"
|
|
1812
|
+
"match": "(?x)\n (?<![\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']])\n (\\.\\.)\n (?![\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']])"
|
|
1812
1813
|
},
|
|
1813
1814
|
"reserved_symbol": {
|
|
1814
1815
|
"patterns": [
|
|
@@ -1851,7 +1852,7 @@
|
|
|
1851
1852
|
"name": "keyword.operator.arrow.left.tail.double.haskell"
|
|
1852
1853
|
}
|
|
1853
1854
|
},
|
|
1854
|
-
"match": "(?x)\n(?<![\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"'']])\n(?:\n(\\.\\.)\n|(:)\n|(=)\n|(\\\\)\n|(\\|)\n|(<-|←)\n|(->|→)\n|(-<|↢)\n|(-<<|⤛)\n|(>-|⤚)\n|(>>-|⤜)\n|(∀)\n)\n(?![\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"'']])"
|
|
1855
|
+
"match": "(?x)\n (?<![\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"'']])\n (?:\n (\\.\\.)\n |(:)\n |(=)\n |(\\\\) # λ not reserved as it is a letter\n |(\\|)\n |(<-|←)\n |(->|→)\n |(-<|↢)\n |(-<<|⤛)\n |(>-|⤚)\n |(>>-|⤜)\n |(∀)\n )\n (?![\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"'']])"
|
|
1855
1856
|
},
|
|
1856
1857
|
{
|
|
1857
1858
|
"captures": {
|
|
@@ -1859,7 +1860,7 @@
|
|
|
1859
1860
|
"name": "keyword.operator.postfix.hash.haskell"
|
|
1860
1861
|
}
|
|
1861
1862
|
},
|
|
1862
|
-
"match": "(?x)\n(?<=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}\\p{S}\\p{P}&&[^\\#,;\\[`{]])\n(\\#+)\n(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}\\p{S}\\p{P}&&[^),;\\]`}]])"
|
|
1863
|
+
"match": "(?x)\n (?<=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}\\p{S}\\p{P}&&[^\\#,;\\[`{]]) # Require closing characters\n (\\#+)\n (?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}\\p{S}\\p{P}&&[^),;\\]`}]]) # Disallow opening character"
|
|
1863
1864
|
},
|
|
1864
1865
|
{
|
|
1865
1866
|
"captures": {
|
|
@@ -1867,7 +1868,7 @@
|
|
|
1867
1868
|
"name": "keyword.operator.infix.tight.at.haskell"
|
|
1868
1869
|
}
|
|
1869
1870
|
},
|
|
1870
|
-
"match": "(?x)\n(?<=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}\\)\\}\\]])\n(@)\n(?=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}\\(\\[\\{])"
|
|
1871
|
+
"match": "(?x)\n (?<=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}\\)\\}\\]]) # Require closing characters\n (@)\n (?=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}\\(\\[\\{]) # Require opening character"
|
|
1871
1872
|
},
|
|
1872
1873
|
{
|
|
1873
1874
|
"captures": {
|
|
@@ -1887,7 +1888,7 @@
|
|
|
1887
1888
|
"name": "keyword.operator.prefix.double-dollar.haskell"
|
|
1888
1889
|
}
|
|
1889
1890
|
},
|
|
1890
|
-
"match": "(?x)\n(?<![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}\\p{S}\\p{P}&&[^(,;\\[`{]])\n(?:(~)|(!)|(-)|(\\$)|(\\$\\$))\n(?=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}\\(\\{\\[])"
|
|
1891
|
+
"match": "(?x)\n (?<![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}\\p{S}\\p{P}&&[^(,;\\[`{]]) # Disallow closing characters\n (?:(~)|(!)|(-)|(\\$)|(\\$\\$))\n (?=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}\\(\\{\\[]) # Require opening character (non operator symbol)"
|
|
1891
1892
|
}
|
|
1892
1893
|
]
|
|
1893
1894
|
},
|
|
@@ -1903,7 +1904,7 @@
|
|
|
1903
1904
|
"name": "keyword.other.role.haskell"
|
|
1904
1905
|
}
|
|
1905
1906
|
},
|
|
1906
|
-
"end": "(?x)
|
|
1907
|
+
"end": "(?x) # Detect end of block by decreasing indentation:\n (?=\\}|;) # Explicit indentation\n |^(?! # Implicit indentation: end match on newline *unless* the new line is either:\n \\1\\s+\\S # - more indented, or\n | \\s* # - starts with whitespace, followed by:\n (?: $ # - the end of the line (i.e. empty line), or\n |\\{-[^@] # - the start of a block comment, or\n |--+ # - the start of a single-line comment.\n (?![\\p{S}\\p{P}&&[^(),;\\[\\]{}`_\"']]).*$) # non-symbol\n # The double dash may not be followed by other operator characters\n # (then it would be an operator, not a comment)\n )",
|
|
1907
1908
|
"name": "meta.role-annotation.haskell",
|
|
1908
1909
|
"patterns": [
|
|
1909
1910
|
{
|
|
@@ -1933,7 +1934,7 @@
|
|
|
1933
1934
|
"name": "keyword.operator.double-colon.haskell"
|
|
1934
1935
|
}
|
|
1935
1936
|
},
|
|
1936
|
-
"end": "(?x)\n
|
|
1937
|
+
"end": "(?x)\n # End type annotation when seeing one of:\n (?=\n \\#?\\) # closing parenthesis\n |\\] # closing bracket\n |, # comma\n |(?<!')\\b(in|then|else|of)\\b(?!') # keyword\n | # symbolic keyword except (->)\n (?<![\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']])\n (?:\n (\\\\|λ)\n |(<-|←)\n |(=)\n |(-<|↢)\n |(-<<|⤛)\n )\n ([(),;\\[\\]`{}_\"']|[^\\p{S}\\p{P}])\n |(\\#|@)-\\} # End of annotation block (LiquidHaskell or pragma)\n # Decreasing indentation:\n | (?=\\}|;) # Explicit indentation\n |^(?! # Implicit indentation: end match on newline *unless* the new line is either:\n \\1\\s*\\S # - equally indented, or\n | \\s* # - starts with whitespace, followed by:\n (?: $ # - the end of the line (i.e. empty line), or\n |\\{-[^@] # - the start of a block comment, or\n |--+ # - the start of a single-line comment.\n (?![\\p{S}\\p{P}&&[^(),;\\[\\]{}`_\"']]).*$) # non-symbol\n # The double dash may not be followed by other operator characters\n # (then it would be an operator, not a comment)\n )\n )",
|
|
1937
1938
|
"name": "meta.type-declaration.haskell",
|
|
1938
1939
|
"patterns": [
|
|
1939
1940
|
{
|
|
@@ -1948,7 +1949,7 @@
|
|
|
1948
1949
|
"name": "keyword.operator.double-colon.haskell"
|
|
1949
1950
|
}
|
|
1950
1951
|
},
|
|
1951
|
-
"end": "(?x)\n
|
|
1952
|
+
"end": "(?x)\n # End type annotation when seeing one of:\n (?=\n \\#?\\) # closing parenthesis\n |\\] # closing bracket\n |, # comma\n |\\b(?<!')(in|then|else|of)\\b(?!') # keyword\n |(\\#|@)-\\} # End of annotation block (LiquidHaskell or pragma)\n | # symbolic keyword except (->)\n (?<![\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']])\n (?:\n (\\\\|λ)\n |(<-|←)\n |(=)\n |(-<|↢)\n |(-<<|⤛)\n )\n ([(),;\\[\\]`{}_\"']|[^\\p{S}\\p{P}])\n # Indentation \n |(?=\\}|;) # Explicit indentation\n |$ # End of line\n )",
|
|
1952
1953
|
"patterns": [
|
|
1953
1954
|
{
|
|
1954
1955
|
"include": "#type_signature"
|
|
@@ -2106,7 +2107,7 @@
|
|
|
2106
2107
|
"name": "storage.type.haskell"
|
|
2107
2108
|
}
|
|
2108
2109
|
},
|
|
2109
|
-
"match": "(?x)\n\n(')?\n\n((?:\\b[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*\\.)*)\n\n(\\b[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)"
|
|
2110
|
+
"match": "(?x)\n # Optional promotion tick\n (')?\n # Optional qualified name\n ((?:\\b[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*\\.)*)\n # Type constructor proper\n (\\b[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)"
|
|
2110
2111
|
},
|
|
2111
2112
|
{
|
|
2112
2113
|
"captures": {
|
|
@@ -2126,7 +2127,7 @@
|
|
|
2126
2127
|
"name": "punctuation.paren.haskell"
|
|
2127
2128
|
}
|
|
2128
2129
|
},
|
|
2129
|
-
"match": "(?x)\n\n(')?\n\n(\\()\\s*\n\n((?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*\\.)*)\n\n([\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']]+)\n\n\\s*(\\))"
|
|
2130
|
+
"match": "(?x)\n # Optional promotion tick\n (')?\n # Opening parenthesis\n (\\()\\s*\n # Optional qualified name\n ((?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*\\.)*)\n # Type operator proper\n ([\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']]+)\n # Closing parenthesis\n \\s*(\\))"
|
|
2130
2131
|
}
|
|
2131
2132
|
]
|
|
2132
2133
|
},
|
|
@@ -2144,7 +2145,7 @@
|
|
|
2144
2145
|
"name": "storage.type.operator.infix.haskell"
|
|
2145
2146
|
}
|
|
2146
2147
|
},
|
|
2147
|
-
"match": "(?x)\n\n(?:(?<!')('))?\n\n((?:\\b[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*\\.)*)\n\n(?![#@]?-})(\\#+|[\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']]+(?<!\\#))\n"
|
|
2148
|
+
"match": "(?x)\n # Optional promotion tick\n (?:(?<!')('))?\n # Optional qualified name\n ((?:\\b[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*\\.)*)\n # Type operator proper\n (?![#@]?-})(\\#+|[\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']]+(?<!\\#))\n #((?:[\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']&&[^#@]]|[@#](?!-}))+)"
|
|
2148
2149
|
},
|
|
2149
2150
|
{
|
|
2150
2151
|
"captures": {
|
|
@@ -2164,7 +2165,7 @@
|
|
|
2164
2165
|
"name": "punctuation.backtick.haskell"
|
|
2165
2166
|
}
|
|
2166
2167
|
},
|
|
2167
|
-
"match": "(?x)\n\n(')?\n\n(\\`)\n\n((?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*\\.)*)\n\n([\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)\n\n(`)"
|
|
2168
|
+
"match": "(?x)\n # Optional promotion tick\n (')?\n # Opening backtick\n (\\`)\n # Optional qualified name\n ((?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*\\.)*)\n # Type constructor proper\n ([\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)\n # Closing backtick\n (`)"
|
|
2168
2169
|
}
|
|
2169
2170
|
]
|
|
2170
2171
|
},
|
|
@@ -2395,7 +2396,7 @@
|
|
|
2395
2396
|
"where": {
|
|
2396
2397
|
"patterns": [
|
|
2397
2398
|
{
|
|
2398
|
-
"begin": "(?x)\n(?<!')\\b(where)\n\\s*(\\{)(?!-)",
|
|
2399
|
+
"begin": "(?x)\n (?<!')\\b(where)\n \\s*(\\{)(?!-)",
|
|
2399
2400
|
"beginCaptures": {
|
|
2400
2401
|
"1": {
|
|
2401
2402
|
"name": "keyword.other.where.haskell"
|
|
@@ -2427,5 +2428,6 @@
|
|
|
2427
2428
|
]
|
|
2428
2429
|
}
|
|
2429
2430
|
},
|
|
2430
|
-
"scopeName": "source.haskell"
|
|
2431
|
+
"scopeName": "source.haskell",
|
|
2432
|
+
"uuid": "5C034675-1F6D-497E-8073-369D37E2FD7D"
|
|
2431
2433
|
}
|
package/grammars/haxe.json
CHANGED
|
@@ -595,7 +595,7 @@
|
|
|
595
595
|
"name": "constant.numeric.suffix.hx"
|
|
596
596
|
}
|
|
597
597
|
},
|
|
598
|
-
"match": "(
|
|
598
|
+
"match": "(?<!\\$)(?:(?:\\b[0-9][0-9_]*(\\.)[0-9_]+[eE][+-]?[0-9_]+([fiu][0-9][0-9_]*)?\\b)|(?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9_]+([fiu][0-9][0-9_]*)?\\b)|(?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9_]+([fiu][0-9][0-9_]*)?\\b)|(?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*([fiu][0-9][0-9_]*)?\\b)|(?:\\b[0-9][0-9_]*(\\.)[0-9_]+([fiu][0-9][0-9_]*)?\\b)|(?:\\b[0-9][0-9_]*(\\.)(?!\\.)(?:\\B|([fiu][0-9][0-9_]*)\\b))|(?:\\B(\\.)[0-9][0-9_]*([fiu][0-9][0-9_]*)?\\b)|(?:\\b[0-9][0-9_]*([fiu][0-9][0-9_]*)?\\b))(?!\\$)"
|
|
599
599
|
}
|
|
600
600
|
]
|
|
601
601
|
},
|