github-linguist 5.0.5 → 5.0.6

Sign up to get free protection for your applications and to get access to all the features.
Files changed (50) hide show
  1. checksums.yaml +4 -4
  2. data/grammars/hint.haskell.json +11 -5
  3. data/grammars/hint.message.haskell.json +11 -5
  4. data/grammars/hint.type.haskell.json +11 -5
  5. data/grammars/source.SASLog.json +1 -1
  6. data/grammars/source.clarion.json +1 -1
  7. data/grammars/source.clean.json +4 -4
  8. data/grammars/source.click.json +19 -8
  9. data/grammars/source.clojure.json +8 -6
  10. data/grammars/source.cobol.json +16 -23
  11. data/grammars/source.coffee.json +1 -1
  12. data/grammars/source.csound-document.json +0 -5
  13. data/grammars/source.csound-score.json +6 -2
  14. data/grammars/source.csound.json +77 -14
  15. data/grammars/source.css.less.json +1 -1
  16. data/grammars/source.ditroff.desc.json +379 -0
  17. data/grammars/source.ditroff.json +545 -0
  18. data/grammars/source.elixir.json +44 -2
  19. data/grammars/source.fsharp.json +20 -93
  20. data/grammars/source.haskell.json +13 -6
  21. data/grammars/source.hlsl.json +217 -0
  22. data/grammars/source.js.json +34 -16
  23. data/grammars/source.julia.json +4 -4
  24. data/grammars/source.meson.json +167 -0
  25. data/grammars/source.p4.json +117 -0
  26. data/grammars/source.perl6fe.json +101 -18
  27. data/grammars/source.python.json +7 -7
  28. data/grammars/source.quoting.perl6fe.json +101 -0
  29. data/grammars/source.regexp.extended.json +9 -5
  30. data/grammars/source.regexp.json +12 -21
  31. data/grammars/source.rust.json +33 -3
  32. data/grammars/source.sas.json +2 -2
  33. data/grammars/source.shaderlab.json +174 -0
  34. data/grammars/source.terraform.json +196 -0
  35. data/grammars/source.turing.json +1 -1
  36. data/grammars/source.viml.json +1 -1
  37. data/grammars/source.yaml.json +3 -1
  38. data/grammars/text.html.php.blade.json +10 -7
  39. data/grammars/text.restructuredtext.json +57 -6
  40. data/grammars/text.roff.json +1 -1
  41. data/grammars/text.slim.json +1 -1
  42. data/grammars/text.tex.latex.haskell.json +11 -5
  43. data/lib/linguist/documentation.yml +1 -1
  44. data/lib/linguist/heuristics.rb +8 -0
  45. data/lib/linguist/languages.json +1 -1
  46. data/lib/linguist/languages.yml +20 -2
  47. data/lib/linguist/samples.json +1253 -68
  48. data/lib/linguist/version.rb +1 -1
  49. metadata +9 -3
  50. data/grammars/source.regexp.comment.json +0 -11
@@ -1350,6 +1350,35 @@
1350
1350
  }
1351
1351
  ]
1352
1352
  },
1353
+ {
1354
+ "begin": "(sql|SQL|Sql)\\s*(`)",
1355
+ "beginCaptures": {
1356
+ "1": {
1357
+ "name": "entity.name.function.js"
1358
+ },
1359
+ "2": {
1360
+ "name": "punctuation.definition.string.begin.js"
1361
+ }
1362
+ },
1363
+ "end": "`",
1364
+ "endCaptures": {
1365
+ "0": {
1366
+ "name": "punctuation.definition.string.end.js"
1367
+ }
1368
+ },
1369
+ "name": "string.quoted.template.sql.js",
1370
+ "patterns": [
1371
+ {
1372
+ "include": "#string_escapes"
1373
+ },
1374
+ {
1375
+ "include": "#interpolated_js"
1376
+ },
1377
+ {
1378
+ "include": "source.sql"
1379
+ }
1380
+ ]
1381
+ },
1353
1382
  {
1354
1383
  "begin": "`",
1355
1384
  "beginCaptures": {
@@ -1843,25 +1872,14 @@
1843
1872
  "name": "comment.block.js"
1844
1873
  },
1845
1874
  {
1846
- "begin": "(^[ \\t]+)?(?=//)",
1875
+ "begin": "//",
1847
1876
  "beginCaptures": {
1848
- "1": {
1849
- "name": "punctuation.whitespace.comment.leading.js"
1877
+ "0": {
1878
+ "name": "punctuation.definition.comment.js"
1850
1879
  }
1851
1880
  },
1852
- "end": "(?!\\G)",
1853
- "patterns": [
1854
- {
1855
- "begin": "//",
1856
- "beginCaptures": {
1857
- "0": {
1858
- "name": "punctuation.definition.comment.js"
1859
- }
1860
- },
1861
- "end": "\\n",
1862
- "name": "comment.line.double-slash.js"
1863
- }
1864
- ]
1881
+ "end": "$",
1882
+ "name": "comment.line.double-slash.js"
1865
1883
  }
1866
1884
  ]
1867
1885
  },
@@ -149,18 +149,18 @@
149
149
  "name": "support.type.julia"
150
150
  }
151
151
  },
152
- "match": "\\b(function|stagedfunction|macro)\\s+([\\w.!]+)({[^}]*})?\\("
152
+ "match": "\\b(function|macro)\\s+([\\w.!]+)({[^}]*})?\\("
153
153
  }
154
154
  ]
155
155
  },
156
156
  "keyword": {
157
157
  "patterns": [
158
158
  {
159
- "match": "\\b(?:function|stagedfunction|type|immutable|macro|quote|abstract|bitstype|typealias|module|baremodule|new)\\b",
159
+ "match": "\\b(?:function|(mutable\\s+)?struct|macro|quote|((primitive|abstract)\\s+)?type|immutable|module|baremodule|new|where)\\b",
160
160
  "name": "keyword.other.julia"
161
161
  },
162
162
  {
163
- "match": "\\b(?:if|else|elseif|while|for|in|begin|let|end|do|try|catch|finally|return|break|continue)\\b",
163
+ "match": "\\b(?:if|else|elseif|while|for|in|isa|begin|let|end|do|try|catch|finally|return|break|continue)\\b",
164
164
  "name": "keyword.control.julia"
165
165
  },
166
166
  {
@@ -396,7 +396,7 @@
396
396
  "name": "punctuation.separator.inheritance.julia"
397
397
  }
398
398
  },
399
- "match": "(type|immutable)\\s+(\\w+)(\\s*(<:)\\s*\\w+(?:{.*})?)?",
399
+ "match": "(((primitive|abstract)\\s+)?type|(mutable\\s+)?struct|immutable)\\s+(\\w+)(\\s*(<:)\\s*\\w+(?:{.*})?)?",
400
400
  "name": "meta.type.julia"
401
401
  }
402
402
  ]
@@ -0,0 +1,167 @@
1
+ {
2
+ "name": "Meson",
3
+ "scopeName": "source.meson",
4
+ "author": "Patrick Griffis",
5
+ "fileTypes": [
6
+ "meson.build",
7
+ "meson_options.txt"
8
+ ],
9
+ "uuid": "b3713e1e-4289-4e0c-88af-79e8876e5adb",
10
+ "patterns": [
11
+ {
12
+ "match": "\\#.*$",
13
+ "name": "comment.line.meson"
14
+ },
15
+ {
16
+ "include": "#string_quoted_single"
17
+ },
18
+ {
19
+ "match": "\\b(if|else|elif|endif|foreach|endforeach)\\b",
20
+ "name": "keyword.control.flow.meson"
21
+ },
22
+ {
23
+ "match": "\\b(and|not|or)\\b",
24
+ "name": "keyword.operator.logical.meson"
25
+ },
26
+ {
27
+ "match": "\\b(true|false)\\b",
28
+ "name": "constant.language.meson"
29
+ },
30
+ {
31
+ "match": "\\b([1-9]+[0-9]*\\.[0-9]*)",
32
+ "name": "constant.numeric.float.meson"
33
+ },
34
+ {
35
+ "match": "\\b([1-9]+[0-9]*|0)",
36
+ "name": "constant.numeric.integer.decimal.meson"
37
+ },
38
+ {
39
+ "match": "\\b(meson|host_machine|build_machine|target_machine)\\b",
40
+ "name": "support.variable.meson"
41
+ },
42
+ {
43
+ "match": "\\b([\\w_]+)\\s*(?=:)",
44
+ "name": "variable.parameter.function.keyword.meson"
45
+ },
46
+ {
47
+ "match": "<\\=|>\\=|\\=\\=|<|>|\\!\\=",
48
+ "name": "keyword.operator.comparison.meson"
49
+ },
50
+ {
51
+ "match": "\\+\\=",
52
+ "name": "keyword.operator.assignment.augmented.meson"
53
+ },
54
+ {
55
+ "match": "\\=",
56
+ "name": "keyword.operator.assignment.meson"
57
+ },
58
+ {
59
+ "match": "\\+|\\-|\\*|%|\\/",
60
+ "name": "keyword.operator.arithmetic.meson"
61
+ },
62
+ {
63
+ "match": "(?x)\\b(add_global_arguments|add_global_link_arguments|add_languages|add_project_arguments|add_project_link_arguments|add_test_setup|benchmark|build_target|configuration_data|configure_file|custom_target|declare_dependency|dependency|error|environment|executable|find_program|find_library|files|generator|get_option|get_variable|import|include_directories|install_data|install_headers|install_man|install_subdir|is_variable|jar|join_paths|library|message|option|project|run_command|run_target|set_variable|shared_library|shared_module|static_library|subdir|subproject|test|vcs_tag\n)\\b\\s*(?=\\()",
64
+ "name": "support.function.builtin.meson"
65
+ }
66
+ ],
67
+ "repository": {
68
+ "constant_placeholder": {
69
+ "match": "(?i:(%(\\([a-z_]+\\))?#?0?\\-?[ ]?\\+?([0-9]*|\\*)(\\.([0-9]*|\\*))?([hL][a-z]|[a-z%]))|(\\{([!\\[\\].:\\w ]+)?\\}))",
70
+ "name": "constant.other.placeholder.meson"
71
+ },
72
+ "escaped_character": {
73
+ "captures": {
74
+ "1": {
75
+ "name": "constant.character.escape.newline.meson"
76
+ },
77
+ "2": {
78
+ "name": "constant.character.escape.backlash.meson"
79
+ },
80
+ "3": {
81
+ "name": "constant.character.escape.single-quote.meson"
82
+ },
83
+ "4": {
84
+ "name": "constant.character.escape.linefeed.meson"
85
+ },
86
+ "5": {
87
+ "name": "constant.character.escape.return.meson"
88
+ },
89
+ "6": {
90
+ "name": "constant.character.escape.tab.meson"
91
+ }
92
+ },
93
+ "match": "((\\\\\\n)|(\\\\\\\\)|(\\\\')|(\\\\n)|(\\\\r)|(\\\\t))"
94
+ },
95
+ "string_quoted_single": {
96
+ "patterns": [
97
+ {
98
+ "captures": {
99
+ "1": {
100
+ "name": "puncutation.definition.string.begin.meson"
101
+ },
102
+ "2": {
103
+ "name": "puncutation.definition.string.end.meson"
104
+ },
105
+ "3": {
106
+ "name": "meta.empty-string.single.meson"
107
+ }
108
+ },
109
+ "match": "(?<!')(')(('))(?!')",
110
+ "name": "string.quoted.single.single-line.meson"
111
+ },
112
+ {
113
+ "begin": "(''')",
114
+ "beginCaptures": {
115
+ "1": {
116
+ "name": "punctuation.definition.string.begin.meson"
117
+ }
118
+ },
119
+ "end": "((?<=''')(')''|''')",
120
+ "endCaptures": {
121
+ "1": {
122
+ "name": "punctuation.definition.string.end.meson"
123
+ },
124
+ "2": {
125
+ "name": "meta.empty-string.single.meson"
126
+ }
127
+ },
128
+ "name": "string.quoted.single.block.meson",
129
+ "patterns": [
130
+ {
131
+ "include": "#constant_placeholder"
132
+ },
133
+ {
134
+ "include": "#escaped_character"
135
+ }
136
+ ]
137
+ },
138
+ {
139
+ "begin": "(')",
140
+ "beginCaptures": {
141
+ "1": {
142
+ "name": "punctuation.definition.string.begin.meson"
143
+ }
144
+ },
145
+ "end": "(')|(\\n)",
146
+ "endCaptures": {
147
+ "1": {
148
+ "name": "punctuation.definition.string.end.meson"
149
+ },
150
+ "2": {
151
+ "name": "invalid.illegal.unclosed-string.meson"
152
+ }
153
+ },
154
+ "name": "string.quoted.single.single-line.meson",
155
+ "patterns": [
156
+ {
157
+ "include": "#constant_placeholder"
158
+ },
159
+ {
160
+ "include": "#escaped_character"
161
+ }
162
+ ]
163
+ }
164
+ ]
165
+ }
166
+ }
167
+ }
@@ -0,0 +1,117 @@
1
+ {
2
+ "scopeName": "source.p4",
3
+ "name": "P4",
4
+ "fileTypes": [
5
+ "p4"
6
+ ],
7
+ "patterns": [
8
+ {
9
+ "begin": "\"",
10
+ "beginCaptures": {
11
+ "0": {
12
+ "name": "punctuation.definition.string.begin.p4"
13
+ }
14
+ },
15
+ "end": "\"",
16
+ "endCaptures": {
17
+ "0": {
18
+ "name": "punctuation.definition.string.end.p4"
19
+ }
20
+ },
21
+ "name": "string.quoted.double.p4"
22
+ },
23
+ {
24
+ "begin": "//",
25
+ "beginCaptures": {
26
+ "0": {
27
+ "name": "comment.p4"
28
+ }
29
+ },
30
+ "end": "\\n",
31
+ "name": "comment.line.p4"
32
+ },
33
+ {
34
+ "match": "\\b(header_type|header|metadata|field_list|field_list_calculation|parser|parser_exception|parser_value_set|counter|meter|register|action|action_profile|table|control|extern)\\b",
35
+ "name": "storage.type.object.p4"
36
+ },
37
+ {
38
+ "match": "\\b(bool|bit|varbit|int)\\b",
39
+ "name": "storage.data.type.p4"
40
+ },
41
+ {
42
+ "match": "\\b(hit|miss|latest|return|default)\\b",
43
+ "name": "variable.language.p4"
44
+ },
45
+ {
46
+ "match": "\\b(if|else if|else|return|hit|miss|true|false)\\b",
47
+ "name": "keyword.control.p4"
48
+ },
49
+ {
50
+ "match": "\\b(and|or)\\b",
51
+ "name": "keyword.operator.p4"
52
+ },
53
+ {
54
+ "match": "\\b(exact|ternary|lpm|range|valid|mask)\\b",
55
+ "comment": "table field match type",
56
+ "name": "entity.name.type.p4"
57
+ },
58
+ {
59
+ "match": "\\b(reads|actions|min_size|max_size|size|support_timeout|action_profile)\\b",
60
+ "comment": "table elements",
61
+ "name": "storage.type.p4"
62
+ },
63
+ {
64
+ "match": "\\b(bytes|packets)\\b",
65
+ "comment": "counter/meter/register types",
66
+ "name": "storage.type.p4"
67
+ },
68
+ {
69
+ "match": "\\b(width|layout|attributes|type|static|result|direct|instance_count|min_width|saturating)\\b",
70
+ "comment": "counter/meter/register fields",
71
+ "name": "entity.name.type.p4"
72
+ },
73
+ {
74
+ "match": "\\b(length|fields|max_length)\\b",
75
+ "comment": "header fields",
76
+ "name": "entity.name.type.p4"
77
+ },
78
+ {
79
+ "match": "\\#include",
80
+ "name": "meta.preprocessor.include.p4"
81
+ },
82
+ {
83
+ "match": "\\#define",
84
+ "name": "meta.preprocessor.define.p4"
85
+ },
86
+ {
87
+ "match": "\\b(apply|valid|select|current|extract|add_header|copy_header|remove_header|modify_field|add_to_field|add|set_field_to_hash_index|truncate|drop|no_op|push|pop|count|meter|generate_digest|resubmit|recirculate|clone_ingress_pkt_to_ingress|clone_egress_pkt_to_ingress|clone_ingress_pkt_to_egress|clone_egress_pkt_to_egress|register_write|register_read)\\b",
88
+ "comment": "primitive actions/builtin functions",
89
+ "name": "support.function.primitive.p4"
90
+ },
91
+ {
92
+ "match": "[a-zA-Z_][0-9a-zA-Z_]*",
93
+ "name": "support.any-method.p4"
94
+ },
95
+ {
96
+ "match": "[\\+|-]?[0-9]+'[0-9]+",
97
+ "comment": "const value",
98
+ "name": "constant.numeric.p4"
99
+ },
100
+ {
101
+ "match": "0(x|X)[0-9a-fA-F]+",
102
+ "name": "constant.numeric.p4"
103
+ },
104
+ {
105
+ "match": "0(b|B)[01]+",
106
+ "name": "constant.numeric.p4"
107
+ },
108
+ {
109
+ "match": "[0-9]+",
110
+ "name": "constant.numeric.p4"
111
+ },
112
+ {
113
+ "match": "\\b(true|false)\\b",
114
+ "name": "constant.language.p4"
115
+ }
116
+ ]
117
+ }
@@ -227,6 +227,18 @@
227
227
  }
228
228
  ]
229
229
  },
230
+ {
231
+ "begin": "\\s*#`„",
232
+ "end": "”|“",
233
+ "name": "comment.multiline.hash-tick.left_double-low-q_right_double.perl6fe",
234
+ "patterns": [
235
+ {
236
+ "begin": "„",
237
+ "end": "”|“",
238
+ "name": "comment.internal.left_double-low-q_right_double.perl6fe"
239
+ }
240
+ ]
241
+ },
230
242
  {
231
243
  "begin": "\\s*#`‘",
232
244
  "end": "’",
@@ -314,6 +326,33 @@
314
326
  }
315
327
  ]
316
328
  },
329
+ {
330
+ "begin": "„",
331
+ "beginCaptures": {
332
+ "0": {
333
+ "name": "punctuation.definition.string.begin.perl6fe"
334
+ }
335
+ },
336
+ "end": "”|“",
337
+ "endCaptures": {
338
+ "0": {
339
+ "name": "punctuation.definition.string.end.perl6fe"
340
+ }
341
+ },
342
+ "name": "string.quoted.left_double-low-q_right_double.perl6fe",
343
+ "patterns": [
344
+ {
345
+ "match": "\\\\[„”|“abtnfre\\\\\\{\\}]",
346
+ "name": "constant.character.escape.perl6fe"
347
+ },
348
+ {
349
+ "include": "#interpolation"
350
+ },
351
+ {
352
+ "include": "source.quoting.perl6fe#q_left_double-low-q_right_double_string_content"
353
+ }
354
+ ]
355
+ },
317
356
  {
318
357
  "begin": "(?<=\\W|^)‘",
319
358
  "beginCaptures": {
@@ -479,7 +518,7 @@
479
518
  }
480
519
  },
481
520
  {
482
- "begin": "(?x)\n(?<= ^|\\s )\n(?:\n (m|rx|s|S)\n (\n (?:\n (?<!:P5) # < This can maybe be removed because we\n \\s*:\\w+\n (?!\\s*:P5) # < include p5_regex above it\n )*\n )\n)\n\\s*\n([^\\#\\p{Ps}\\p{Pe}\\p{Pi}\\p{Pf}\\w'\\-<>\\-]) # Whatever",
521
+ "begin": "(?x)\n(?<= ^|[=,(\\[~]|when|=> ) \\s*\n(?:\n (m|rx)\n (\n (?:\n (?<!:P5) # < This can maybe be removed because we\n \\s*:\\w+\n (?!\\s*:P5) # < include p5_regex above it\n )*\n )\n) # With the m or rx\n\\s*\n([/]) # Solidus",
483
522
  "beginCaptures": {
484
523
  "1": {
485
524
  "name": "string.regexp.construct.perl6fe"
@@ -491,7 +530,7 @@
491
530
  "name": "punctuation.definition.regexp.perl6fe"
492
531
  }
493
532
  },
494
- "end": "(?x) (?: (?<!\\\\)|(?<=\\\\\\\\) ) (\\3)",
533
+ "end": "(?x) (?: (?<!\\\\)|(?<=\\\\\\\\)|(?<!')|(?<=\\\\ ') ) (/)",
495
534
  "endCaptures": {
496
535
  "1": {
497
536
  "name": "punctuation.definition.regexp.perl6fe"
@@ -508,7 +547,7 @@
508
547
  ]
509
548
  },
510
549
  {
511
- "begin": "(?x)\n(?<= ^|[=,(\\[~]|when|=> ) \\s*\n(?:\n (m|rx)\n (\n (?:\n (?<!:P5) # < This can maybe be removed because we\n \\s*:\\w+\n (?!\\s*:P5) # < include p5_regex above it\n )*\n )\n) # With the m or rx\n\\s*\n([/]) # Solidus",
550
+ "begin": "(?x)\n(?<= ^|[=,(\\[~]|when|=> ) \\s*\n(?:\n (m|rx)\n (\n (?:\n (?<!:P5) # < This can maybe be removed because we\n \\s*:\\w+\n (?!\\s*:P5) # < include p5_regex above it\n )*\n )\n) # With the m or rx\n\\s*\n([{]) # Left curly brace",
512
551
  "beginCaptures": {
513
552
  "1": {
514
553
  "name": "string.regexp.construct.perl6fe"
@@ -520,13 +559,13 @@
520
559
  "name": "punctuation.definition.regexp.perl6fe"
521
560
  }
522
561
  },
523
- "end": "(?x) (?: (?<!\\\\)|(?<=\\\\\\\\) ) (/)",
562
+ "end": "(?x) (?: (?<!\\\\)|(?<=\\\\\\\\) ) (\\})",
524
563
  "endCaptures": {
525
564
  "1": {
526
565
  "name": "punctuation.definition.regexp.perl6fe"
527
566
  }
528
567
  },
529
- "contentName": "string.regexp.perl6fe",
568
+ "contentName": "fstring.regexp.perl6fe",
530
569
  "patterns": [
531
570
  {
532
571
  "include": "#interpolation"
@@ -614,6 +653,35 @@
614
653
  }
615
654
  ]
616
655
  },
656
+ {
657
+ "begin": "(?x)\n(?<= ^|\\s )\n(?:\n (m|rx|s|S)\n (\n (?:\n (?<!:P5) # < This can maybe be removed because we\n \\s*:\\w+\n (?!\\s*:P5) # < include p5_regex above it\n )*\n )\n)\n\\s*\n([^#\\p{Ps}\\p{Pe}\\p{Pi}\\p{Pf}\\w'\\-<>\\-])",
658
+ "beginCaptures": {
659
+ "1": {
660
+ "name": "string.regexp.construct.perl6fe"
661
+ },
662
+ "2": {
663
+ "name": "entity.name.section.adverb.regexp.perl6fe"
664
+ },
665
+ "3": {
666
+ "name": "punctuation.definition.regexp.perl6fe"
667
+ }
668
+ },
669
+ "end": "(?x) (?: (?<!\\\\)|(?<=\\\\\\\\) ) (\\3)",
670
+ "endCaptures": {
671
+ "1": {
672
+ "name": "punctuation.definition.regexp.perl6fe"
673
+ }
674
+ },
675
+ "contentName": "string.regexp.perl6fe",
676
+ "patterns": [
677
+ {
678
+ "include": "#interpolation"
679
+ },
680
+ {
681
+ "include": "source.regexp.perl6fe"
682
+ }
683
+ ]
684
+ },
617
685
  {
618
686
  "include": "#shellquotes"
619
687
  },
@@ -643,9 +711,6 @@
643
711
  }
644
712
  },
645
713
  "patterns": [
646
- {
647
- "include": "#interpolation"
648
- },
649
714
  {
650
715
  "begin": "(?<=/)",
651
716
  "end": "\\n",
@@ -656,12 +721,21 @@
656
721
  ],
657
722
  "name": "meta.heredoc.continuation.perl6fe"
658
723
  },
724
+ {
725
+ "begin": "^",
726
+ "end": "$",
727
+ "patterns": [
728
+ {
729
+ "include": "#interpolation"
730
+ }
731
+ ]
732
+ },
659
733
  {
660
734
  "match": "(?x) ^ (?: . | \\n )* $",
661
735
  "name": "string.quoted.qq.heredoc.perl6fe"
662
736
  }
663
737
  ],
664
- "name": "meta.heredoc.perl6fe"
738
+ "name": "string.quoted.heredoc.perl6fe"
665
739
  },
666
740
  {
667
741
  "begin": "(?x) (?: ( [qQ](?!/)|qw|qww|qx|qqx ) \\s* ( (?:\\s*:\\w+)*\\s*: (?: to|heredoc ) )\\s* | (qto|Qto) \\s* ( (?:\\s*:\\w+)* )\\s* ) / (\\S+) /",
@@ -869,7 +943,7 @@
869
943
  ]
870
944
  },
871
945
  {
872
- "match": "(?x) ( [+:\\-.*/] | \\|\\| )? (?<! = ) = (?! [>=~] )",
946
+ "match": "(?x) (?: [+:\\-.*/] | \\|\\| )? (?<! = ) = (?! [>=~] )",
873
947
  "name": "storage.modifier.assignment.perl6fe"
874
948
  },
875
949
  {
@@ -892,7 +966,7 @@
892
966
  "name": "keyword.control.repeat.perl6fe"
893
967
  },
894
968
  {
895
- "match": "(?x)\n\\b (?<! [\\-:.] )\n(\n take|do|when|next|last|redo|return|return-rw\n |contend|maybe|defer|default|exit\n |continue|break|goto|leave|supply\n |async|lift|await|start|react|whenever|parse\n)\n(?! - ) \\b",
969
+ "match": "(?x)\n\\b (?<! [\\-:.] )\n(\n take|do|when|next|last|redo|return|return-rw\n |contend|maybe|defer|default|exit|quietly\n |continue|break|goto|leave|supply\n |async|lift|await|start|react|whenever|parse\n)\n(?! - ) \\b",
896
970
  "name": "keyword.control.flowcontrol.perl6fe"
897
971
  },
898
972
  {
@@ -912,7 +986,7 @@
912
986
  "name": "keyword.control.control-handlers.perl6fe"
913
987
  },
914
988
  {
915
- "match": "(?x)\\b(?<![\\-:])( prec|irs|ofs|ors|export|raw|deep |binary|unary|reparsed|rw|parsed |cached|readonly|defequiv|will |ref|copy|inline|tighter|looser |equiv|assoc|required )(?!\\-)\\b (?!\\s*=>)",
989
+ "match": "(?x)\\b(?<![\\-:])( prec|irs|ofs|ors|export|raw|deep |binary|unary|reparsed|rw|parsed |cached|readonly|defequiv|will |ref|copy|inline|tighter|looser |equiv|assoc|required|pure )(?!\\-)\\b (?!\\s*=>)",
916
990
  "name": "entity.name.type.trait.perl6fe"
917
991
  },
918
992
  {
@@ -924,7 +998,7 @@
924
998
  "name": "constant.language.boolean.perl6fe"
925
999
  },
926
1000
  {
927
- "match": "(?x)\\b(?<![\\-:])( fatal|internals|MONKEY\\-TYPING|nqp| strict|trace|worries|invocant|parameters|experimental| cur|soft|variables|attributes|v6(?:\\.\\w)*|lib|Test|NativeCall )(?!\\-) \\b (?!\\s*=>)",
1001
+ "match": "(?x)\\b(?<![\\-:])( fatal|internals|MONKEY\\-TYPING|nqp|QAST| strict|trace|worries|invocant|parameters|experimental| cur|soft|variables|attributes|v6(?:\\.\\w)*|lib|Test|NativeCall )(?!\\-) \\b (?!\\s*=>)",
928
1002
  "name": "constant.language.pragma.perl6fe"
929
1003
  },
930
1004
  {
@@ -936,7 +1010,7 @@
936
1010
  }
937
1011
  },
938
1012
  {
939
- "match": "(?x)\\b(?<!:)( AST|Any|Array|Associative|Attribute|Bag|BagHash|Baggy| Blob|Block|Bool|Callable|Capture|Channel|Code|Complex|Cool| CurrentThreadScheduler|Cursor|Date|DateTime|Dateish|Duration| Enum|FatRat|Grammar|Hash|IO|Instant|Iterable| Iterator|Junction|Label|List|Lock|Macro|Map|Match|Metamodel| Method|Mix|MixHash|Mixy|Mu|Nil|Numeric|ObjAt|Pair| Parameter|Pod|Positional|PositionalBindFailover|Proc|Promise| Proxy|QuantHash|Range|Rat|Rational|Real|Regex|Routine|Scheduler| Seq|Set|SetHash|Setty|Signature|Slip|Stash|Str|str|Stringy|Sub| Submethod|Supply|Tap|Temporal|Thread|ThreadPoolScheduler| Variable|Version|Whatever|WhateverCode|bool|size_t| Int|int|int1|int2|int4|int8|int16|int32|int64| Rat|rat|rat1|rat2|rat4|rat8|rat16|rat32|rat64| Buf|buf|buf1|buf2|buf4|buf8|buf16|buf32|buf64| UInt|uint|uint1|uint2|uint4|uint8|uint16|uint32|uint64| utf8|utf16|utf32|Num|num|num32|num64|IntStr|NumStr| RatStr|ComplexStr|CArray|Pointer|long|longlong )\\b (?!\\s*=>)",
1013
+ "match": "(?x)\\b(?<!:)(\n AST|Any|Array|Associative|Attribute|Bag|BagHash|Baggy|\n Blob|Block|Bool|Callable|Capture|Channel|Code|Complex|Cool|\n CurrentThreadScheduler|Cursor|Date|DateTime|Dateish|Duration|\n Enum|FatRat|Grammar|Hash|IO|Instant|Iterable|\n Iterator|Junction|Label|List|Lock|Macro|Map|Match|Metamodel|\n Method|Mix|MixHash|Mixy|Mu|Nil|Numeric|ObjAt|Pair|\n Parameter|Pod|Positional|PositionalBindFailover|Proc|Promise|\n Proxy|QuantHash|Range|Rat|Rational|Real|Regex|Routine|Scheduler|\n Seq|Set|SetHash|Setty|Signature|Slip|Stash|Str|str|Stringy|Sub|\n Submethod|Supply|Tap|Temporal|Thread|ThreadPoolScheduler|\n Variable|Version|Whatever|WhateverCode|bool|size_t|\n Int|int|int1|int2|int4|int8|int16|int32|int64|\n Rat|rat|rat1|rat2|rat4|rat8|rat16|rat32|rat64|\n Buf|buf|buf1|buf2|buf4|buf8|buf16|buf32|buf64|\n UInt|uint|uint1|uint2|uint4|uint8|uint16|uint32|uint64|\n utf8|utf16|utf32|Num|num|num32|num64|IntStr|NumStr|\n RatStr|ComplexStr|CArray|Pointer|long|longlong|\n # These are for types which have sub types\n Order|More|Less|Same\n)\\b (?!\\s*=>)",
940
1014
  "captures": {
941
1015
  "1": {
942
1016
  "name": "support.type.perl6fe"
@@ -976,7 +1050,7 @@
976
1050
  "name": "meta.operator.non.ligature.perl6fe"
977
1051
  },
978
1052
  {
979
- "match": "(?x) <== | <=> | => | --> | -> | \\+\\| | \\+\\+ | -- | \\*\\* | \\?\\?\\? | \\?\\? | \\!\\!\\! | \\!\\! | && | \\+\\^ | \\?\\^ | %% | \\+& | \\+< | \\+> | \\+\\^ | \\.\\.(?!\\.) | \\.\\.\\^ | \\^\\.\\. | \\^\\.\\.\\^ | \\?\\| | !=(?!\\=) | !==(?!\\=) | <=(?!>) | >= | === | == | =:= | ~~ | \\x{2245} | \\|\\| | \\^\\^ | \\/\\/ | := | ::= | \\.\\.\\.",
1053
+ "match": "(?x) <== | ==> | <=> | => | --> | -> | \\+\\| | \\+\\+ | -- | \\*\\* | \\?\\?\\? | \\?\\? | \\!\\!\\! | \\!\\! | && | \\+\\^ | \\?\\^ | %% | \\+& | \\+< | \\+> | \\+\\^ | \\.\\.(?!\\.) | \\.\\.\\^ | \\^\\.\\. | \\^\\.\\.\\^ | \\?\\| | !=(?!\\=) | !==(?!\\=) | <=(?!>) | >= | === | == | =:= | ~~ | \\x{2245} | \\|\\| | \\^\\^ | \\/\\/ | := | ::= | \\.\\.\\.",
980
1054
  "name": "keyword.operator.multi-symbol.perl6fe"
981
1055
  },
982
1056
  {
@@ -1002,7 +1076,16 @@
1002
1076
  "name": "constant.language.whatever.hack.perl6fe"
1003
1077
  },
1004
1078
  {
1005
- "match": "(?x)\\b(?<![\\-:\\\\])( :: )?( eager|hyper|substr|index|rindex|grep|map|sort|join|lines|hints |chmod|split|reduce|min|max|reverse|truncate|zip|cat|roundrobin |classify|first|sum|keys|values|pairs|defined|delete|exists |elems|end|kv|any|all|one|wrap|shape|key|value|name|pop|push |shift|splice|unshift|floor|ceiling|abs|exp|log|log10|rand|sign |sqrt|sin|cos|tan|round|strand|roots|cis|unpolar|polar|atan2 |pick|chop|chomp|lc|lcfirst|uc|ucfirst|capitalize|mkdir |normalize|pack|unpack|quotemeta|comb|samecase|sameaccent|chars |nfd|nfc|nfkd|nfkc|printf|sprintf|caller|evalfile|run|runinstead |nothing|want|bless|chr|ord|ords|gmtime|time|eof|localtime|gethost |getpw|chroot|getlogin|getpeername|kill|fork|wait|perl|graphs |codes|bytes|clone|print|open|read|write|readline|say|seek|close |opendir|readdir|slurp|spurt|shell|run|pos|fmt|vec|link|unlink |symlink|unique|pair|asin|atan|sec|cosec|cotan|asec|acosec|acotan |sinh|cosh|tanh|asinh|done|acos|acosh|atanh|sech|cosech|cotanh |sech|acosech|acotanh|asech|ok|nok|plan-ok|dies-ok|lives-ok|skip |todo|pass|flunk|force-todo|use-ok|isa-ok|diag|is-deeply|isnt |like|skip-rest|unlike|cmp-ok|eval-dies-ok|nok-error|cmp-ok |eval-lives-ok|approx|is-approx|throws-ok|version-lt|plan|EVAL |succ|pred|times|nonce|once|signature|new|connect|operator|undef |undefine|sleep|from|to|infix|postfix|prefix|circumfix|can-ok |postcircumfix|minmax|lazy|count|unwrap|getc|pi|tau|context|void |quasi|body|each|contains|rewinddir|subst|can|isa|flush|arity |assuming|rewind|callwith|callsame|nextwith|nextsame|attr|does-ok |eval-elsewhere|none|not|srand|so|trim|trim-start|trim-end|lastcall |WHAT|WHY|WHERE|HOW|WHICH|VAR|WHO|WHENCE|ACCEPTS|REJECTS|not |iterator|by|re|im|invert|flip|gist|flat|tree|is-prime |throws-like|trans|race|hyper|tap|emit|done-testing|quit|dd|note |prepend|categorize|antipairs|categorize-list|parse-base|base |starts-with|ends-with|put|append|tail|\\x{03C0}|\\x{03C4}|\\x{212F} |get|words|new-from-pairs|uniname|uninames|uniprop|uniprops |slurp-rest|throw|break|keep|match )(?!\\-)\\b(?!\\s*=>)",
1079
+ "match": "(?x)\\b(?<![\\-\\\\])( :: )?(exists)(?!\\-)\\b(?!\\s*=>)",
1080
+ "captures": {
1081
+ "1": {
1082
+ "name": "keyword.operator.colon.perl6fe"
1083
+ }
1084
+ },
1085
+ "name": "support.function.perl6fe"
1086
+ },
1087
+ {
1088
+ "match": "(?x)\\b(?<![\\-:\\\\])( :: )?( eager|hyper|substr|index|rindex|grep|map|sort|join|lines|hints |chmod|split|reduce|min|max|reverse|truncate|zip|cat|roundrobin |classify|first|sum|keys|values|pairs|defined|delete|exists |elems|end|kv|any|all|one|wrap|shape|key|value|name|pop|push |shift|splice|unshift|floor|ceiling|abs|exp|log|log10|rand|sign |sqrt|sin|cos|tan|round|strand|roots|cis|unpolar|polar|atan2 |pick|chop|chomp|lc|lcfirst|uc|ucfirst|capitalize|mkdir |normalize|pack|unpack|quotemeta|comb|samecase|sameaccent|chars |nfd|nfc|nfkd|nfkc|printf|sprintf|caller|evalfile|run|runinstead |nothing|want|bless|chr|ord|ords|gmtime|time|eof|localtime|gethost |getpw|chroot|getlogin|getpeername|kill|fork|wait|perl|graphs |codes|bytes|clone|print|open|read|write|readline|say|seek|close |opendir|readdir|slurp|spurt|shell|run|pos|fmt|vec|link|unlink |symlink|unique|pair|asin|atan|sec|cosec|cotan|asec|acosec|acotan |sinh|cosh|tanh|asinh|done|acos|acosh|atanh|sech|cosech|cotanh |sech|acosech|acotanh|asech|ok|nok|plan-ok|dies-ok|lives-ok|skip |todo|pass|flunk|force-todo|use-ok|isa-ok|diag|is-deeply|isnt |like|skip-rest|unlike|cmp-ok|eval-dies-ok|nok-error|cmp-ok |eval-lives-ok|approx|is-approx|throws-ok|version-lt|plan|EVAL |succ|pred|times|nonce|once|signature|new|connect|operator|undef |undefine|sleep|from|to|infix|postfix|prefix|circumfix|can-ok |postcircumfix|minmax|lazy|count|unwrap|getc|pi|tau|context|void |quasi|body|each|contains|rewinddir|subst|can|isa|flush|arity |assuming|rewind|callwith|callsame|nextwith|nextsame|attr|does-ok |eval-elsewhere|none|not|srand|so|trim|trim-start|trim-end|lastcall |WHAT|WHY|WHERE|HOW|WHICH|VAR|WHO|WHENCE|ACCEPTS|REJECTS|not |iterator|by|re|im|invert|flip|gist|flat|tree|is-prime |throws-like|trans|race|hyper|tap|emit|done-testing|quit|dd|note |prepend|categorize|antipairs|categorize-list|parse-base|base |starts-with|ends-with|put|append|tail|\\x{03C0}|\\x{03C4}|\\x{212F} |get|words|new-from-pairs|uniname|uninames|uniprop|uniprops |slurp-rest|throw|break|keep|match|trim-leading|trim-trailing |is-lazy|pull-one|push-exactly|push-at-least|push-all|push-until-lazy |sink-all|skip-at-least|skip-at-least-pull-one )(?!\\-)\\b(?!\\s*=>)",
1006
1089
  "captures": {
1007
1090
  "1": {
1008
1091
  "name": "keyword.operator.colon.perl6fe"
@@ -1076,7 +1159,7 @@
1076
1159
  "name": "constant.numeric.radix.perl6fe"
1077
1160
  },
1078
1161
  {
1079
- "match": "(?x)\n (?<= ^ | [×÷*=,:;^\\s{\\[(/] | \\.\\. )\n (?: [+-−] )?\n(?:\n (?: \\d+ (?: [\\_\\d]+ \\d )? )\n (?: \\. \\d+ (?: [\\_\\d]+ \\d )? )?\n)\n(?: e (?:-|−)? \\d+ (?: [\\_\\d]+ \\d )? )?",
1162
+ "match": "(?x)\n (?<= ^ | [×÷*=,:;^\\s{\\[(/] | \\.\\. | … )\n (?: \\^? [+-−] )?\n(?:\n (?: \\d+ (?: [\\_\\d]+ \\d )? )\n (?: \\. \\d+ (?: [\\_\\d]+ \\d )? )?\n)\n(?: e (?:-|−)? \\d+ (?: [\\_\\d]+ \\d )? )?",
1080
1163
  "name": "constant.numeric.perl6fe"
1081
1164
  },
1082
1165
  {
@@ -2253,7 +2336,7 @@
2253
2336
  "include": "#regexp-variables"
2254
2337
  },
2255
2338
  {
2256
- "begin": "(\\{)",
2339
+ "begin": "(?x) (?<! m|rx|m:i|rx:i) (\\{)",
2257
2340
  "beginCaptures": {
2258
2341
  "1": {
2259
2342
  "name": "punctuation.section.embedded.begin.perl6fe"