github-linguist 5.0.0 → 5.0.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (44) hide show
  1. checksums.yaml +4 -4
  2. data/bin/git-linguist +10 -2
  3. data/bin/linguist +26 -9
  4. data/grammars/config.xcompose.json +83 -0
  5. data/grammars/hint.haskell.json +21 -30
  6. data/grammars/hint.message.haskell.json +21 -30
  7. data/grammars/hint.type.haskell.json +21 -30
  8. data/grammars/source.bsl.json +42 -28
  9. data/grammars/source.cs.json +656 -131
  10. data/grammars/source.csound-document.json +142 -25
  11. data/grammars/source.csound-score.json +13 -10
  12. data/grammars/source.csound.json +136 -81
  13. data/grammars/source.css.json +1501 -331
  14. data/grammars/source.css.less.json +3 -3
  15. data/grammars/source.d.json +60 -44
  16. data/grammars/source.gn.json +240 -138
  17. data/grammars/source.graphql.json +781 -155
  18. data/grammars/source.haskell.json +21 -30
  19. data/grammars/source.js.json +46 -46
  20. data/grammars/source.mask.json +1 -1
  21. data/grammars/source.perl6fe.json +1151 -763
  22. data/grammars/source.python.json +45 -23
  23. data/grammars/source.quoting.perl6fe.json +2170 -0
  24. data/grammars/source.reason.json +296 -0
  25. data/grammars/source.regexp.perl6fe.json +27 -0
  26. data/grammars/source.rust.json +522 -125
  27. data/grammars/source.sdbl.json +2 -2
  28. data/grammars/source.shell.json +125 -161
  29. data/grammars/source.solidity.json +137 -0
  30. data/grammars/source.ts.json +385 -137
  31. data/grammars/source.tsx.json +394 -167
  32. data/grammars/source.yaml.json +176 -171
  33. data/grammars/text.html.php.blade.json +2 -2
  34. data/grammars/text.tex.latex.haskell.json +1 -10
  35. data/lib/linguist/generated.rb +50 -4
  36. data/lib/linguist/heuristics.rb +1 -1
  37. data/lib/linguist/language.rb +12 -8
  38. data/lib/linguist/languages.json +1 -1
  39. data/lib/linguist/languages.yml +38 -1
  40. data/lib/linguist/samples.json +4605 -581
  41. data/lib/linguist/vendor.yml +6 -0
  42. data/lib/linguist/version.rb +1 -1
  43. metadata +10 -7
  44. data/grammars/source.hy.json +0 -270
@@ -13,18 +13,18 @@
13
13
  "classNameOne": "[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*",
14
14
  "functionName": "(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*",
15
15
  "className": "[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*",
16
- "operatorChar": "[\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']]",
17
- "operator": "[\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']]+",
18
- "operatorFun": "(?:\\((?!--+\\))[\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']]+\\))",
16
+ "operatorChar": "(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"']))",
17
+ "operator": "(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"']))+",
18
+ "operatorFun": "(?:\\((?!--+\\))(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"']))+\\))",
19
19
  "basicChar": "[\\ -\\[\\]-~]",
20
20
  "escapeChar": "\\\\(?:NUL|SOH|STX|ETX|EOT|ENQ|ACK|BEL|BS|HT|LF|VT|FF|CR|SO|SI|DLE|DC1|DC2|DC3|DC4|NAK|SYN|ETB|CAN|EM|SUB|ESC|FS|GS|RS|US|SP|DEL|[abfnrtv\\\\\\\"'\\&])",
21
21
  "octalChar": "(?:\\\\o[0-7]+)",
22
22
  "hexChar": "(?:\\\\x[0-9A-Fa-f]+)",
23
23
  "controlChar": "(?:\\\\\\^[A-Z@\\[\\]\\\\^_])",
24
- "character": "(?:[\\ -\\[\\]-~]|\\\\(?:NUL|SOH|STX|ETX|EOT|ENQ|ACK|BEL|BS|HT|LF|VT|FF|CR|SO|SI|DLE|DC1|DC2|DC3|DC4|NAK|SYN|ETB|CAN|EM|SUB|ESC|FS|GS|RS|US|SP|DEL|[abfnrtv\\\\\\\"'\\&])|(?:\\\\o[0-7]+)|(?:\\\\x[0-9A-Fa-f]+)|(?:\\\\\\^[A-Z@\\[\\]\\\\^_])|[\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']])",
25
- "functionTypeDeclaration": "(?:(?:((?:(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*|(?:\\((?!--+\\))[\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']]+\\)))(?:(?:\\s*,\\s*)(?:(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*|(?:\\((?!--+\\))[\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']]+\\))))*))(?:\\s*((?<![\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']])(?:::|∷)(?![\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']]))))",
26
- "doubleColonOperator": "(?<![\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']])(?:::|∷)(?![\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']])",
27
- "ctorTypeDeclaration": "(?:(?:((?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*|(?:\\((?!--+\\))[\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']]+\\)))(?:(?:\\s*,\\s*)(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*|(?:\\((?!--+\\))[\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']]+\\))))*))(?:\\s*((?<![\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']])(?:::|∷)(?![\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']]))))",
24
+ "character": "(?:[\\ -\\[\\]-~]|\\\\(?:NUL|SOH|STX|ETX|EOT|ENQ|ACK|BEL|BS|HT|LF|VT|FF|CR|SO|SI|DLE|DC1|DC2|DC3|DC4|NAK|SYN|ETB|CAN|EM|SUB|ESC|FS|GS|RS|US|SP|DEL|[abfnrtv\\\\\\\"'\\&])|(?:\\\\o[0-7]+)|(?:\\\\x[0-9A-Fa-f]+)|(?:\\\\\\^[A-Z@\\[\\]\\\\^_])|(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"'])))",
25
+ "functionTypeDeclaration": "(?:(?:((?:(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*|(?:\\((?!--+\\))(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"']))+\\)))(?:(?:\\s*,\\s*)(?:(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*|(?:\\((?!--+\\))(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"']))+\\))))*))(?:\\s*((?<!(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"'])))(?:::|∷)(?!(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"']))))))",
26
+ "doubleColonOperator": "(?<!(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"'])))(?:::|∷)(?!(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"'])))",
27
+ "ctorTypeDeclaration": "(?:(?:((?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*|(?:\\((?!--+\\))(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"']))+\\)))(?:(?:\\s*,\\s*)(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*|(?:\\((?!--+\\))(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"']))+\\))))*))(?:\\s*((?<!(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"'])))(?:::|∷)(?!(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"']))))))",
28
28
  "ctorArgs": "(?!deriving)(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*|(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*|(?:(?!deriving)(?:[\\w()'→⇒\\[\\],]|->|=>)+\\s*)+)",
29
29
  "ctor": "(?:(?:(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?<![\\p{Ll}_\\p{Lu}\\p{Lt}']))([\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*)\\s*)(?:((?:(?!deriving)(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*|(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*|(?:(?!deriving)(?:[\\w()'→⇒\\[\\],]|->|=>)+\\s*)+))(?:(?:\\s+)(?:(?!deriving)(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*|(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*|(?:(?!deriving)(?:[\\w()'→⇒\\[\\],]|->|=>)+\\s*)+)))*)?))",
30
30
  "typeDeclOne": "(?:(?!(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?<![\\p{Ll}_\\p{Lu}\\p{Lt}']))where(?:(?<=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])))(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*|(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*))",
@@ -89,11 +89,6 @@
89
89
  {
90
90
  "begin": "(^[ \\t]+)?(?=--+\\s+[|^])",
91
91
  "end": "(?!\\G)",
92
- "beginCaptures": {
93
- "1": {
94
- "name": "punctuation.whitespace.comment.leading.haskell"
95
- }
96
- },
97
92
  "patterns": [
98
93
  {
99
94
  "name": "comment.line.double-dash.haddock.haskell",
@@ -111,13 +106,8 @@
111
106
  ]
112
107
  },
113
108
  {
114
- "begin": "(^[ \\t]+)?(?=--+(?![\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']]))",
109
+ "begin": "(^[ \\t]+)?(?=--+(?!(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"']))))",
115
110
  "end": "(?!\\G)",
116
- "beginCaptures": {
117
- "1": {
118
- "name": "punctuation.whitespace.comment.leading.haskell"
119
- }
120
- },
121
111
  "patterns": [
122
112
  {
123
113
  "name": "comment.line.double-dash.haskell",
@@ -160,7 +150,7 @@
160
150
  "patterns": [
161
151
  {
162
152
  "name": "entity.name.function.infix.haskell",
163
- "match": "(?:\\((?!--+\\))[\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']]+\\))"
153
+ "match": "(?:\\((?!--+\\))(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"']))+\\))"
164
154
  }
165
155
  ]
166
156
  },
@@ -170,6 +160,7 @@
170
160
  "name": "meta.declaration.exports.haskell",
171
161
  "begin": "\\(",
172
162
  "end": "\\)",
163
+ "applyEndPatternLast": 1,
173
164
  "patterns": [
174
165
  {
175
166
  "include": "#comments"
@@ -245,7 +236,7 @@
245
236
  "patterns": [
246
237
  {
247
238
  "name": "meta.function.type-declaration.haskell",
248
- "begin": "^([ \\t]*)(?:(?:((?:(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*|(?:\\((?!--+\\))[\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']]+\\)))(?:(?:\\s*,\\s*)(?:(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*|(?:\\((?!--+\\))[\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']]+\\))))*))(?:\\s*((?<![\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']])(?:::|∷)(?![\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']]))))",
239
+ "begin": "^([ \\t]*)(?:(?:((?:(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*|(?:\\((?!--+\\))(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"']))+\\)))(?:(?:\\s*,\\s*)(?:(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*|(?:\\((?!--+\\))(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"']))+\\))))*))(?:\\s*((?<!(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"'])))(?:::|∷)(?!(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"']))))))",
249
240
  "end": "^(?!\\1[ \\t]|[ \\t]*$)",
250
241
  "contentName": "meta.type-signature.haskell",
251
242
  "beginCaptures": {
@@ -275,7 +266,7 @@
275
266
  "patterns": [
276
267
  {
277
268
  "name": "meta.ctor.type-declaration.haskell",
278
- "begin": "^([ \\t]*)(?:(?:((?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*|(?:\\((?!--+\\))[\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']]+\\)))(?:(?:\\s*,\\s*)(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*|(?:\\((?!--+\\))[\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']]+\\))))*))(?:\\s*((?<![\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']])(?:::|∷)(?![\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']]))))",
269
+ "begin": "^([ \\t]*)(?:(?:((?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*|(?:\\((?!--+\\))(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"']))+\\)))(?:(?:\\s*,\\s*)(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*|(?:\\((?!--+\\))(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"']))+\\))))*))(?:\\s*((?<!(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"'])))(?:::|∷)(?!(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"']))))))",
279
270
  "end": "^(?!\\1[ \\t]|[ \\t]*$)",
280
271
  "contentName": "meta.type-signature.haskell",
281
272
  "beginCaptures": {
@@ -305,8 +296,8 @@
305
296
  "patterns": [
306
297
  {
307
298
  "name": "meta.record-field.type-declaration.haskell",
308
- "begin": "(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?<![\\p{Ll}_\\p{Lu}\\p{Lt}']))(?:(?:((?:(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*|(?:\\((?!--+\\))[\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']]+\\)))(?:(?:\\s*,\\s*)(?:(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*|(?:\\((?!--+\\))[\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']]+\\))))*))(?:\\s*((?<![\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']])(?:::|∷)(?![\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']]))))",
309
- "end": "(?=(?:(?:((?:(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*|(?:\\((?!--+\\))[\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']]+\\)))(?:(?:\\s*,\\s*)(?:(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*|(?:\\((?!--+\\))[\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']]+\\))))*))(?:\\s*((?<![\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']])(?:::|∷)(?![\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']]))))|})",
299
+ "begin": "(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?<![\\p{Ll}_\\p{Lu}\\p{Lt}']))(?:(?:((?:(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*|(?:\\((?!--+\\))(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"']))+\\)))(?:(?:\\s*,\\s*)(?:(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*|(?:\\((?!--+\\))(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"']))+\\))))*))(?:\\s*((?<!(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"'])))(?:::|∷)(?!(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"']))))))",
300
+ "end": "(?=(?:(?:((?:(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*|(?:\\((?!--+\\))(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"']))+\\)))(?:(?:\\s*,\\s*)(?:(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*|(?:\\((?!--+\\))(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"']))+\\))))*))(?:\\s*((?<!(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"'])))(?:::|∷)(?!(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"']))))))|})",
310
301
  "contentName": "meta.type-signature.haskell",
311
302
  "beginCaptures": {
312
303
  "1": {
@@ -354,11 +345,11 @@
354
345
  },
355
346
  {
356
347
  "name": "keyword.other.arrow.haskell",
357
- "match": "(?<![\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']])(->|→)(?![\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']])"
348
+ "match": "(?<!(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"'])))(->|→)(?!(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"'])))"
358
349
  },
359
350
  {
360
351
  "name": "keyword.other.big-arrow.haskell",
361
- "match": "(?<![\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']])(=>|⇒)(?![\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']])"
352
+ "match": "(?<!(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"'])))(=>|⇒)(?!(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"'])))"
362
353
  },
363
354
  {
364
355
  "include": "#operator"
@@ -880,7 +871,7 @@
880
871
  "patterns": [
881
872
  {
882
873
  "name": "string.quoted.single.haskell",
883
- "match": "(')((?:[\\ -\\[\\]-~]|\\\\(?:NUL|SOH|STX|ETX|EOT|ENQ|ACK|BEL|BS|HT|LF|VT|FF|CR|SO|SI|DLE|DC1|DC2|DC3|DC4|NAK|SYN|ETB|CAN|EM|SUB|ESC|FS|GS|RS|US|SP|DEL|[abfnrtv\\\\\\\"'\\&])|(?:\\\\o[0-7]+)|(?:\\\\x[0-9A-Fa-f]+)|(?:\\\\\\^[A-Z@\\[\\]\\\\^_])|[\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']]))(')",
874
+ "match": "(')((?:[\\ -\\[\\]-~]|\\\\(?:NUL|SOH|STX|ETX|EOT|ENQ|ACK|BEL|BS|HT|LF|VT|FF|CR|SO|SI|DLE|DC1|DC2|DC3|DC4|NAK|SYN|ETB|CAN|EM|SUB|ESC|FS|GS|RS|US|SP|DEL|[abfnrtv\\\\\\\"'\\&])|(?:\\\\o[0-7]+)|(?:\\\\x[0-9A-Fa-f]+)|(?:\\\\\\^[A-Z@\\[\\]\\\\^_])|(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"']))))(')",
884
875
  "captures": {
885
876
  "1": {
886
877
  "name": "punctuation.definition.string.begin.haskell"
@@ -902,7 +893,7 @@
902
893
  "scoped_type": {
903
894
  "patterns": [
904
895
  {
905
- "match": "\\(((?<paren>(?:[^\\(\\)]|\\(\\g<paren>\\))*)(?<![\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']])(?:::|∷)(?![\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']])(?<paren2>(?:[^\\(\\)]|\\(\\g<paren2>\\))*))\\)",
896
+ "match": "\\(((?<paren>(?:[^\\(\\)]|\\(\\g<paren>\\))*)(?<!(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"'])))(?:::|∷)(?!(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"'])))(?<paren2>(?:[^\\(\\)]|\\(\\g<paren2>\\))*))\\)",
906
897
  "captures": {
907
898
  "1": {
908
899
  "patterns": [
@@ -914,7 +905,7 @@
914
905
  }
915
906
  },
916
907
  {
917
- "match": "((?<![\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']])(?:::|∷)(?![\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']]))(.*?)(?=(?<![\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']])(<-|=)(?![\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']])|$)",
908
+ "match": "((?<!(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"'])))(?:::|∷)(?!(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"']))))(.*?)(?=(?<!(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"'])))(<-|=)(?!(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"'])))|$)",
918
909
  "captures": {
919
910
  "1": {
920
911
  "name": "keyword.other.double-colon.haskell"
@@ -934,7 +925,7 @@
934
925
  "scoped_type_override": {
935
926
  "patterns": [
936
927
  {
937
- "match": "^([ \\t]*)(?:(?:((?:(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*|(?:\\((?!--+\\))[\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']]+\\)))(?:(?:\\s*,\\s*)(?:(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*|(?:\\((?!--+\\))[\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']]+\\))))*))(?:\\s*((?<![\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']])(?:::|∷)(?![\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']]))))(.*)(?<![\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']])(<-|=)(?![\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']])",
928
+ "match": "^([ \\t]*)(?:(?:((?:(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*|(?:\\((?!--+\\))(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"']))+\\)))(?:(?:\\s*,\\s*)(?:(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*|(?:\\((?!--+\\))(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"']))+\\))))*))(?:\\s*((?<!(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"'])))(?:::|∷)(?!(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"']))))))(.*)(?<!(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"'])))(<-|=)(?!(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"'])))",
938
929
  "captures": {
939
930
  "2": {
940
931
  "patterns": [
@@ -1000,7 +991,7 @@
1000
991
  "patterns": [
1001
992
  {
1002
993
  "name": "keyword.operator.haskell",
1003
- "match": "[\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']]+"
994
+ "match": "(?:[\\p{S}\\p{P}](?<![(),;\\[\\]`{}_\"']))+"
1004
995
  }
1005
996
  ]
1006
997
  },
@@ -21,13 +21,13 @@
21
21
  "name": "JavaScript",
22
22
  "patterns": [
23
23
  {
24
- "begin": "(?<!\\.)\\b(import)(?:\\s*$|(?!\\s*[:(])\\b)",
24
+ "begin": "(?<!\\.)\\b(import)(?!\\s*[:(])\\b",
25
25
  "beginCaptures": {
26
26
  "1": {
27
27
  "name": "keyword.control.js"
28
28
  }
29
29
  },
30
- "end": "(?=;)",
30
+ "end": "(?=;|$)",
31
31
  "name": "meta.import.js",
32
32
  "patterns": [
33
33
  {
@@ -45,38 +45,32 @@
45
45
  },
46
46
  "patterns": [
47
47
  {
48
- "match": "\\bdefault\\b",
49
- "name": "variable.language.default.js"
50
- },
51
- {
52
- "include": "#comments"
53
- },
54
- {
55
- "begin": "\\bas\\b",
56
- "beginCaptures": {
57
- "0": {
58
- "name": "keyword.control.js"
59
- }
60
- },
61
- "end": "(?=[;}]|/\\*)|(?:(\\bdefault\\b|\\*)|([a-zA-Z_$][\\w$]*))",
62
- "endCaptures": {
48
+ "match": "(?x)\n(?: \\b(default)\\b | \\b([a-zA-Z_$][\\w$]*)\\b)\n\\s*\n(\\b as \\b)\n\\s*\n(?: (\\b default \\b | \\*) | \\b([a-zA-Z_$][\\w$]*)\\b)",
49
+ "captures": {
63
50
  "1": {
64
- "name": "invalid.illegal.js"
51
+ "name": "variable.language.default.js"
65
52
  },
66
53
  "2": {
54
+ "name": "variable.other.module.js"
55
+ },
56
+ "3": {
57
+ "name": "keyword.control.js"
58
+ },
59
+ "4": {
60
+ "name": "invalid.illegal.js"
61
+ },
62
+ "5": {
67
63
  "name": "variable.other.module-alias.js"
68
64
  }
69
- },
70
- "patterns": [
71
- {
72
- "include": "#comments"
73
- }
74
- ]
65
+ }
75
66
  },
76
67
  {
77
68
  "match": ",",
78
69
  "name": "meta.delimiter.object.comma.js"
79
70
  },
71
+ {
72
+ "include": "#comments"
73
+ },
80
74
  {
81
75
  "match": "\\b([a-zA-Z_$][\\w$]*)\\b",
82
76
  "name": "variable.other.module.js"
@@ -84,30 +78,36 @@
84
78
  ]
85
79
  },
86
80
  {
87
- "match": "\\bdefault\\b",
88
- "name": "variable.language.default.js"
89
- },
90
- {
91
- "match": "\\*",
92
- "name": "variable.language.import-all.js"
93
- },
94
- {
95
- "begin": "\\bas\\b",
96
- "beginCaptures": {
97
- "0": {
98
- "name": "keyword.control.js"
99
- }
100
- },
101
- "end": "(?=[;}]|/\\*)|(?:(\\bdefault\\b|\\*)|([a-zA-Z_$][\\w$]*))",
102
- "endCaptures": {
81
+ "match": "(?x)\n(?: \\b(default)\\b | (\\*) | \\b([a-zA-Z_$][\\w$]*)\\b)\n\\s*\n(\\b as \\b)\n\\s*\n(?: (\\b default \\b | \\*) | \\b([a-zA-Z_$][\\w$]*)\\b)",
82
+ "captures": {
103
83
  "1": {
104
- "name": "invalid.illegal.js"
84
+ "name": "variable.language.default.js"
105
85
  },
106
86
  "2": {
87
+ "name": "variable.language.import-all.js"
88
+ },
89
+ "3": {
90
+ "name": "variable.other.module.js"
91
+ },
92
+ "4": {
93
+ "name": "keyword.control.js"
94
+ },
95
+ "5": {
96
+ "name": "invalid.illegal.js"
97
+ },
98
+ "6": {
107
99
  "name": "variable.other.module-alias.js"
108
100
  }
109
101
  }
110
102
  },
103
+ {
104
+ "match": "\\*",
105
+ "name": "variable.language.import-all.js"
106
+ },
107
+ {
108
+ "match": "\\b(default)\\b",
109
+ "name": "variable.language.default.js"
110
+ },
111
111
  {
112
112
  "include": "#strings"
113
113
  },
@@ -119,7 +119,7 @@
119
119
  "name": "keyword.control.js"
120
120
  },
121
121
  {
122
- "match": "\\b([a-zA-Z_$][\\w$]*)\\b",
122
+ "match": "\\b([a-zA-Z_$][\\w$]*)\\b(?=.*\\bfrom\\b)",
123
123
  "name": "variable.other.module.js"
124
124
  },
125
125
  {
@@ -290,7 +290,7 @@
290
290
  ]
291
291
  },
292
292
  {
293
- "match": "(?<!\\.)\\b(?<!\\$)(super|this|arguments)(?!\\s*:|\\$)\\b",
293
+ "match": "(?:(?<=\\.{3})|(?<!\\.)\\b)(?<!\\$)(super|this|arguments)(?!\\s*:|\\$)\\b",
294
294
  "name": "variable.language.js"
295
295
  },
296
296
  {
@@ -824,7 +824,7 @@
824
824
  "begin": "(?<!\\.)\\b(const)(?!\\s*:)\\b",
825
825
  "beginCaptures": {
826
826
  "1": {
827
- "name": "storage.modifier.js"
827
+ "name": "storage.type.const.js"
828
828
  }
829
829
  },
830
830
  "end": "(\\bof\\b|\\bin\\b)|(;)|(=)|(?<![,{])\\n",
@@ -1762,7 +1762,7 @@
1762
1762
  "name": "other.meta.jsdoc"
1763
1763
  },
1764
1764
  {
1765
- "match": "(?x)\n(?:(?<=@param)|(?<=@arg)|(?<=@argument)|(?<=@type))\n\\s+\n({(?:\n \\* | # {*} any type\n \\? | # {?} unknown type\n\n (?:\n (?: # Check for a prefix\n \\? | # {?string} nullable type\n ! | # {!string} non-nullable type\n \\.{3} # {...string} variable number of parameters\n )?\n\n (?:\n (?:\n function # {function(string, number)} function type\n \\s*\n \\(\n \\s*\n (?:\n [a-zA-Z_$][\\w$]*\n (?:\n \\s*,\\s*\n [a-zA-Z_$][\\w$]*\n )*\n )?\n \\s*\n \\)\n (?: # {function(): string} function return type\n \\s*:\\s*\n [a-zA-Z_$][\\w$]*\n )?\n )?\n |\n (?:\n \\( # Opening bracket of multiple types with parenthesis {(string|number)}\n [a-zA-Z_$]+\n (?:\n (?:\n [\\w$]*\n (?:\\[\\])? # {(string[]|number)} type application, an array of strings or a number\n ) |\n \\.?<[\\w$]+(?:,\\s+[\\w$]+)*> # {Array<string>} or {Object<string, number>} type application (optional .)\n )\n (?:\n [\\.|~] # {Foo.bar} namespaced, {string|number} multiple, {Foo~bar} class-specific callback\n [a-zA-Z_$]+\n (?:\n (?:\n [\\w$]*\n (?:\\[\\])? # {(string|number[])} type application, a string or an array of numbers\n ) |\n \\.?<[\\w$]+(?:,\\s+[\\w$]+)*> # {Array<string>} or {Object<string, number>} type application (optional .)\n )\n )*\n \\) |\n [a-zA-Z_$]+\n (?:\n (?:\n [\\w$]*\n (?:\\[\\])? # {(string|number[])} type application, a string or an array of numbers\n ) |\n \\.?<[\\w$]+(?:,\\s+[\\w$]+)*> # {Array<string>} or {Object<string, number>} type application (optional .)\n )\n (?:\n [\\.|~] # {Foo.bar} namespaced, {string|number} multiple, {Foo~bar} class-specific callback\n [a-zA-Z_$]+\n (?:\n [\\w$]* |\n \\.?<[\\w$]+(?:,\\s+[\\w$]+)*> # {Array<string>} or {Object<string, number>} type application (optional .)\n )\n )*\n )\n )\n # Check for suffix\n (?:\\[\\])? # {string[]} type application, an array of strings\n =? # {string=} optional parameter\n )\n)})\n\\s+\n(\n \\[ # [foo] optional parameter\n \\s*\n (?:\n [a-zA-Z_$][\\w$]*\n (?:\n (?:\\[\\])? # Foo[].bar properties within an array\n \\. # Foo.Bar namespaced parameter\n [a-zA-Z_$][\\w$]*\n )*\n (?:\n \\s*\n = # [foo=bar] Default parameter value\n \\s*\n (?:\n [\\w$\\s]* | # [foo=bar] Unquoted\n \"[^\"]*\" | # [foo=\"bar\"] Double-quoted\n '[^']*' # [foo='bar'] Single-quoted\n )\n )?\n )\n \\s*\n \\] |\n (?:\n [a-zA-Z_$][\\w$]*\n (?:\n (?:\\[\\])? # Foo[].bar properties within an array\n \\. # Foo.Bar namespaced parameter\n [a-zA-Z_$][\\w$]*\n )*\n )?\n)\n\\s+\n(?:-\\s+)? # optional hyphen before the description\n((?:(?!\\*\\/).)*) # The type description",
1765
+ "match": "(?x)\n(?:(?<=@param)|(?<=@arg)|(?<=@argument)|(?<=@type))\n\\s+\n({(?:\n \\* | # {*} any type\n \\? | # {?} unknown type\n\n (?:\n (?: # Check for a prefix\n \\? | # {?string} nullable type\n ! | # {!string} non-nullable type\n \\.{3} # {...string} variable number of parameters\n [*?]? # {...*} Variable number of mixed types\n )?\n\n (?:\n (?:\n function # {function(string, number)} function type\n \\s*\n (?:\n (?:\n \\(\\s*\n \\.{3}[a-zA-Z_$][\\w$]+ # {function(...string)} variable number of parameters\n \\s*\\)\n )\n |\n (?:\n \\(\\s*\n (?:\n (?:\\?|!)? # {function(?string)} or function(!string)} nullable/non-nullable type\n [a-zA-Z_$][\\w$]+\n (?:\\[\\])? # {function(string[])} type application, an array of strings\n (?:\n (?:\n (?:\n \\s*,\\s*\n (?:\\?|!)? # {function(?string)} or function(!string)} nullable/non-nullable type\n [a-zA-Z_$][\\w$]+\n (?:\\[\\])? # {function(string[])} type application, an array of strings\n )*\n (?:\n \\s*,\\s*\n \\.{3}[a-zA-Z_$][\\w$]+ # {function(string, ...string)} variable number of parameters\n )?\n )\n |\n (?:\n =? # {function(string=)} optional parameter\n (?:\n (?<!=) # {function(string, string, number)} loop non-optional params\n \\s*,\\s*\n (?:\\?|!)? # {function(?string)} or function(!string)} nullable/non-nullable type\n [a-zA-Z_$][\\w$]+\n (?:\\[\\])? # {function(string[])} type application, an array of strings\n =?\n )*\n (?:\n (?<==) # {function(string, string=, number=)} loop optional params\n \\s*,\\s*\n (?:\\?|!)? # {function(?string)} or function(!string)} nullable/non-nullable type\n [a-zA-Z_$][\\w$]+\n (?:\\[\\])? # {function(string[])} type application, an array of strings\n =\n )*\n )\n )\n )?\n \\s*\\)\n )\n )\n (?: # {function(): string} function return type\n \\s*:\\s*\n [a-zA-Z_$][\\w$]*\n )?\n )?\n |\n (?:\n \\( # Opening bracket of multiple types with parenthesis {(string|number)}\n [a-zA-Z_$]+\n (?:\n (?:\n [\\w$]*\n (?:\\[\\])? # {(string[]|number)} type application, an array of strings or a number\n ) |\n \\.?<[\\w$]+(?:,\\s+[\\w$]+)*> # {Array<string>} or {Object<string, number>} type application (optional .)\n )\n (?:\n [\\.|~] # {Foo.bar} namespaced, {string|number} multiple, {Foo~bar} class-specific callback\n [a-zA-Z_$]+\n (?:\n (?:\n [\\w$]*\n (?:\\[\\])? # {(string|number[])} type application, a string or an array of numbers\n ) |\n \\.?<[\\w$]+(?:,\\s+[\\w$]+)*> # {Array<string>} or {Object<string, number>} type application (optional .)\n )\n )*\n \\) |\n [a-zA-Z_$]+\n (?:\n (?:\n [\\w$]*\n (?:\\[\\])? # {(string|number[])} type application, a string or an array of numbers\n ) |\n \\.?<[\\w$]+(?:,\\s+[\\w$]+)*> # {Array<string>} or {Object<string, number>} type application (optional .)\n )\n (?:\n [\\.|~] # {Foo.bar} namespaced, {string|number} multiple, {Foo~bar} class-specific callback\n [a-zA-Z_$]+\n (?:\n [\\w$]* |\n \\.?<[\\w$]+(?:,\\s+[\\w$]+)*> # {Array<string>} or {Object<string, number>} type application (optional .)\n )\n )*\n )\n )\n # Check for suffix\n (?:\\[\\])? # {string[]} type application, an array of strings\n =? # {string=} optional parameter\n )\n)})\n\\s+\n(\n \\[ # [foo] optional parameter\n \\s*\n (?:\n [a-zA-Z_$][\\w$]*\n (?:\n (?:\\[\\])? # Foo[].bar properties within an array\n \\. # Foo.Bar namespaced parameter\n [a-zA-Z_$][\\w$]*\n )*\n (?:\n \\s*\n = # [foo=bar] Default parameter value\n \\s*\n (?:\n [\\w$\\s]* | # [foo=bar] Unquoted\n \"[^\"]*\" | # [foo=\"bar\"] Double-quoted\n '[^']*' | # [foo='bar'] Single-quoted\n {[^{}]*} | # [foo={a:1}] Object literal\n \\[ [^\\[\\]]* \\] # [foo=[1,2]] Array literal\n )\n )?\n )\n \\s*\n \\] |\n (?:\n [a-zA-Z_$][\\w$]*\n (?:\n (?:\\[\\])? # Foo[].bar properties within an array\n \\. # Foo.Bar namespaced parameter\n [a-zA-Z_$][\\w$]*\n )*\n )?\n)\n\\s+\n(?:-\\s+)? # optional hyphen before the description\n((?:(?!\\*\\/).)*) # The type description",
1766
1766
  "captures": {
1767
1767
  "0": {
1768
1768
  "name": "other.meta.jsdoc"
@@ -1784,7 +1784,7 @@
1784
1784
  }
1785
1785
  },
1786
1786
  {
1787
- "match": "(?x)\n({(?:\n \\* | # {*} any type\n \\? | # {?} unknown type\n\n (?:\n (?: # Check for a prefix\n \\? | # {?string} nullable type\n ! | # {!string} non-nullable type\n \\.{3} # {...string} variable number of parameters\n )?\n\n (?:\n (?:\n function # {function(string, number)} function type\n \\s*\n \\(\n \\s*\n (?:\n [a-zA-Z_$][\\w$]*\n (?:\n \\s*,\\s*\n [a-zA-Z_$][\\w$]*\n )*\n )?\n \\s*\n \\)\n (?: # {function(): string} function return type\n \\s*:\\s*\n [a-zA-Z_$][\\w$]*\n )?\n )?\n |\n (?:\n \\( # Opening bracket of multiple types with parenthesis {(string|number)}\n [a-zA-Z_$]+\n (?:\n [\\w$]* |\n \\.?<[\\w$]+(?:,\\s+[\\w$]+)*> # {Array<string>} or {Object<string, number>} type application (optional .)\n )\n (?:\n [\\.|~] # {Foo.bar} namespaced, {string|number} multiple, {Foo~bar} class-specific callback\n [a-zA-Z_$]+\n (?:\n [\\w$]* |\n \\.?<[\\w$]+(?:,\\s+[\\w$]+)*> # {Array<string>} or {Object<string, number>} type application (optional .)\n )\n )*\n \\) |\n [a-zA-Z_$]+\n (?:\n [\\w$]* |\n \\.?<[\\w$]+(?:,\\s+[\\w$]+)*> # {Array<string>} or {Object<string, number>} type application (optional .)\n )\n (?:\n [\\.|~] # {Foo.bar} namespaced, {string|number} multiple, {Foo~bar} class-specific callback\n [a-zA-Z_$]+\n (?:\n [\\w$]* |\n \\.?<[\\w$]+(?:,\\s+[\\w$]+)*> # {Array<string>} or {Object<string, number>} type application (optional .)\n )\n )*\n )\n )\n # Check for suffix\n (?:\\[\\])? # {string[]} type application, an array of strings\n =? # {string=} optional parameter\n )\n)})\n\\s+\n(?:-\\s+)? # optional hyphen before the description\n((?:(?!\\*\\/).)*) # The type description",
1787
+ "match": "(?x)\n({(?:\n \\* | # {*} any type\n \\? | # {?} unknown type\n\n (?:\n (?: # Check for a prefix\n \\? | # {?string} nullable type\n ! | # {!string} non-nullable type\n \\.{3} # {...string} variable number of parameters\n [*?]? # {...*} Variable number of mixed types\n )?\n\n (?:\n (?:\n function # {function(string, number)} function type\n \\s*\n (?:\n (?:\n \\(\\s*\n \\.{3}[a-zA-Z_$][\\w$]+ # {function(...string)} variable number of parameters\n \\s*\\)\n )\n |\n (?:\n \\(\\s*\n (?:\n (?:\\?|!)? # {function(?string)} or function(!string)} nullable/non-nullable type\n [a-zA-Z_$][\\w$]+\n (?:\\[\\])? # {function(string[])} type application, an array of strings\n (?:\n (?:\n (?:\n \\s*,\\s*\n (?:\\?|!)? # {function(?string)} or function(!string)} nullable/non-nullable type\n [a-zA-Z_$][\\w$]+\n (?:\\[\\])? # {function(string[])} type application, an array of strings\n )*\n (?:\n \\s*,\\s*\n \\.{3}[a-zA-Z_$][\\w$]+ # {function(string, ...string)} variable number of parameters\n )?\n )\n |\n (?:\n =? # {function(string=)} optional parameter\n (?:\n (?<!=) # {function(string, string, number)} loop non-optional params\n \\s*,\\s*\n (?:\\?|!)? # {function(?string)} or function(!string)} nullable/non-nullable type\n [a-zA-Z_$][\\w$]+\n (?:\\[\\])? # {function(string[])} type application, an array of strings\n =?\n )*\n (?:\n (?<==) # {function(string, string=, number=)} loop optional params\n \\s*,\\s*\n (?:\\?|!)? # {function(?string)} or function(!string)} nullable/non-nullable type\n [a-zA-Z_$][\\w$]+\n (?:\\[\\])? # {function(string[])} type application, an array of strings\n =\n )*\n )\n )\n )?\n \\s*\\)\n )\n )\n (?: # {function(): string} function return type\n \\s*:\\s*\n [a-zA-Z_$][\\w$]*\n )?\n )?\n |\n (?:\n \\( # Opening bracket of multiple types with parenthesis {(string|number)}\n [a-zA-Z_$]+\n (?:\n (?:\n [\\w$]*\n (?:\\[\\])? # {(string[]|number)} type application, an array of strings or a number\n ) |\n \\.?<[\\w$]+(?:,\\s+[\\w$]+)*> # {Array<string>} or {Object<string, number>} type application (optional .)\n )\n (?:\n [\\.|~] # {Foo.bar} namespaced, {string|number} multiple, {Foo~bar} class-specific callback\n [a-zA-Z_$]+\n (?:\n (?:\n [\\w$]*\n (?:\\[\\])? # {(string|number[])} type application, a string or an array of numbers\n ) |\n \\.?<[\\w$]+(?:,\\s+[\\w$]+)*> # {Array<string>} or {Object<string, number>} type application (optional .)\n )\n )*\n \\) |\n [a-zA-Z_$]+\n (?:\n (?:\n [\\w$]*\n (?:\\[\\])? # {(string|number[])} type application, a string or an array of numbers\n ) |\n \\.?<[\\w$]+(?:,\\s+[\\w$]+)*> # {Array<string>} or {Object<string, number>} type application (optional .)\n )\n (?:\n [\\.|~] # {Foo.bar} namespaced, {string|number} multiple, {Foo~bar} class-specific callback\n [a-zA-Z_$]+\n (?:\n [\\w$]* |\n \\.?<[\\w$]+(?:,\\s+[\\w$]+)*> # {Array<string>} or {Object<string, number>} type application (optional .)\n )\n )*\n )\n )\n # Check for suffix\n (?:\\[\\])? # {string[]} type application, an array of strings\n =? # {string=} optional parameter\n )\n)})\n\\s+\n(?:-\\s+)? # optional hyphen before the description\n((?:(?!\\*\\/).)*) # The type description",
1788
1788
  "captures": {
1789
1789
  "0": {
1790
1790
  "name": "other.meta.jsdoc"
@@ -662,7 +662,7 @@
662
662
  "name": "slot.mask",
663
663
  "patterns": [
664
664
  {
665
- "match": "\\b(static|private|public|async)\\b",
665
+ "match": "\\b(static|private|public|async|self)\\b",
666
666
  "name": "keyword"
667
667
  },
668
668
  {
@@ -10,9 +10,10 @@
10
10
  "pod6",
11
11
  "nqp"
12
12
  ],
13
+ "firstLineMatch": "(?x) ^ \\s* (?: use \\s v6 | =begin \\s pod | =comment | \\#!(?: perl6|/.*perl6 (?! \\S)) | my\\s*class )",
13
14
  "patterns": [
14
15
  {
15
- "begin": "^(=)(finish)",
16
+ "begin": "^\\s*(=)(finish)",
16
17
  "beginCaptures": {
17
18
  "1": {
18
19
  "name": "storage.modifier.block.finish.perl6fe"
@@ -32,7 +33,7 @@
32
33
  "include": "#comment-block-delimited"
33
34
  },
34
35
  {
35
- "begin": "^(=)(?:(para)|(for)\\s+(\\w+))",
36
+ "begin": "^\\s*(=)(?:(para)|(for)\\s+(\\w+))",
36
37
  "beginCaptures": {
37
38
  "1": {
38
39
  "name": "storage.modifier.block.paragraph.perl6fe"
@@ -44,7 +45,7 @@
44
45
  "name": "entity.other.attribute-name.paragraph.perl6fe"
45
46
  }
46
47
  },
47
- "end": "^\\s*$",
48
+ "end": "(?=^\\s*$|^\\s*=\\w+.*$)",
48
49
  "contentName": "comment.block.paragraph.perl6fe",
49
50
  "patterns": [
50
51
  {
@@ -71,93 +72,349 @@
71
72
  "name": "meta.documentation.block.declarator.perl6fe"
72
73
  },
73
74
  {
74
- "begin": "#`\\(\\(",
75
+ "begin": "\\s*#`\\(\\(\\(",
76
+ "end": "\\)\\)\\)",
77
+ "name": "comment.multiline.hash-tick.triple_paren.perl6fe",
78
+ "patterns": [
79
+ {
80
+ "begin": "\\(\\(\\(",
81
+ "end": "\\)\\)\\)",
82
+ "name": "comment.internal.triple_paren.perl6fe"
83
+ }
84
+ ]
85
+ },
86
+ {
87
+ "begin": "\\s*#`\\[\\[\\[",
88
+ "end": "\\]\\]\\]",
89
+ "name": "comment.multiline.hash-tick.triple_bracket.perl6fe",
90
+ "patterns": [
91
+ {
92
+ "begin": "\\[\\[\\[",
93
+ "end": "\\]\\]\\]",
94
+ "name": "comment.internal.triple_bracket.perl6fe"
95
+ }
96
+ ]
97
+ },
98
+ {
99
+ "begin": "\\s*#`\\{\\{\\{",
100
+ "end": "\\}\\}\\}",
101
+ "name": "comment.multiline.hash-tick.triple_brace.perl6fe",
102
+ "patterns": [
103
+ {
104
+ "begin": "\\{\\{\\{",
105
+ "end": "\\}\\}\\}",
106
+ "name": "comment.internal.triple_brace.perl6fe"
107
+ }
108
+ ]
109
+ },
110
+ {
111
+ "begin": "\\s*#`<<<",
112
+ "end": ">>>",
113
+ "name": "comment.multiline.hash-tick.triple_angle.perl6fe",
114
+ "patterns": [
115
+ {
116
+ "begin": "<<<",
117
+ "end": ">>>",
118
+ "name": "comment.internal.triple_angle.perl6fe"
119
+ }
120
+ ]
121
+ },
122
+ {
123
+ "begin": "\\s*#`<<",
124
+ "end": ">>",
125
+ "name": "comment.multiline.hash-tick.double_angle.perl6fe",
126
+ "patterns": [
127
+ {
128
+ "begin": "<<",
129
+ "end": ">>",
130
+ "name": "comment.internal.double_angle.perl6fe"
131
+ }
132
+ ]
133
+ },
134
+ {
135
+ "begin": "\\s*#`\\(\\(",
75
136
  "end": "\\)\\)",
76
- "name": "comment.multiline.hash-tick.doubleparens.perl6fe",
137
+ "name": "comment.multiline.hash-tick.double_paren.perl6fe",
77
138
  "patterns": [
78
139
  {
79
140
  "begin": "\\(\\(",
80
141
  "end": "\\)\\)",
81
- "name": "comment.internal.doubleparens.perl6fe"
142
+ "name": "comment.internal.double_paren.perl6fe"
143
+ }
144
+ ]
145
+ },
146
+ {
147
+ "begin": "\\s*#`\\[\\[",
148
+ "end": "\\]\\]",
149
+ "name": "comment.multiline.hash-tick.double_bracket.perl6fe",
150
+ "patterns": [
151
+ {
152
+ "begin": "\\[\\[",
153
+ "end": "\\]\\]",
154
+ "name": "comment.internal.double_bracket.perl6fe"
155
+ }
156
+ ]
157
+ },
158
+ {
159
+ "begin": "\\s*#`{{",
160
+ "end": "}}",
161
+ "name": "comment.multiline.hash-tick.double_brace.perl6fe",
162
+ "patterns": [
163
+ {
164
+ "begin": "{{",
165
+ "end": "}}",
166
+ "name": "comment.internal.double_brace.perl6fe"
167
+ }
168
+ ]
169
+ },
170
+ {
171
+ "begin": "\\s*#`{",
172
+ "end": "}",
173
+ "name": "comment.multiline.hash-tick.brace.perl6fe",
174
+ "patterns": [
175
+ {
176
+ "begin": "{",
177
+ "end": "}",
178
+ "name": "comment.internal.brace.perl6fe"
179
+ }
180
+ ]
181
+ },
182
+ {
183
+ "begin": "\\s*#`<",
184
+ "end": ">",
185
+ "name": "comment.multiline.hash-tick.angle.perl6fe",
186
+ "patterns": [
187
+ {
188
+ "begin": "<",
189
+ "end": ">",
190
+ "name": "comment.internal.angle.perl6fe"
82
191
  }
83
192
  ]
84
193
  },
85
194
  {
86
- "begin": "#`\\(",
195
+ "begin": "\\s*#`\\(",
87
196
  "end": "\\)",
88
- "name": "comment.multiline.hash-tick.parens.perl6fe",
197
+ "name": "comment.multiline.hash-tick.paren.perl6fe",
89
198
  "patterns": [
90
199
  {
91
200
  "begin": "\\(",
92
201
  "end": "\\)",
93
- "name": "comment.internal.parens.perl6fe"
202
+ "name": "comment.internal.paren.perl6fe"
94
203
  }
95
204
  ]
96
205
  },
97
206
  {
98
- "begin": "#`\\[",
207
+ "begin": "\\s*#`\\[",
99
208
  "end": "\\]",
100
- "name": "comment.multiline.hash-tick.brackets.perl6fe",
209
+ "name": "comment.multiline.hash-tick.bracket.perl6fe",
101
210
  "patterns": [
102
211
  {
103
212
  "begin": "\\[",
104
213
  "end": "\\]",
105
- "name": "comment.internal.brackets.perl6fe"
214
+ "name": "comment.internal.bracket.perl6fe"
106
215
  }
107
216
  ]
108
217
  },
109
218
  {
110
- "begin": "#`\\{\\{",
111
- "end": "\\}\\}",
112
- "name": "comment.multiline.hash-tick.doublebraces.perl6fe",
219
+ "begin": "\\s*#`“",
220
+ "end": "",
221
+ "name": "comment.multiline.hash-tick.left_double_right_double.perl6fe",
113
222
  "patterns": [
114
223
  {
115
- "begin": "\\{\\{",
116
- "end": "\\}\\}",
117
- "name": "comment.internal.doublebraces.perl6fe"
224
+ "begin": "",
225
+ "end": "",
226
+ "name": "comment.internal.left_double_right_double.perl6fe"
118
227
  }
119
228
  ]
120
229
  },
121
230
  {
122
- "begin": "#`\\{",
123
- "end": "\\}",
124
- "name": "comment.multiline.hash-tick.braces.perl6fe",
231
+ "begin": "\\s*#`‘",
232
+ "end": "",
233
+ "name": "comment.multiline.hash-tick.left_single_right_single.perl6fe",
125
234
  "patterns": [
126
235
  {
127
- "begin": "\\{",
128
- "end": "\\}",
129
- "name": "comment.internal.braces.perl6fe"
236
+ "begin": "",
237
+ "end": "",
238
+ "name": "comment.internal.left_single_right_single.perl6fe"
239
+ }
240
+ ]
241
+ },
242
+ {
243
+ "begin": "\\s*#`「",
244
+ "end": "」",
245
+ "name": "comment.multiline.hash-tick.fw_cornerbracket.perl6fe",
246
+ "patterns": [
247
+ {
248
+ "begin": "「",
249
+ "end": "」",
250
+ "name": "comment.internal.fw_cornerbracket.perl6fe"
251
+ }
252
+ ]
253
+ },
254
+ {
255
+ "begin": "\\s*#`「",
256
+ "end": "」",
257
+ "name": "comment.multiline.hash-tick.hw_cornerbracket.perl6fe",
258
+ "patterns": [
259
+ {
260
+ "begin": "「",
261
+ "end": "」",
262
+ "name": "comment.internal.hw_cornerbracket.perl6fe"
263
+ }
264
+ ]
265
+ },
266
+ {
267
+ "begin": "\\s*#`«",
268
+ "end": "»",
269
+ "name": "comment.multiline.hash-tick.chevron.perl6fe",
270
+ "patterns": [
271
+ {
272
+ "begin": "«",
273
+ "end": "»",
274
+ "name": "comment.internal.chevron.perl6fe"
275
+ }
276
+ ]
277
+ },
278
+ {
279
+ "begin": "\\s*#`⟅",
280
+ "end": "⟆",
281
+ "name": "comment.multiline.hash-tick.s-shaped-bag-delimiter.perl6fe",
282
+ "patterns": [
283
+ {
284
+ "begin": "⟅",
285
+ "end": "⟆",
286
+ "name": "comment.internal.s-shaped-bag-delimiter.perl6fe"
287
+ }
288
+ ]
289
+ },
290
+ {
291
+ "begin": "“",
292
+ "beginCaptures": {
293
+ "0": {
294
+ "name": "punctuation.definition.string.begin.perl6fe"
295
+ }
296
+ },
297
+ "end": "”",
298
+ "endCaptures": {
299
+ "0": {
300
+ "name": "punctuation.definition.string.end.perl6fe"
301
+ }
302
+ },
303
+ "name": "string.quoted.left_double_right_double.perl6fe",
304
+ "patterns": [
305
+ {
306
+ "match": "\\\\[“”abtnfre\\\\\\{\\}]",
307
+ "name": "constant.character.escape.perl6fe"
308
+ },
309
+ {
310
+ "include": "#interpolation"
311
+ },
312
+ {
313
+ "include": "source.quoting.perl6fe#q_left_double_right_double_string_content"
314
+ }
315
+ ]
316
+ },
317
+ {
318
+ "begin": "(?<=\\W|^)‘",
319
+ "beginCaptures": {
320
+ "0": {
321
+ "name": "punctuation.definition.string.begin.perl6fe"
322
+ }
323
+ },
324
+ "end": "’",
325
+ "endCaptures": {
326
+ "0": {
327
+ "name": "punctuation.definition.string.end.perl6fe"
328
+ }
329
+ },
330
+ "name": "string.quoted.single.left_single_right_single.perl6fe",
331
+ "patterns": [
332
+ {
333
+ "match": "\\\\[‘’\\\\]",
334
+ "name": "constant.character.escape.perl6fe"
335
+ },
336
+ {
337
+ "include": "source.quoting.perl6fe#q_left_single_right_single_string_content"
130
338
  }
131
339
  ]
132
340
  },
133
341
  {
134
- "begin": "#`\\「",
135
- "end": "\\」",
136
- "name": "comment.multiline.hash-tick.fwcornerbracket.perl6fe",
342
+ "begin": "(?<=\\W|^)'",
343
+ "beginCaptures": {
344
+ "0": {
345
+ "name": "punctuation.definition.string.begin.perl6fe"
346
+ }
347
+ },
348
+ "end": "'",
349
+ "endCaptures": {
350
+ "0": {
351
+ "name": "punctuation.definition.string.end.perl6fe"
352
+ }
353
+ },
354
+ "name": "string.quoted.single.single.perl6fe",
137
355
  "patterns": [
138
356
  {
139
- "begin": "\\「",
140
- "end": "\\」",
141
- "name": "comment.internal.fwcornerbracket.perl6fe"
357
+ "match": "\\\\['\\\\]",
358
+ "name": "constant.character.escape.perl6fe"
359
+ },
360
+ {
361
+ "include": "source.quoting.perl6fe#q_single_string_content"
142
362
  }
143
363
  ]
144
364
  },
145
365
  {
146
- "begin": "#`\\「",
147
- "end": "\\」",
148
- "name": "comment.multiline.hash-tick.hwcornerbracket.perl6fe",
366
+ "begin": "\"",
367
+ "beginCaptures": {
368
+ "0": {
369
+ "name": "punctuation.definition.string.begin.perl6fe"
370
+ }
371
+ },
372
+ "end": "\"",
373
+ "endCaptures": {
374
+ "0": {
375
+ "name": "punctuation.definition.string.end.perl6fe"
376
+ }
377
+ },
378
+ "name": "string.quoted.double.perl6fe",
149
379
  "patterns": [
150
380
  {
151
- "begin": "\\「",
152
- "end": "\\」",
153
- "name": "comment.internal.hwcornerbracket.perl6fe"
381
+ "match": "\\\\[\"abtnfre\\\\\\{\\}]",
382
+ "name": "constant.character.escape.perl6fe"
383
+ },
384
+ {
385
+ "include": "#interpolation"
386
+ },
387
+ {
388
+ "include": "source.quoting.perl6fe#q_double_string_content"
154
389
  }
155
390
  ]
156
391
  },
157
392
  {
158
- "begin": "(?<!\\+\\<)(?<=\\<)(?!\\=)(?=[^\\<]*[^\\<\\}]\\>)",
159
- "end": "(?<!\\})(?=\\>)",
160
- "name": "string.array.words.perl6fe"
393
+ "begin": "",
394
+ "beginCaptures": {
395
+ "0": {
396
+ "name": "punctuation.definition.string.begin.perl6fe"
397
+ }
398
+ },
399
+ "end": "”",
400
+ "endCaptures": {
401
+ "0": {
402
+ "name": "punctuation.definition.string.end.perl6fe"
403
+ }
404
+ },
405
+ "name": "string.quoted.right_double_right_double.perl6fe",
406
+ "patterns": [
407
+ {
408
+ "match": "\\\\[”abtnfre\\\\\\{\\}]",
409
+ "name": "constant.character.escape.perl6fe"
410
+ },
411
+ {
412
+ "include": "#interpolation"
413
+ },
414
+ {
415
+ "include": "source.quoting.perl6fe#q_right_double_right_double_string_content"
416
+ }
417
+ ]
161
418
  },
162
419
  {
163
420
  "begin": "(^[ \\t]+)?(?=#)",
@@ -200,7 +457,29 @@
200
457
  "include": "#p5_regex"
201
458
  },
202
459
  {
203
- "begin": "(?x) (?<=^|[\\=,\\(\\[\\~]|when) \\s* (?:(m|rx)((?:(?<!\\:P5)\\s*:\\w+(?!\\s*\\:P5))*))? \\s* (\\/)",
460
+ "match": "(?x)\n(?<=\n ^\n | ^\\s\n | [\\s\\(] [^\\p{Nd}\\p{L}]\n)\n([/]) # Solidus\n(.*?) # Regex contents\n(?: (?<!\\\\)|(?<=\\\\\\\\) ) (/) # Ending",
461
+ "captures": {
462
+ "1": {
463
+ "name": "punctuation.definition.regexp.perl6fe"
464
+ },
465
+ "2": {
466
+ "name": "string.regexp.perl6fe",
467
+ "patterns": [
468
+ {
469
+ "include": "#interpolation"
470
+ },
471
+ {
472
+ "include": "source.regexp.perl6fe"
473
+ }
474
+ ]
475
+ },
476
+ "3": {
477
+ "name": "punctuation.definition.regexp.perl6fe"
478
+ }
479
+ }
480
+ },
481
+ {
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",
204
483
  "beginCaptures": {
205
484
  "1": {
206
485
  "name": "string.regexp.construct.perl6fe"
@@ -212,7 +491,7 @@
212
491
  "name": "punctuation.definition.regexp.perl6fe"
213
492
  }
214
493
  },
215
- "end": "(?<!\\\\)(\\/)",
494
+ "end": "(?x) (?: (?<!\\\\)|(?<=\\\\\\\\) ) (\\3)",
216
495
  "endCaptures": {
217
496
  "1": {
218
497
  "name": "punctuation.definition.regexp.perl6fe"
@@ -229,7 +508,7 @@
229
508
  ]
230
509
  },
231
510
  {
232
- "begin": "(?<![\\w\\/])(m|rx)((?:\\s*:\\w+)*)\\s*(\\{)",
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",
233
512
  "beginCaptures": {
234
513
  "1": {
235
514
  "name": "string.regexp.construct.perl6fe"
@@ -241,7 +520,7 @@
241
520
  "name": "punctuation.definition.regexp.perl6fe"
242
521
  }
243
522
  },
244
- "end": "(?<!\\\\)(\\})",
523
+ "end": "(?x) (?: (?<!\\\\)|(?<=\\\\\\\\) ) (/)",
245
524
  "endCaptures": {
246
525
  "1": {
247
526
  "name": "punctuation.definition.regexp.perl6fe"
@@ -258,7 +537,7 @@
258
537
  ]
259
538
  },
260
539
  {
261
- "begin": "(?<![\\w\\/])(m|rx)((?:\\s*:\\w+)*)\\s*(\\[)",
540
+ "begin": "(?<![\\w\\/])(m|rx)((?:\\s*:\\w+)*)\\s*(\\{)",
262
541
  "beginCaptures": {
263
542
  "1": {
264
543
  "name": "string.regexp.construct.perl6fe"
@@ -270,7 +549,7 @@
270
549
  "name": "punctuation.definition.regexp.perl6fe"
271
550
  }
272
551
  },
273
- "end": "(?<!\\\\)(\\])",
552
+ "end": "(?<!\\\\)(\\})",
274
553
  "endCaptures": {
275
554
  "1": {
276
555
  "name": "punctuation.definition.regexp.perl6fe"
@@ -287,7 +566,7 @@
287
566
  ]
288
567
  },
289
568
  {
290
- "begin": "(?<![\\w\\/])(m|rx)((?:\\s*:\\w+)*)\\s*(\\|)",
569
+ "begin": "(?<![\\w\\/])(m|rx)((?:\\s*:\\w+)*)\\s*(\\[)",
291
570
  "beginCaptures": {
292
571
  "1": {
293
572
  "name": "string.regexp.construct.perl6fe"
@@ -299,7 +578,7 @@
299
578
  "name": "punctuation.definition.regexp.perl6fe"
300
579
  }
301
580
  },
302
- "end": "(?<!\\\\)(\\|)",
581
+ "end": "(?<!\\\\)(\\])",
303
582
  "endCaptures": {
304
583
  "1": {
305
584
  "name": "punctuation.definition.regexp.perl6fe"
@@ -316,484 +595,125 @@
316
595
  ]
317
596
  },
318
597
  {
319
- "begin": "(?<![\\w\\/])(m|rx)((?:\\s*:\\w+)*)\\s*(\\!)",
598
+ "begin": "(?<=\\W|^)",
320
599
  "beginCaptures": {
321
- "1": {
322
- "name": "string.regexp.construct.perl6fe"
323
- },
324
- "2": {
325
- "name": "entity.name.section.adverb.regexp.perl6fe"
326
- },
327
- "3": {
328
- "name": "punctuation.definition.regexp.perl6fe"
600
+ "0": {
601
+ "name": "punctuation.definition.string.begin.perl6fe"
329
602
  }
330
603
  },
331
- "end": "(?<!\\\\)(\\!)",
604
+ "end": "",
332
605
  "endCaptures": {
333
- "1": {
334
- "name": "punctuation.definition.regexp.perl6fe"
606
+ "0": {
607
+ "name": "punctuation.definition.string.end.perl6fe"
335
608
  }
336
609
  },
337
- "contentName": "string.regexp.perl6fe",
610
+ "name": "string.quoted.single.perl6fe",
338
611
  "patterns": [
339
612
  {
340
- "include": "#interpolation"
341
- },
342
- {
343
- "include": "source.regexp.perl6fe"
613
+ "include": "source.quoting.perl6fe#q_hw_cornerbracket_string_content"
344
614
  }
345
615
  ]
346
616
  },
347
617
  {
348
- "begin": "(?<![\\w\\/])(m|rx)((?:\\s*:\\w+)*)\\s*(~)",
618
+ "include": "#shellquotes"
619
+ },
620
+ {
621
+ "begin": "(?x) (?: ( qq|qqx|qqw ) \\s* ( (?:\\s*:\\w+)*\\s*: (?: to|heredoc ) )\\s* | (qqto) \\s* ( (?:\\s*:\\w+)* )\\s* ) / (\\S+) /",
349
622
  "beginCaptures": {
350
623
  "1": {
351
- "name": "string.regexp.construct.perl6fe"
624
+ "name": "string.quoted.construct.perl6fe"
352
625
  },
353
626
  "2": {
354
- "name": "entity.name.section.adverb.regexp.perl6fe"
627
+ "name": "support.function.adverb.perl6fe"
355
628
  },
356
629
  "3": {
357
- "name": "punctuation.definition.regexp.perl6fe"
630
+ "name": "string.quoted.construct.perl6fe"
631
+ },
632
+ "4": {
633
+ "name": "support.function.adverb.perl6fe"
634
+ },
635
+ "5": {
636
+ "name": "entity.other.attribute-name.heredoc.delimiter.perl6fe"
358
637
  }
359
638
  },
360
- "end": "(?<!\\\\)(\\~)",
639
+ "end": "\\s*\\5",
361
640
  "endCaptures": {
362
- "1": {
363
- "name": "punctuation.definition.regexp.perl6fe"
641
+ "0": {
642
+ "name": "entity.other.attribute-name.heredoc.delimiter.perl6fe"
364
643
  }
365
644
  },
366
- "contentName": "string.regexp.perl6fe",
367
645
  "patterns": [
368
646
  {
369
647
  "include": "#interpolation"
370
648
  },
371
649
  {
372
- "include": "source.regexp.perl6fe"
373
- }
374
- ]
375
- },
376
- {
377
- "begin": "(?<=\\W|^)'",
378
- "beginCaptures": {
379
- "0": {
380
- "name": "punctuation.definition.string.begin.perl6fe"
381
- }
382
- },
383
- "end": "'",
384
- "endCaptures": {
385
- "0": {
386
- "name": "punctuation.definition.string.end.perl6fe"
387
- }
388
- },
389
- "name": "string.quoted.single.perl6fe",
390
- "patterns": [
391
- {
392
- "match": "\\\\['\\\\]",
393
- "name": "constant.character.escape.perl6fe"
394
- }
395
- ]
396
- },
397
- {
398
- "begin": "(?<=\\W|^)‘",
399
- "beginCaptures": {
400
- "0": {
401
- "name": "punctuation.definition.string.begin.perl6fe"
402
- }
403
- },
404
- "end": "’",
405
- "endCaptures": {
406
- "0": {
407
- "name": "punctuation.definition.string.end.perl6fe"
408
- }
409
- },
410
- "name": "string.quoted.single.perl6fe",
411
- "patterns": [
412
- {
413
- "match": "\\\\[‘’\\\\]",
414
- "name": "constant.character.escape.perl6fe"
415
- }
416
- ]
417
- },
418
- {
419
- "begin": "\"",
420
- "beginCaptures": {
421
- "0": {
422
- "name": "punctuation.definition.string.begin.perl6fe"
423
- }
424
- },
425
- "end": "\"",
426
- "endCaptures": {
427
- "0": {
428
- "name": "punctuation.definition.string.end.perl6fe"
429
- }
430
- },
431
- "name": "string.quoted.double.perl6fe",
432
- "patterns": [
433
- {
434
- "match": "\\\\[abtnfre\"\\\\\\{\\}]",
435
- "name": "constant.character.escape.perl6fe"
436
- },
437
- {
438
- "include": "#interpolation"
439
- },
440
- {
441
- "include": "#special_variables"
442
- }
443
- ]
444
- },
445
- {
446
- "begin": "“",
447
- "beginCaptures": {
448
- "0": {
449
- "name": "punctuation.definition.string.begin.perl6fe"
450
- }
451
- },
452
- "end": "”",
453
- "endCaptures": {
454
- "0": {
455
- "name": "punctuation.definition.string.end.perl6fe"
456
- }
457
- },
458
- "name": "string.quoted.double.perl6fe",
459
- "patterns": [
460
- {
461
- "match": "\\\\[abtnfre“”\\\\\\{\\}]",
462
- "name": "constant.character.escape.perl6fe"
463
- },
464
- {
465
- "include": "#interpolation"
466
- },
467
- {
468
- "include": "#special_variables"
469
- }
470
- ]
471
- },
472
- {
473
- "begin": "”",
474
- "beginCaptures": {
475
- "0": {
476
- "name": "punctuation.definition.string.begin.perl6fe"
477
- }
478
- },
479
- "end": "”",
480
- "endCaptures": {
481
- "0": {
482
- "name": "punctuation.definition.string.end.perl6fe"
483
- }
484
- },
485
- "name": "string.quoted.double.perl6fe",
486
- "patterns": [
487
- {
488
- "match": "\\\\[abtnfre”“\\\\\\{\\}]",
489
- "name": "constant.character.escape.perl6fe"
490
- },
491
- {
492
- "include": "#interpolation"
493
- },
494
- {
495
- "include": "#special_variables"
496
- }
497
- ]
498
- },
499
- {
500
- "include": "#shellquotes"
501
- },
502
- {
503
- "include": "#heredocs"
504
- },
505
- {
506
- "begin": "(?x) (q{1,2}(?:x|w|ww|v|s|a|h|f|c|b|p)?|Q(?:x|w|ww|v|s|a|h|f|c|b|p)?) ((?: \\s*:(?: x|exec|w|words|ww|quotewords|v|val|q|single|double| s|scalar|a|array|h|hash|f|function|c|closure|b|blackslash| regexp|substr|trans|codes|p|path ) )*) \\s*({{)",
507
- "beginCaptures": {
508
- "1": {
509
- "name": "string.quoted.q.operator.perl6fe"
510
- },
511
- "2": {
512
- "name": "support.function.quote.adverb.perl6fe"
513
- },
514
- "3": {
515
- "name": "punctuation.definition.string.perl6fe"
516
- }
517
- },
518
- "end": "}}",
519
- "endCaptures": {
520
- "0": {
521
- "name": "punctuation.definition.string.perl6fe"
522
- }
523
- },
524
- "contentName": "string.quoted.q.double.brace.perl6fe",
525
- "patterns": [
526
- {
527
- "include": "#q_brace_string_content"
528
- }
529
- ]
530
- },
531
- {
532
- "begin": "(?x) (q{1,2}(?:x|w|ww|v|s|a|h|f|c|b|p)?|Q(?:x|w|ww|v|s|a|h|f|c|b|p)?) ((?: \\s*:(?: x|exec|w|words|ww|quotewords|v|val|q|single|double| s|scalar|a|array|h|hash|f|function|c|closure|b|blackslash| regexp|substr|trans|codes|p|path ) )*) \\s*(<<)",
533
- "beginCaptures": {
534
- "1": {
535
- "name": "string.quoted.q.operator.perl6fe"
536
- },
537
- "2": {
538
- "name": "support.function.quote.adverb.perl6fe"
539
- },
540
- "3": {
541
- "name": "punctuation.definition.string.perl6fe"
542
- }
543
- },
544
- "end": ">>",
545
- "endCaptures": {
546
- "0": {
547
- "name": "punctuation.definition.string.perl6fe"
548
- }
549
- },
550
- "contentName": "string.quoted.q.double.angle.perl6fe",
551
- "patterns": [
552
- {
553
- "include": "#q_angle_string_content"
554
- }
555
- ]
556
- },
557
- {
558
- "begin": "(?x) (q{1,2}(?:x|w|ww|v|s|a|h|f|c|b|p)?|Q(?:x|w|ww|v|s|a|h|f|c|b|p)?) ((?: \\s*:(?: x|exec|w|words|ww|quotewords|v|val|q|single|double| s|scalar|a|array|h|hash|f|function|c|closure|b|blackslash| regexp|substr|trans|codes|p|path ) )*) \\s*(\\(\\()",
559
- "beginCaptures": {
560
- "1": {
561
- "name": "string.quoted.q.operator.perl6fe"
562
- },
563
- "2": {
564
- "name": "support.function.quote.adverb.perl6fe"
565
- },
566
- "3": {
567
- "name": "punctuation.definition.string.perl6fe"
568
- }
569
- },
570
- "end": "\\)\\)",
571
- "endCaptures": {
572
- "0": {
573
- "name": "punctuation.definition.string.perl6fe"
574
- }
575
- },
576
- "contentName": "string.quoted.q.double.paren.perl6fe",
577
- "patterns": [
578
- {
579
- "include": "#q_paren_string_content"
580
- }
581
- ]
582
- },
583
- {
584
- "begin": "(?x) (q{1,2}(?:x|w|ww|v|s|a|h|f|c|b|p)?|Q(?:x|w|ww|v|s|a|h|f|c|b|p)?) ((?: \\s*:(?: x|exec|w|words|ww|quotewords|v|val|q|single|double| s|scalar|a|array|h|hash|f|function|c|closure|b|blackslash| regexp|substr|trans|codes|p|path ) )*) \\s*(\\[\\[)",
585
- "beginCaptures": {
586
- "1": {
587
- "name": "string.quoted.q.operator.perl6fe"
588
- },
589
- "2": {
590
- "name": "support.function.quote.adverb.perl6fe"
591
- },
592
- "3": {
593
- "name": "punctuation.definition.string.perl6fe"
594
- }
595
- },
596
- "end": "\\]\\]",
597
- "endCaptures": {
598
- "0": {
599
- "name": "punctuation.definition.string.perl6fe"
600
- }
601
- },
602
- "contentName": "string.quoted.q.double.bracket.perl6fe",
603
- "patterns": [
604
- {
605
- "include": "#q_bracket_string_content"
606
- }
607
- ]
608
- },
609
- {
610
- "begin": "(?x) (q{1,2}(?:x|w|ww|v|s|a|h|f|c|b|p)?|Q(?:x|w|ww|v|s|a|h|f|c|b|p)?) ((?: \\s*:(?: x|exec|w|words|ww|quotewords|v|val|q|single|double| s|scalar|a|array|h|hash|f|function|c|closure|b|blackslash| regexp|substr|trans|codes|p|path ) )*) \\s*({)",
611
- "beginCaptures": {
612
- "1": {
613
- "name": "string.quoted.q.operator.perl6fe"
614
- },
615
- "2": {
616
- "name": "support.function.quote.adverb.perl6fe"
617
- },
618
- "3": {
619
- "name": "punctuation.definition.string.perl6fe"
620
- }
621
- },
622
- "end": "}",
623
- "endCaptures": {
624
- "0": {
625
- "name": "punctuation.definition.string.perl6fe"
626
- }
627
- },
628
- "contentName": "string.quoted.q.single.brace.perl6fe",
629
- "patterns": [
630
- {
631
- "include": "#q_brace_string_content"
632
- }
633
- ]
634
- },
635
- {
636
- "begin": "(?x) (q{1,2}(?:x|w|ww|v|s|a|h|f|c|b|p)?|Q(?:x|w|ww|v|s|a|h|f|c|b|p)?) ((?: \\s*:(?: x|exec|w|words|ww|quotewords|v|val|q|single|double| s|scalar|a|array|h|hash|f|function|c|closure|b|blackslash| regexp|substr|trans|codes|p|path ) )*) \\s*(<)",
637
- "beginCaptures": {
638
- "1": {
639
- "name": "string.quoted.q.operator.perl6fe"
640
- },
641
- "2": {
642
- "name": "support.function.quote.adverb.perl6fe"
643
- },
644
- "3": {
645
- "name": "punctuation.definition.string.perl6fe"
646
- }
647
- },
648
- "end": ">",
649
- "endCaptures": {
650
- "0": {
651
- "name": "punctuation.definition.string.perl6fe"
652
- }
653
- },
654
- "contentName": "string.quoted.q.single.angle.perl6fe",
655
- "patterns": [
656
- {
657
- "include": "#q_angle_string_content"
658
- }
659
- ]
660
- },
661
- {
662
- "begin": "(?x) (q{1,2}(?:x|w|ww|v|s|a|h|f|c|b|p)?|Q(?:x|w|ww|v|s|a|h|f|c|b|p)?) ((?: \\s*:(?: x|exec|w|words|ww|quotewords|v|val|q|single|double| s|scalar|a|array|h|hash|f|function|c|closure|b|blackslash| regexp|substr|trans|codes|p|path ) )*) \\s*(/)",
663
- "beginCaptures": {
664
- "1": {
665
- "name": "string.quoted.q.operator.perl6fe"
666
- },
667
- "2": {
668
- "name": "support.function.quote.adverb.perl6fe"
669
- },
670
- "3": {
671
- "name": "punctuation.definition.string.perl6fe"
672
- }
673
- },
674
- "end": "/",
675
- "endCaptures": {
676
- "0": {
677
- "name": "punctuation.definition.string.perl6fe"
678
- }
679
- },
680
- "contentName": "string.quoted.q.single.slash.perl6fe",
681
- "patterns": [
682
- {
683
- "include": "#q_slash_string_content"
684
- }
685
- ]
686
- },
687
- {
688
- "begin": "(?x) (q{1,2}(?:x|w|ww|v|s|a|h|f|c|b|p)?|Q(?:x|w|ww|v|s|a|h|f|c|b|p)?) ((?: \\s*:(?: x|exec|w|words|ww|quotewords|v|val|q|single|double| s|scalar|a|array|h|hash|f|function|c|closure|b|blackslash| regexp|substr|trans|codes|p|path ) )*) \\s*(\\()",
689
- "beginCaptures": {
690
- "1": {
691
- "name": "string.quoted.q.operator.perl6fe"
692
- },
693
- "2": {
694
- "name": "support.function.quote.adverb.perl6fe"
695
- },
696
- "3": {
697
- "name": "punctuation.definition.string.perl6fe"
698
- }
699
- },
700
- "end": "\\)",
701
- "endCaptures": {
702
- "0": {
703
- "name": "punctuation.definition.string.perl6fe"
704
- }
705
- },
706
- "contentName": "string.quoted.q.single.paren.perl6fe",
707
- "patterns": [
708
- {
709
- "include": "#q_paren_string_content"
710
- }
711
- ]
712
- },
713
- {
714
- "begin": "(?x) (q{1,2}(?:x|w|ww|v|s|a|h|f|c|b|p)?|Q(?:x|w|ww|v|s|a|h|f|c|b|p)?) ((?: \\s*:(?: x|exec|w|words|ww|quotewords|v|val|q|single|double| s|scalar|a|array|h|hash|f|function|c|closure|b|blackslash| regexp|substr|trans|codes|p|path ) )*) \\s*(\\[)",
715
- "beginCaptures": {
716
- "1": {
717
- "name": "string.quoted.q.operator.perl6fe"
718
- },
719
- "2": {
720
- "name": "support.function.quote.adverb.perl6fe"
721
- },
722
- "3": {
723
- "name": "punctuation.definition.string.perl6fe"
724
- }
725
- },
726
- "end": "\\]",
727
- "endCaptures": {
728
- "0": {
729
- "name": "punctuation.definition.string.perl6fe"
730
- }
731
- },
732
- "contentName": "string.quoted.q.single.bracket.perl6fe",
733
- "patterns": [
650
+ "begin": "(?<=/)",
651
+ "end": "\\n",
652
+ "patterns": [
653
+ {
654
+ "include": "$self"
655
+ }
656
+ ],
657
+ "name": "meta.heredoc.continuation.perl6fe"
658
+ },
734
659
  {
735
- "include": "#q_bracket_string_content"
660
+ "match": "(?x) ^ (?: . | \\n )* $",
661
+ "name": "string.quoted.qq.heredoc.perl6fe"
736
662
  }
737
- ]
663
+ ],
664
+ "name": "meta.heredoc.perl6fe"
738
665
  },
739
666
  {
740
- "begin": "(?x) (q{1,2}(?:x|w|ww|v|s|a|h|f|c|b|p)?|Q(?:x|w|ww|v|s|a|h|f|c|b|p)?) ((?: \\s*:(?: x|exec|w|words|ww|quotewords|v|val|q|single|double| s|scalar|a|array|h|hash|f|function|c|closure|b|blackslash| regexp|substr|trans|codes|p|path ) )*) \\s*(')",
667
+ "begin": "(?x) (?: ( [qQ](?!/)|qw|qww|qx|qqx ) \\s* ( (?:\\s*:\\w+)*\\s*: (?: to|heredoc ) )\\s* | (qto|Qto) \\s* ( (?:\\s*:\\w+)* )\\s* ) / (\\S+) /",
741
668
  "beginCaptures": {
742
669
  "1": {
743
- "name": "string.quoted.q.operator.perl6fe"
670
+ "name": "string.quoted.construct.perl6fe"
744
671
  },
745
672
  "2": {
746
- "name": "support.function.quote.adverb.perl6fe"
673
+ "name": "support.function.adverb.perl6fe"
747
674
  },
748
675
  "3": {
749
- "name": "punctuation.definition.string.perl6fe"
750
- }
751
- },
752
- "end": "'",
753
- "endCaptures": {
754
- "0": {
755
- "name": "punctuation.definition.string.perl6fe"
756
- }
757
- },
758
- "contentName": "string.quoted.q.single.apostrophe.perl6fe",
759
- "patterns": [
760
- {
761
- "include": "#q_single_string_content"
762
- }
763
- ]
764
- },
765
- {
766
- "begin": "(?x) (q{1,2}(?:x|w|ww|v|s|a|h|f|c|b|p)?|Q(?:x|w|ww|v|s|a|h|f|c|b|p)?) ((?: \\s*:(?: x|exec|w|words|ww|quotewords|v|val|q|single|double| s|scalar|a|array|h|hash|f|function|c|closure|b|blackslash| regexp|substr|trans|codes|p|path ) )*) \\s*(\")",
767
- "beginCaptures": {
768
- "1": {
769
- "name": "string.quoted.q.operator.perl6fe"
676
+ "name": "string.quoted.construct.perl6fe"
770
677
  },
771
- "2": {
772
- "name": "support.function.quote.adverb.perl6fe"
678
+ "4": {
679
+ "name": "support.function.adverb.perl6fe"
773
680
  },
774
- "3": {
775
- "name": "punctuation.definition.string.perl6fe"
681
+ "5": {
682
+ "name": "entity.other.attribute-name.heredoc.delimiter.perl6fe"
776
683
  }
777
684
  },
778
- "end": "\"",
685
+ "end": "\\s*\\5",
779
686
  "endCaptures": {
780
687
  "0": {
781
- "name": "punctuation.definition.string.perl6fe"
688
+ "name": "entity.other.attribute-name.heredoc.delimiter.perl6fe"
782
689
  }
783
690
  },
784
- "contentName": "string.quoted.q.single.quote.perl6fe",
785
691
  "patterns": [
786
692
  {
787
- "include": "#q_double_string_content"
693
+ "begin": "(?<=/)",
694
+ "end": "\\n",
695
+ "patterns": [
696
+ {
697
+ "include": "$self"
698
+ }
699
+ ],
700
+ "name": "meta.heredoc.continuation.perl6fe"
701
+ },
702
+ {
703
+ "match": "(?x) ^ (?: . | \\n )* $",
704
+ "name": "string.quoted.q.heredoc.perl6fe"
788
705
  }
789
- ]
706
+ ],
707
+ "name": "meta.heredoc.perl6fe"
708
+ },
709
+ {
710
+ "include": "source.quoting.perl6fe"
790
711
  },
791
712
  {
792
- "match": "\\b\\$\\w+\\b",
793
- "name": "variable.other.perl6fe"
713
+ "include": "#variables"
794
714
  },
795
715
  {
796
- "begin": "(?x)(?<![%$&@]|\\w) (multi\\s+)? (macro|sub|submethod|method|multi|proto|only|category)\\s+ (!)?(?=\\w)",
716
+ "begin": "(?x) (?<![%$&@]|\\w) (?: (multi) \\s+ )? (macro|sub|submethod|method|multi|proto|only|category) \\s+ (!)? ( [^\\s\\(\\)\\{\\}]+ )",
797
717
  "beginCaptures": {
798
718
  "1": {
799
719
  "name": "storage.type.declarator.multi.perl6fe"
@@ -803,13 +723,37 @@
803
723
  },
804
724
  "3": {
805
725
  "name": "support.class.method.private.perl6fe"
726
+ },
727
+ "4": {
728
+ "patterns": [
729
+ {
730
+ "match": "(?x) ( [\\p{Digit}\\p{Alpha}'\\-_]+ ) \\b (:)? (\\w+ \\b )? (\\S+ )?",
731
+ "captures": {
732
+ "1": {
733
+ "name": "entity.name.function.perl6fe"
734
+ },
735
+ "2": {
736
+ "name": "punctuation.definition.function.adverb.perl6fe"
737
+ },
738
+ "3": {
739
+ "name": "support.type.class.adverb.perl6fe"
740
+ },
741
+ "4": {
742
+ "patterns": [
743
+ {
744
+ "include": "$self"
745
+ }
746
+ ]
747
+ }
748
+ }
749
+ }
750
+ ]
806
751
  }
807
752
  },
808
- "end": "\\s*(?=[\\(\\{])",
809
- "contentName": "entity.name.function.perl6fe"
753
+ "end": "(?=[\\(\\{\\s])"
810
754
  },
811
755
  {
812
- "begin": "(?<!\\.)(regex|rule|token)(?!\\s*=>)",
756
+ "begin": "(?<![\\.:])(regex|rule|token)(?!\\s*=>|\\S)",
813
757
  "beginCaptures": {
814
758
  "1": {
815
759
  "name": "storage.type.declare.regexp.named.perl6fe"
@@ -824,7 +768,11 @@
824
768
  "name": "meta.regexp.named.perl6fe",
825
769
  "patterns": [
826
770
  {
827
- "match": "\\w+",
771
+ "match": "TOP",
772
+ "name": "entity.name.function.regexp.named.TOP.perl6fe"
773
+ },
774
+ {
775
+ "match": "[\\p{Digit}\\p{Alpha}'\\-_]+",
828
776
  "name": "entity.name.function.regexp.named.perl6fe"
829
777
  },
830
778
  {
@@ -840,10 +788,15 @@
840
788
  "name": "meta.regexp.named.adverb.perl6fe"
841
789
  },
842
790
  {
843
- "begin": "\\x{00AB}|\\<",
844
- "end": "(\\x{00BB}|\\>)(?=[\\s\\{])",
791
+ "begin": "<",
792
+ "end": "(?x) \\\\\\\\|(?<!\\\\) ( > ) (?=[\\s\\{])",
845
793
  "contentName": "string.array.words.perl6fe"
846
794
  },
795
+ {
796
+ "begin": "«",
797
+ "end": "(?x) \\\\\\\\|(?<!\\\\) ( » ) (?=[\\s\\{])",
798
+ "contentName": "string.array.words.chevron.perl6fe"
799
+ },
847
800
  {
848
801
  "begin": "\\(",
849
802
  "end": "(?<!\\\\)\\)",
@@ -896,19 +849,58 @@
896
849
  "name": "storage.modifier.declarator.perl6fe"
897
850
  },
898
851
  {
899
- "match": "([+\\-.*/]|\\|\\|)?(?<!\\=)=(?![\\>\\=\\~])",
852
+ "begin": "(?x) (?<= = | for ) \\s* ( < )",
853
+ "beginCaptures": {
854
+ "1": {
855
+ "name": "span.keyword.operator.array.words.perl6fe"
856
+ }
857
+ },
858
+ "end": "(?x) \\\\\\\\|(?<!\\\\) ( > )",
859
+ "endCaptures": {
860
+ "1": {
861
+ "name": "span.keyword.operator.array.words.perl6fe"
862
+ }
863
+ },
864
+ "contentName": "string.array.words.perl6fe",
865
+ "patterns": [
866
+ {
867
+ "include": "source.quoting.perl6fe#q_bracket_string_content"
868
+ }
869
+ ]
870
+ },
871
+ {
872
+ "match": "(?x) ( [+:\\-.*/] | \\|\\| )? (?<! = ) = (?! [>=~] )",
900
873
  "name": "storage.modifier.assignment.perl6fe"
901
874
  },
875
+ {
876
+ "begin": "(?x) (?<! \\+< | \\+\\s|\\+ ) \\s* (<) (?<! > ) (?= [^<]* (?: [^<] ) > )",
877
+ "beginCaptures": {
878
+ "1": {
879
+ "name": "span.keyword.operator.array.words.perl6fe"
880
+ }
881
+ },
882
+ "end": "(?x) \\\\\\\\|(?<!\\\\) ( > )",
883
+ "endCaptures": {
884
+ "1": {
885
+ "name": "span.keyword.operator.array.words.perl6fe"
886
+ }
887
+ },
888
+ "contentName": "string.array.words.perl6fe"
889
+ },
902
890
  {
903
891
  "match": "\\b(for|loop|repeat|while|until|gather|given)(?!\\-)\\b",
904
892
  "name": "keyword.control.repeat.perl6fe"
905
893
  },
906
894
  {
907
- "match": "(?x)\\b(?<![\\-:])( take|do|when|next|last|redo|return|return-rw |contend|maybe|defer|default|exit |make|made|continue|break|goto|leave|supply |async|lift|await|start|react|whenever )(?!\\-)\\b",
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",
908
896
  "name": "keyword.control.flowcontrol.perl6fe"
909
897
  },
910
898
  {
911
- "match": "(?x)\\b(?<![\\-:])( is|does|as|but|trusts|of|returns|handles|where|augment|supersede )(?!\\-)\\b",
899
+ "match": "(?x)\n\\b (?<! [\\-:] )\n(\n make|made\n)\n(?! - ) \\b",
900
+ "name": "keyword.control.flowcontrol.regex.perl6fe"
901
+ },
902
+ {
903
+ "match": "(?x)\\b(?<![\\-:]) (is|does|as|but|trusts|of|returns|handles|where|augment|supersede) (?!\\-)\\b (?!\\s*=>)",
912
904
  "name": "storage.modifier.type.constraints.perl6fe"
913
905
  },
914
906
  {
@@ -916,11 +908,11 @@
916
908
  "name": "keyword.control.closure.trait.perl6fe"
917
909
  },
918
910
  {
919
- "match": "\\b(?<![\\-:])(die|fail|try|warn)(?!\\-)\\b",
911
+ "match": "\\b(?<![\\-:])(die|fail|try|warn)(?!\\-)\\b(?!\\s*=>)",
920
912
  "name": "keyword.control.control-handlers.perl6fe"
921
913
  },
922
914
  {
923
- "match": "(?x)\\b(?<![\\-:])( prec|irs|ofs|ors|export|deep |binary|unary|reparsed|rw|parsed |cached|readonly|defequiv|will |ref|copy|inline|tighter|looser |equiv|assoc|required )(?!\\-)\\b",
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*=>)",
924
916
  "name": "entity.name.type.trait.perl6fe"
925
917
  },
926
918
  {
@@ -932,7 +924,7 @@
932
924
  "name": "constant.language.boolean.perl6fe"
933
925
  },
934
926
  {
935
- "match": "(?x)\\b(?<![\\-:])( fatal|internals|MONKEY\\-TYPING|nqp| strict|trace|worries|invocant|parameters|experimental| cur|soft|variables|attributes|v6(?:\\.\\w)*|lib|Test|NativeCall )(?!\\-)\\b",
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*=>)",
936
928
  "name": "constant.language.pragma.perl6fe"
937
929
  },
938
930
  {
@@ -944,7 +936,7 @@
944
936
  }
945
937
  },
946
938
  {
947
- "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 )(?!\\:\\:)\\b",
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*=>)",
948
940
  "captures": {
949
941
  "1": {
950
942
  "name": "support.type.perl6fe"
@@ -954,6 +946,10 @@
954
946
  }
955
947
  }
956
948
  },
949
+ {
950
+ "match": "(?x) ( \\[ / \\] )",
951
+ "name": "keyword.operator.reduction.perl6fe"
952
+ },
957
953
  {
958
954
  "match": "(?<=\\w)(\\:)([DU_])\\b",
959
955
  "name": "meta.adverb.definedness.perl6fe",
@@ -971,22 +967,16 @@
971
967
  "name": "keyword.operator.word.perl6fe"
972
968
  },
973
969
  {
974
- "match": "(=)(~)(=)",
970
+ "match": "(=~=|≅)",
975
971
  "captures": {
976
972
  "1": {
977
973
  "name": "keyword.operator.approx-equal.perl6fe"
978
- },
979
- "2": {
980
- "name": "keyword.operator.approx-equal.perl6fe"
981
- },
982
- "3": {
983
- "name": "keyword.operator.approx-equal.perl6fe"
984
974
  }
985
975
  },
986
976
  "name": "meta.operator.non.ligature.perl6fe"
987
977
  },
988
978
  {
989
- "match": "(?x) <=> | => | --> | -> | \\+\\| | \\+\\+ | -- | \\*\\* | \\?\\?\\? | \\?\\? | \\!\\!\\! | \\!\\! | && | \\+\\^ | \\?\\^ | %% | \\+& | \\+< | \\+> | \\+\\^ | \\.\\.(?!\\.) | \\.\\.\\^ | \\^\\.\\. | \\^\\.\\.\\^ | \\?\\| | !=(?!\\=) | !==(?!\\=) | <=(?!>) | >= | === | == | =:= | ~~ | \\x{2245} | \\|\\| | \\^\\^ | \\/\\/ | := | ::= | \\.\\.\\.",
979
+ "match": "(?x) <== | <=> | => | --> | -> | \\+\\| | \\+\\+ | -- | \\*\\* | \\?\\?\\? | \\?\\? | \\!\\!\\! | \\!\\! | && | \\+\\^ | \\?\\^ | %% | \\+& | \\+< | \\+> | \\+\\^ | \\.\\.(?!\\.) | \\.\\.\\^ | \\^\\.\\. | \\^\\.\\.\\^ | \\?\\| | !=(?!\\=) | !==(?!\\=) | <=(?!>) | >= | === | == | =:= | ~~ | \\x{2245} | \\|\\| | \\^\\^ | \\/\\/ | := | ::= | \\.\\.\\.",
990
980
  "name": "keyword.operator.multi-symbol.perl6fe"
991
981
  },
992
982
  {
@@ -1012,22 +1002,32 @@
1012
1002
  "name": "constant.language.whatever.hack.perl6fe"
1013
1003
  },
1014
1004
  {
1015
- "include": "#variables"
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 )(?!\\-)\\b(?!\\s*=>)",
1006
+ "captures": {
1007
+ "1": {
1008
+ "name": "keyword.operator.colon.perl6fe"
1009
+ }
1010
+ },
1011
+ "name": "support.function.perl6fe"
1016
1012
  },
1017
1013
  {
1018
- "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 |normalize|pack|unpack|quotemeta|comb|samecase|sameaccent|chars |nfd|nfc|nfkd|nfkc|printf|sprintf|caller|evalfile|run|runinstead |nothing|want|bless|chr|ord|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|e|context|void |quasi|body|each|contains|rewinddir|subst|can|isa|flush|arity |assuming|rewind|callwith|callsame|nextwith|nextsame|attr|does-ok |eval-elsewhere|none|srand|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 |starts-with|ends-with|put|append|tail|\\x{03C0}|\\x{03C4}|\\x{212F} )(?!\\-)\\b(?!\\s*=>)",
1014
+ "match": "(?x)\\b(?<![\\-:]|\\\\)(?<=\\.) (e|d|f|s|l|r|w|rw|x|rwx|z|abspath|basename|extension|dirname |watch|is-absolute|parts|volume|path|is-relative|parent|child |resolve|dir) (?!\\-)\\b(?!\\s*=>)",
1019
1015
  "name": "support.function.perl6fe"
1020
1016
  },
1017
+ {
1018
+ "include": "#numbers"
1019
+ },
1021
1020
  {
1022
1021
  "match": "(?x) (?<!\\(|\\*)\\%| [\\^\\+><\\*\\!\\?~\\/\\|]| (?<!\\$)\\.| (?<!:):(?!:)| (?<=\\s)\\-(?=[\\s\\(\\{\\[])| (?<!\\w)[o\\x{2218}](?!\\w)",
1023
1022
  "name": "keyword.operator.generic.perl6fe"
1024
1023
  },
1025
1024
  {
1026
- "match": "(?x) ([a-zA-Z_À-ÿ\\$]) ( [a-zA-Z0-9_À-ÿ\\$]| [\\-'][a-zA-Z_À-ÿ\\$][a-zA-Z0-9_À-ÿ\\$] )*",
1027
- "name": "routine.name.perl6fe"
1025
+ "match": "(?x) (?<=^|\\W|\\s) ([\\w'\\-]+) \\s* (?= =>)",
1026
+ "name": "string.pair.key.perl6fe"
1028
1027
  },
1029
1028
  {
1030
- "include": "#numbers"
1029
+ "match": "(?x) \\b (?<!\\d) ([a-zA-Z_\\x{c0}-\\x{ff}\\$]) ( [a-zA-Z0-9_\\x{c0}-\\x{ff}\\$]| [\\-'][a-zA-Z_\\x{c0}-\\x{ff}\\$][a-zA-Z0-9_\\x{c0}-\\x{ff}\\$] )*",
1030
+ "name": "routine.name.perl6fe"
1031
1031
  },
1032
1032
  {
1033
1033
  "begin": "(?<=\\:)(\\d+)(<)",
@@ -1072,11 +1072,15 @@
1072
1072
  "numbers": {
1073
1073
  "patterns": [
1074
1074
  {
1075
- "match": "(?<=[=,;\\^\\s\\{\\[\\(\\/]|\\.\\.)0[bodx]\\w+",
1075
+ "match": "(?x)\n(?<= ^ | [=,;^\\s{\\[(/] | \\.\\. )\n[-−+]?\n0[bodx]\\w+",
1076
1076
  "name": "constant.numeric.radix.perl6fe"
1077
1077
  },
1078
1078
  {
1079
- "match": "(?x) (?<=[=,:;\\^\\s\\{\\[\\(\\/]|\\.\\.) (?:[\\+\\-])? (?: \\d+ (?:[\\_\\d]+\\d)? ) (?: \\. \\d+ (?:[\\_\\d]+\\d)? )? (?: e \\d+ (?:[\\_\\d]+\\d)? )?",
1079
+ "match": "(?x)\n (?<= ^ | [×÷*=,:;^\\s{\\[(/] | \\.\\. )\n (?: [+-−] )?\n(?:\n (?: \\d+ (?: [\\_\\d]+ \\d )? )\n (?: \\. \\d+ (?: [\\_\\d]+ \\d )? )?\n)\n(?: e (?:-|−)? \\d+ (?: [\\_\\d]+ \\d )? )?",
1080
+ "name": "constant.numeric.perl6fe"
1081
+ },
1082
+ {
1083
+ "match": "(?x)\n (?<= ^ | [×÷*=,:;^\\s{\\[(/] | \\.\\. )\n (?: [+-−] )?\n(?:\n (?: \\. \\d+ (?: [\\_\\d]+ \\d )? )\n)\n(?: e (?:-|−)? \\d+ (?: [\\_\\d]+ \\d )? )?",
1080
1084
  "name": "constant.numeric.perl6fe"
1081
1085
  }
1082
1086
  ]
@@ -1084,8 +1088,8 @@
1084
1088
  "comment-block-delimited": {
1085
1089
  "patterns": [
1086
1090
  {
1087
- "begin": "^(=)(begin)\\s+(\\w+)",
1088
- "end": "^(=)(end)\\s+(\\w+)",
1091
+ "begin": "^\\s*(=)(begin)\\s+(\\w+)",
1092
+ "end": "^\\s*(=)(end)\\s+(\\w+)",
1089
1093
  "captures": {
1090
1094
  "1": {
1091
1095
  "name": "storage.modifier.block.delimited.perl6fe"
@@ -1109,7 +1113,34 @@
1109
1113
  "comment-block-abbreviated": {
1110
1114
  "patterns": [
1111
1115
  {
1112
- "match": "^(=)(\\w+)\\s+(.+)$",
1116
+ "begin": "^\\s*(=)(head\\w*)\\s+(.+?)\\s*$",
1117
+ "end": "(?=^\\s*$|^\\s*=\\w+.*$)",
1118
+ "captures": {
1119
+ "1": {
1120
+ "name": "storage.modifier.block.abbreviated.perl6fe"
1121
+ },
1122
+ "2": {
1123
+ "name": "entity.other.attribute-name.block.abbreviated.perl6fe"
1124
+ },
1125
+ "3": {
1126
+ "name": "entity.name.section.abbreviated.perl6fe",
1127
+ "patterns": [
1128
+ {
1129
+ "include": "#comment-block-syntax"
1130
+ }
1131
+ ]
1132
+ }
1133
+ },
1134
+ "contentName": "entity.name.section.head.abbreviated.perl6fe",
1135
+ "patterns": [
1136
+ {
1137
+ "include": "#comment-block-syntax"
1138
+ }
1139
+ ]
1140
+ },
1141
+ {
1142
+ "begin": "^\\s*(=)(\\w+)\\s+(.+?)\\s*$",
1143
+ "end": "(?=^\\s*$|^\\s*=\\w+.*$)",
1113
1144
  "captures": {
1114
1145
  "1": {
1115
1146
  "name": "storage.modifier.block.abbreviated.perl6fe"
@@ -1118,17 +1149,169 @@
1118
1149
  "name": "entity.other.attribute-name.block.abbreviated.perl6fe"
1119
1150
  },
1120
1151
  "3": {
1121
- "name": "entity.name.section.abbreviated.perl6fe"
1152
+ "name": "entity.name.section.abbreviated.perl6fe",
1153
+ "patterns": [
1154
+ {
1155
+ "include": "#comment-block-syntax"
1156
+ }
1157
+ ]
1158
+ }
1159
+ },
1160
+ "contentName": "comment.block.abbreviated.perl6fe",
1161
+ "patterns": [
1162
+ {
1163
+ "include": "#comment-block-syntax"
1164
+ }
1165
+ ]
1166
+ }
1167
+ ]
1168
+ },
1169
+ "shellquotes": {
1170
+ "patterns": [
1171
+ {
1172
+ "begin": "([qQ]x)\\s*({{)",
1173
+ "beginCaptures": {
1174
+ "1": {
1175
+ "name": "string.quoted.q.shell.operator.perl6fe"
1176
+ },
1177
+ "2": {
1178
+ "name": "punctuation.section.embedded.shell.begin.perl6fe"
1179
+ }
1180
+ },
1181
+ "end": "}}",
1182
+ "endCaptures": {
1183
+ "0": {
1184
+ "name": "punctuation.section.embedded.shell.begin.perl6fe"
1185
+ }
1186
+ },
1187
+ "name": "meta.shell.quote.single.perl6fe",
1188
+ "patterns": [
1189
+ {
1190
+ "include": "source.quoting.perl6fe#q_single_string_content"
1191
+ }
1192
+ ]
1193
+ },
1194
+ {
1195
+ "begin": "([qQ]x)\\s*({)",
1196
+ "beginCaptures": {
1197
+ "1": {
1198
+ "name": "string.quoted.q.shell.operator.perl6fe"
1199
+ },
1200
+ "2": {
1201
+ "name": "punctuation.section.embedded.shell.begin.perl6fe"
1202
+ }
1203
+ },
1204
+ "end": "}",
1205
+ "endCaptures": {
1206
+ "0": {
1207
+ "name": "punctuation.section.embedded.shell.begin.perl6fe"
1208
+ }
1209
+ },
1210
+ "name": "meta.shell.quote.single.perl6fe",
1211
+ "patterns": [
1212
+ {
1213
+ "include": "source.quoting.perl6fe#q_single_string_content"
1214
+ }
1215
+ ]
1216
+ },
1217
+ {
1218
+ "begin": "([qQ]x)\\s*(\\[\\[)",
1219
+ "beginCaptures": {
1220
+ "1": {
1221
+ "name": "string.quoted.q.shell.operator.perl6fe"
1222
+ },
1223
+ "2": {
1224
+ "name": "punctuation.section.embedded.shell.begin.perl6fe"
1225
+ }
1226
+ },
1227
+ "end": "\\]\\]",
1228
+ "endCaptures": {
1229
+ "0": {
1230
+ "name": "punctuation.section.embedded.shell.begin.perl6fe"
1231
+ }
1232
+ },
1233
+ "name": "meta.shell.quote.single.perl6fe",
1234
+ "patterns": [
1235
+ {
1236
+ "include": "source.quoting.perl6fe#q_single_string_content"
1237
+ }
1238
+ ]
1239
+ },
1240
+ {
1241
+ "begin": "([Qq]x)\\s*(\\[)",
1242
+ "beginCaptures": {
1243
+ "1": {
1244
+ "name": "string.quoted.q.shell.operator.perl6fe"
1245
+ },
1246
+ "2": {
1247
+ "name": "punctuation.section.embedded.shell.begin.perl6fe"
1248
+ }
1249
+ },
1250
+ "end": "\\]",
1251
+ "endCaptures": {
1252
+ "0": {
1253
+ "name": "punctuation.section.embedded.shell.begin.perl6fe"
1254
+ }
1255
+ },
1256
+ "name": "meta.shell.quote.single.perl6fe",
1257
+ "patterns": [
1258
+ {
1259
+ "include": "source.quoting.perl6fe#q_single_string_content"
1260
+ }
1261
+ ]
1262
+ },
1263
+ {
1264
+ "begin": "([Qq]x)\\s*(\\|)",
1265
+ "beginCaptures": {
1266
+ "1": {
1267
+ "name": "string.quoted.q.shell.operator.perl6fe"
1268
+ },
1269
+ "2": {
1270
+ "name": "punctuation.section.embedded.shell.begin.perl6fe"
1271
+ }
1272
+ },
1273
+ "end": "\\|",
1274
+ "endCaptures": {
1275
+ "0": {
1276
+ "name": "punctuation.section.embedded.shell.begin.perl6fe"
1277
+ }
1278
+ },
1279
+ "name": "meta.shell.quote.single.perl6fe",
1280
+ "patterns": [
1281
+ {
1282
+ "include": "source.quoting.perl6fe#q_single_string_content"
1283
+ }
1284
+ ]
1285
+ },
1286
+ {
1287
+ "begin": "([Qq]x)\\s*(\\/)",
1288
+ "beginCaptures": {
1289
+ "1": {
1290
+ "name": "string.quoted.q.shell.operator.perl6fe"
1291
+ },
1292
+ "2": {
1293
+ "name": "punctuation.section.embedded.shell.begin.perl6fe"
1294
+ }
1295
+ },
1296
+ "end": "(?<!\\\\)\\/",
1297
+ "endCaptures": {
1298
+ "0": {
1299
+ "name": "punctuation.section.embedded.shell.begin.perl6fe"
1122
1300
  }
1123
1301
  },
1124
- "name": "meta.block.abbreviated.perl6fe"
1125
- }
1126
- ]
1127
- },
1128
- "shellquotes": {
1129
- "patterns": [
1302
+ "name": "meta.shell.quote.single.perl6fe",
1303
+ "patterns": [
1304
+ {
1305
+ "match": "\\\\\\/",
1306
+ "name": "constant.character.escape.perl6fe"
1307
+ },
1308
+ {
1309
+ "include": "source.quoting.perl6fe#q_single_string_content"
1310
+ }
1311
+ ]
1312
+ },
1130
1313
  {
1131
- "begin": "([qQ]x)\\s*({{)",
1314
+ "begin": "(qqx)\\s*({{)",
1132
1315
  "beginCaptures": {
1133
1316
  "1": {
1134
1317
  "name": "string.quoted.q.shell.operator.perl6fe"
@@ -1143,15 +1326,21 @@
1143
1326
  "name": "punctuation.section.embedded.shell.begin.perl6fe"
1144
1327
  }
1145
1328
  },
1146
- "name": "meta.shell.quote.single.perl6fe",
1329
+ "name": "meta.shell.quote.double.perl6fe",
1147
1330
  "patterns": [
1148
1331
  {
1149
- "include": "#q_single_string_content"
1332
+ "include": "#interpolation"
1333
+ },
1334
+ {
1335
+ "include": "#variables"
1336
+ },
1337
+ {
1338
+ "include": "source.shell"
1150
1339
  }
1151
1340
  ]
1152
1341
  },
1153
1342
  {
1154
- "begin": "([qQ]x)\\s*({)",
1343
+ "begin": "(qqx)\\s*({)",
1155
1344
  "beginCaptures": {
1156
1345
  "1": {
1157
1346
  "name": "string.quoted.q.shell.operator.perl6fe"
@@ -1166,15 +1355,21 @@
1166
1355
  "name": "punctuation.section.embedded.shell.begin.perl6fe"
1167
1356
  }
1168
1357
  },
1169
- "name": "meta.shell.quote.single.perl6fe",
1358
+ "name": "meta.shell.quote.double.perl6fe",
1170
1359
  "patterns": [
1171
1360
  {
1172
- "include": "#q_single_string_content"
1361
+ "include": "#interpolation"
1362
+ },
1363
+ {
1364
+ "include": "#variables"
1365
+ },
1366
+ {
1367
+ "include": "source.shell"
1173
1368
  }
1174
1369
  ]
1175
1370
  },
1176
1371
  {
1177
- "begin": "([qQ]x)\\s*(\\[\\[)",
1372
+ "begin": "(qqx)\\s*(\\[\\[)",
1178
1373
  "beginCaptures": {
1179
1374
  "1": {
1180
1375
  "name": "string.quoted.q.shell.operator.perl6fe"
@@ -1189,15 +1384,21 @@
1189
1384
  "name": "punctuation.section.embedded.shell.begin.perl6fe"
1190
1385
  }
1191
1386
  },
1192
- "name": "meta.shell.quote.single.perl6fe",
1387
+ "name": "meta.shell.quote.double.perl6fe",
1193
1388
  "patterns": [
1194
1389
  {
1195
- "include": "#q_single_string_content"
1390
+ "include": "#interpolation"
1391
+ },
1392
+ {
1393
+ "include": "#variables"
1394
+ },
1395
+ {
1396
+ "include": "source.shell"
1196
1397
  }
1197
1398
  ]
1198
1399
  },
1199
1400
  {
1200
- "begin": "([Qq]x)\\s*(\\[)",
1401
+ "begin": "(qqx)\\s*(\\[)",
1201
1402
  "beginCaptures": {
1202
1403
  "1": {
1203
1404
  "name": "string.quoted.q.shell.operator.perl6fe"
@@ -1212,15 +1413,21 @@
1212
1413
  "name": "punctuation.section.embedded.shell.begin.perl6fe"
1213
1414
  }
1214
1415
  },
1215
- "name": "meta.shell.quote.single.perl6fe",
1416
+ "name": "meta.shell.quote.double.perl6fe",
1216
1417
  "patterns": [
1217
1418
  {
1218
- "include": "#q_single_string_content"
1419
+ "include": "#interpolation"
1420
+ },
1421
+ {
1422
+ "include": "#variables"
1423
+ },
1424
+ {
1425
+ "include": "source.shell"
1219
1426
  }
1220
1427
  ]
1221
1428
  },
1222
1429
  {
1223
- "begin": "([Qq]x)\\s*(\\|)",
1430
+ "begin": "(qqx)\\s*(\\|)",
1224
1431
  "beginCaptures": {
1225
1432
  "1": {
1226
1433
  "name": "string.quoted.q.shell.operator.perl6fe"
@@ -1235,15 +1442,21 @@
1235
1442
  "name": "punctuation.section.embedded.shell.begin.perl6fe"
1236
1443
  }
1237
1444
  },
1238
- "name": "meta.shell.quote.single.perl6fe",
1445
+ "name": "meta.shell.quote.double.perl6fe",
1239
1446
  "patterns": [
1240
1447
  {
1241
- "include": "#q_single_string_content"
1448
+ "include": "#interpolation"
1449
+ },
1450
+ {
1451
+ "include": "#variables"
1452
+ },
1453
+ {
1454
+ "include": "source.shell"
1242
1455
  }
1243
1456
  ]
1244
1457
  },
1245
1458
  {
1246
- "begin": "([Qq]x)\\s*(\\/)",
1459
+ "begin": "(qqx)\\s*(\\/)",
1247
1460
  "beginCaptures": {
1248
1461
  "1": {
1249
1462
  "name": "string.quoted.q.shell.operator.perl6fe"
@@ -1258,338 +1471,464 @@
1258
1471
  "name": "punctuation.section.embedded.shell.begin.perl6fe"
1259
1472
  }
1260
1473
  },
1261
- "name": "meta.shell.quote.single.perl6fe",
1474
+ "name": "meta.shell.quote.double.perl6fe",
1262
1475
  "patterns": [
1263
1476
  {
1264
1477
  "match": "\\\\\\/",
1265
1478
  "name": "constant.character.escape.perl6fe"
1266
1479
  },
1267
1480
  {
1268
- "include": "#q_single_string_content"
1481
+ "include": "#interpolation"
1482
+ },
1483
+ {
1484
+ "include": "#variables"
1485
+ },
1486
+ {
1487
+ "include": "source.shell"
1269
1488
  }
1270
1489
  ]
1490
+ }
1491
+ ]
1492
+ },
1493
+ "comment-block-syntax": {
1494
+ "patterns": [
1495
+ {
1496
+ "include": "#comment-block-delimited"
1271
1497
  },
1272
1498
  {
1273
- "begin": "(qqx)\\s*({{)",
1499
+ "include": "#comment-block-abbreviated"
1500
+ },
1501
+ {
1502
+ "begin": "(?x) (U) (<<<)",
1274
1503
  "beginCaptures": {
1275
1504
  "1": {
1276
- "name": "string.quoted.q.shell.operator.perl6fe"
1505
+ "name": "support.function.pod.code.perl6fe"
1277
1506
  },
1278
1507
  "2": {
1279
- "name": "punctuation.section.embedded.shell.begin.perl6fe"
1508
+ "name": "punctuation.section.embedded.pod.code.perl6fe"
1280
1509
  }
1281
1510
  },
1282
- "end": "}}",
1511
+ "end": "(?x) (>>>)",
1283
1512
  "endCaptures": {
1284
- "0": {
1285
- "name": "punctuation.section.embedded.shell.begin.perl6fe"
1513
+ "1": {
1514
+ "name": "punctuation.section.embedded.pod.code.perl6fe"
1286
1515
  }
1287
1516
  },
1288
- "name": "meta.shell.quote.double.perl6fe",
1517
+ "contentName": "markup.underline.perl6fe",
1518
+ "name": "meta.pod.c.perl6fe",
1289
1519
  "patterns": [
1290
1520
  {
1291
- "include": "#interpolation"
1521
+ "include": "#comment-block-syntax"
1292
1522
  },
1293
1523
  {
1294
- "include": "source.shell"
1524
+ "include": "source.quoting.perl6fe#q_triple_angle_string_content"
1295
1525
  }
1296
1526
  ]
1297
1527
  },
1298
1528
  {
1299
- "begin": "(qqx)\\s*({)",
1529
+ "begin": "(?x) (I) (<<<)",
1300
1530
  "beginCaptures": {
1301
1531
  "1": {
1302
- "name": "string.quoted.q.shell.operator.perl6fe"
1532
+ "name": "support.function.pod.code.perl6fe"
1303
1533
  },
1304
1534
  "2": {
1305
- "name": "punctuation.section.embedded.shell.begin.perl6fe"
1535
+ "name": "punctuation.section.embedded.pod.code.perl6fe"
1306
1536
  }
1307
1537
  },
1308
- "end": "}",
1538
+ "end": "(?x) (>>>)",
1309
1539
  "endCaptures": {
1310
- "0": {
1311
- "name": "punctuation.section.embedded.shell.begin.perl6fe"
1540
+ "1": {
1541
+ "name": "punctuation.section.embedded.pod.code.perl6fe"
1312
1542
  }
1313
1543
  },
1314
- "name": "meta.shell.quote.double.perl6fe",
1544
+ "contentName": "markup.italic.perl6fe",
1545
+ "name": "meta.pod.c.perl6fe",
1315
1546
  "patterns": [
1316
1547
  {
1317
- "include": "#interpolation"
1548
+ "include": "#comment-block-syntax"
1318
1549
  },
1319
1550
  {
1320
- "include": "source.shell"
1551
+ "include": "source.quoting.perl6fe#q_triple_angle_string_content"
1321
1552
  }
1322
1553
  ]
1323
1554
  },
1324
1555
  {
1325
- "begin": "(qqx)\\s*(\\[\\[)",
1556
+ "begin": "(?x) (B) (<<<)",
1326
1557
  "beginCaptures": {
1327
1558
  "1": {
1328
- "name": "string.quoted.q.shell.operator.perl6fe"
1559
+ "name": "support.function.pod.code.perl6fe"
1329
1560
  },
1330
1561
  "2": {
1331
- "name": "punctuation.section.embedded.shell.begin.perl6fe"
1562
+ "name": "punctuation.section.embedded.pod.code.perl6fe"
1332
1563
  }
1333
1564
  },
1334
- "end": "\\]\\]",
1565
+ "end": "(?x) (>>>)",
1335
1566
  "endCaptures": {
1336
- "0": {
1337
- "name": "punctuation.section.embedded.shell.begin.perl6fe"
1567
+ "1": {
1568
+ "name": "punctuation.section.embedded.pod.code.perl6fe"
1569
+ }
1570
+ },
1571
+ "contentName": "markup.bold.perl6fe",
1572
+ "name": "meta.pod.c.perl6fe",
1573
+ "patterns": [
1574
+ {
1575
+ "include": "#comment-block-syntax"
1576
+ },
1577
+ {
1578
+ "include": "source.quoting.perl6fe#q_triple_angle_string_content"
1579
+ }
1580
+ ]
1581
+ },
1582
+ {
1583
+ "begin": "(?x) ([A-Z]) (<<<)",
1584
+ "beginCaptures": {
1585
+ "1": {
1586
+ "name": "support.function.pod.code.perl6fe"
1587
+ },
1588
+ "2": {
1589
+ "name": "punctuation.section.embedded.pod.code.perl6fe"
1590
+ }
1591
+ },
1592
+ "end": "(?x) (>>>)",
1593
+ "endCaptures": {
1594
+ "1": {
1595
+ "name": "punctuation.section.embedded.pod.code.perl6fe"
1596
+ }
1597
+ },
1598
+ "contentName": "markup.raw.code.perl6fe",
1599
+ "name": "meta.pod.c.perl6fe",
1600
+ "patterns": [
1601
+ {
1602
+ "include": "#comment-block-syntax"
1603
+ },
1604
+ {
1605
+ "include": "source.quoting.perl6fe#q_triple_angle_string_content"
1606
+ }
1607
+ ]
1608
+ },
1609
+ {
1610
+ "begin": "(?x) (U) (<<)",
1611
+ "beginCaptures": {
1612
+ "1": {
1613
+ "name": "support.function.pod.code.perl6fe"
1614
+ },
1615
+ "2": {
1616
+ "name": "punctuation.section.embedded.pod.code.perl6fe"
1617
+ }
1618
+ },
1619
+ "end": "(?x) (>>)",
1620
+ "endCaptures": {
1621
+ "1": {
1622
+ "name": "punctuation.section.embedded.pod.code.perl6fe"
1623
+ }
1624
+ },
1625
+ "contentName": "markup.underline.perl6fe",
1626
+ "name": "meta.pod.c.perl6fe",
1627
+ "patterns": [
1628
+ {
1629
+ "include": "#comment-block-syntax"
1630
+ },
1631
+ {
1632
+ "include": "source.quoting.perl6fe#q_double_angle_string_content"
1633
+ }
1634
+ ]
1635
+ },
1636
+ {
1637
+ "begin": "(?x) (I) (<<)",
1638
+ "beginCaptures": {
1639
+ "1": {
1640
+ "name": "support.function.pod.code.perl6fe"
1641
+ },
1642
+ "2": {
1643
+ "name": "punctuation.section.embedded.pod.code.perl6fe"
1644
+ }
1645
+ },
1646
+ "end": "(?x) (>>)",
1647
+ "endCaptures": {
1648
+ "1": {
1649
+ "name": "punctuation.section.embedded.pod.code.perl6fe"
1650
+ }
1651
+ },
1652
+ "contentName": "markup.italic.perl6fe",
1653
+ "name": "meta.pod.c.perl6fe",
1654
+ "patterns": [
1655
+ {
1656
+ "include": "#comment-block-syntax"
1657
+ },
1658
+ {
1659
+ "include": "source.quoting.perl6fe#q_double_angle_string_content"
1660
+ }
1661
+ ]
1662
+ },
1663
+ {
1664
+ "begin": "(?x) (B) (<<)",
1665
+ "beginCaptures": {
1666
+ "1": {
1667
+ "name": "support.function.pod.code.perl6fe"
1668
+ },
1669
+ "2": {
1670
+ "name": "punctuation.section.embedded.pod.code.perl6fe"
1671
+ }
1672
+ },
1673
+ "end": "(?x) (>>)",
1674
+ "endCaptures": {
1675
+ "1": {
1676
+ "name": "punctuation.section.embedded.pod.code.perl6fe"
1677
+ }
1678
+ },
1679
+ "contentName": "markup.bold.perl6fe",
1680
+ "name": "meta.pod.c.perl6fe",
1681
+ "patterns": [
1682
+ {
1683
+ "include": "#comment-block-syntax"
1684
+ },
1685
+ {
1686
+ "include": "source.quoting.perl6fe#q_double_angle_string_content"
1687
+ }
1688
+ ]
1689
+ },
1690
+ {
1691
+ "begin": "(?x) ([A-Z]) (<<)",
1692
+ "beginCaptures": {
1693
+ "1": {
1694
+ "name": "support.function.pod.code.perl6fe"
1695
+ },
1696
+ "2": {
1697
+ "name": "punctuation.section.embedded.pod.code.perl6fe"
1698
+ }
1699
+ },
1700
+ "end": "(?x) (>>)",
1701
+ "endCaptures": {
1702
+ "1": {
1703
+ "name": "punctuation.section.embedded.pod.code.perl6fe"
1704
+ }
1705
+ },
1706
+ "contentName": "markup.raw.code.perl6fe",
1707
+ "name": "meta.pod.c.perl6fe",
1708
+ "patterns": [
1709
+ {
1710
+ "include": "#comment-block-syntax"
1711
+ },
1712
+ {
1713
+ "include": "source.quoting.perl6fe#q_double_angle_string_content"
1714
+ }
1715
+ ]
1716
+ },
1717
+ {
1718
+ "begin": "(?x) (U) (<)",
1719
+ "beginCaptures": {
1720
+ "1": {
1721
+ "name": "support.function.pod.code.perl6fe"
1722
+ },
1723
+ "2": {
1724
+ "name": "punctuation.section.embedded.pod.code.perl6fe"
1725
+ }
1726
+ },
1727
+ "end": "(?x) (>)",
1728
+ "endCaptures": {
1729
+ "1": {
1730
+ "name": "punctuation.section.embedded.pod.code.perl6fe"
1338
1731
  }
1339
1732
  },
1340
- "name": "meta.shell.quote.double.perl6fe",
1733
+ "contentName": "markup.underline.perl6fe",
1734
+ "name": "meta.pod.c.perl6fe",
1341
1735
  "patterns": [
1342
1736
  {
1343
- "include": "#interpolation"
1737
+ "include": "#comment-block-syntax"
1344
1738
  },
1345
1739
  {
1346
- "include": "source.shell"
1740
+ "include": "source.quoting.perl6fe#q_angle_string_content"
1347
1741
  }
1348
1742
  ]
1349
1743
  },
1350
1744
  {
1351
- "begin": "(qqx)\\s*(\\[)",
1745
+ "begin": "(?x) (I) (<)",
1352
1746
  "beginCaptures": {
1353
1747
  "1": {
1354
- "name": "string.quoted.q.shell.operator.perl6fe"
1748
+ "name": "support.function.pod.code.perl6fe"
1355
1749
  },
1356
1750
  "2": {
1357
- "name": "punctuation.section.embedded.shell.begin.perl6fe"
1751
+ "name": "punctuation.section.embedded.pod.code.perl6fe"
1358
1752
  }
1359
1753
  },
1360
- "end": "\\]",
1754
+ "end": "(?x) (>)",
1361
1755
  "endCaptures": {
1362
- "0": {
1363
- "name": "punctuation.section.embedded.shell.begin.perl6fe"
1756
+ "1": {
1757
+ "name": "punctuation.section.embedded.pod.code.perl6fe"
1364
1758
  }
1365
1759
  },
1366
- "name": "meta.shell.quote.double.perl6fe",
1760
+ "contentName": "markup.italic.perl6fe",
1761
+ "name": "meta.pod.c.perl6fe",
1367
1762
  "patterns": [
1368
1763
  {
1369
- "include": "#interpolation"
1764
+ "include": "#comment-block-syntax"
1370
1765
  },
1371
1766
  {
1372
- "include": "source.shell"
1767
+ "include": "source.quoting.perl6fe#q_angle_string_content"
1373
1768
  }
1374
1769
  ]
1375
1770
  },
1376
1771
  {
1377
- "begin": "(qqx)\\s*(\\|)",
1772
+ "begin": "(?x) (B) (<)",
1378
1773
  "beginCaptures": {
1379
1774
  "1": {
1380
- "name": "string.quoted.q.shell.operator.perl6fe"
1775
+ "name": "support.function.pod.code.perl6fe"
1381
1776
  },
1382
1777
  "2": {
1383
- "name": "punctuation.section.embedded.shell.begin.perl6fe"
1778
+ "name": "punctuation.section.embedded.pod.code.perl6fe"
1384
1779
  }
1385
1780
  },
1386
- "end": "\\|",
1781
+ "end": "(?x) (>)",
1387
1782
  "endCaptures": {
1388
- "0": {
1389
- "name": "punctuation.section.embedded.shell.begin.perl6fe"
1783
+ "1": {
1784
+ "name": "punctuation.section.embedded.pod.code.perl6fe"
1390
1785
  }
1391
1786
  },
1392
- "name": "meta.shell.quote.double.perl6fe",
1787
+ "contentName": "markup.bold.perl6fe",
1788
+ "name": "meta.pod.c.perl6fe",
1393
1789
  "patterns": [
1394
1790
  {
1395
- "include": "#interpolation"
1791
+ "include": "#comment-block-syntax"
1396
1792
  },
1397
1793
  {
1398
- "include": "source.shell"
1794
+ "include": "source.quoting.perl6fe#q_angle_string_content"
1399
1795
  }
1400
1796
  ]
1401
1797
  },
1402
1798
  {
1403
- "begin": "(qqx)\\s*(\\/)",
1799
+ "begin": "(?x) ([A-Z]) (<)",
1404
1800
  "beginCaptures": {
1405
1801
  "1": {
1406
- "name": "string.quoted.q.shell.operator.perl6fe"
1802
+ "name": "support.function.pod.code.perl6fe"
1407
1803
  },
1408
1804
  "2": {
1409
- "name": "punctuation.section.embedded.shell.begin.perl6fe"
1805
+ "name": "punctuation.section.embedded.pod.code.perl6fe"
1410
1806
  }
1411
1807
  },
1412
- "end": "(?<!\\\\)\\/",
1808
+ "end": "(?x) (>)",
1413
1809
  "endCaptures": {
1414
- "0": {
1415
- "name": "punctuation.section.embedded.shell.begin.perl6fe"
1810
+ "1": {
1811
+ "name": "punctuation.section.embedded.pod.code.perl6fe"
1416
1812
  }
1417
1813
  },
1418
- "name": "meta.shell.quote.double.perl6fe",
1814
+ "contentName": "markup.raw.code.perl6fe",
1815
+ "name": "meta.pod.c.perl6fe",
1419
1816
  "patterns": [
1420
1817
  {
1421
- "match": "\\\\\\/",
1422
- "name": "constant.character.escape.perl6fe"
1423
- },
1424
- {
1425
- "include": "#interpolation"
1818
+ "include": "#comment-block-syntax"
1426
1819
  },
1427
1820
  {
1428
- "include": "source.shell"
1821
+ "include": "source.quoting.perl6fe#q_angle_string_content"
1429
1822
  }
1430
1823
  ]
1431
- }
1432
- ]
1433
- },
1434
- "comment-block-syntax": {
1435
- "patterns": [
1436
- {
1437
- "include": "#comment-block-delimited"
1438
1824
  },
1439
1825
  {
1440
- "include": "#comment-block-abbreviated"
1441
- },
1442
- {
1443
- "match": "(L)(\\<)(.+?)(?:(\\|)(.+?))?(\\>)",
1444
- "captures": {
1826
+ "begin": "(?x) (U) («)",
1827
+ "beginCaptures": {
1445
1828
  "1": {
1446
- "name": "support.function.pod.link.perl6fe"
1829
+ "name": "support.function.pod.code.perl6fe"
1447
1830
  },
1448
1831
  "2": {
1449
- "name": "punctuation.section.embedded.pod.link.perl6fe"
1450
- },
1451
- "3": {
1452
- "name": "entity.name.type.pod.link.perl6fe"
1453
- },
1454
- "4": {
1455
- "name": "punctuation.section.embedded.pod.link.perl6fe"
1456
- },
1457
- "5": {
1458
- "name": "markup.underline.link.pod.perl6fe"
1459
- },
1460
- "6": {
1461
- "name": "punctuation.section.embedded.pod.link.perl6fe"
1832
+ "name": "punctuation.section.embedded.pod.code.perl6fe"
1462
1833
  }
1463
1834
  },
1464
- "name": "meta.pod.l.perl6fe"
1465
- },
1466
- {
1467
- "match": "([CKT])(?:(\\<\\<)(.+?)(\\>\\>)|(\\<)(.+?)(\\>))",
1468
- "captures": {
1835
+ "end": "(?x) (»)",
1836
+ "endCaptures": {
1469
1837
  "1": {
1470
- "name": "support.function.pod.code.perl6fe"
1471
- },
1472
- "2": {
1473
- "name": "punctuation.section.embedded.pod.code.perl6fe"
1474
- },
1475
- "3": {
1476
- "name": "markup.raw.code.perl6fe"
1477
- },
1478
- "4": {
1479
- "name": "punctuation.section.embedded.pod.code.perl6fe"
1480
- },
1481
- "5": {
1482
- "name": "punctuation.section.embedded.pod.code.perl6fe"
1483
- },
1484
- "6": {
1485
- "name": "markup.raw.code.perl6fe"
1486
- },
1487
- "7": {
1488
1838
  "name": "punctuation.section.embedded.pod.code.perl6fe"
1489
1839
  }
1490
1840
  },
1491
- "name": "meta.pod.c.perl6fe"
1841
+ "contentName": "markup.underline.perl6fe",
1842
+ "name": "meta.pod.c.perl6fe",
1843
+ "patterns": [
1844
+ {
1845
+ "include": "#comment-block-syntax"
1846
+ },
1847
+ {
1848
+ "include": "source.quoting.perl6fe#q_chevron_string_content"
1849
+ }
1850
+ ]
1492
1851
  },
1493
1852
  {
1494
- "match": "(U)(\\<)(.+?)(\\>)",
1495
- "captures": {
1853
+ "begin": "(?x) (I) («)",
1854
+ "beginCaptures": {
1496
1855
  "1": {
1497
1856
  "name": "support.function.pod.code.perl6fe"
1498
1857
  },
1499
1858
  "2": {
1500
1859
  "name": "punctuation.section.embedded.pod.code.perl6fe"
1501
- },
1502
- "3": {
1503
- "name": "markup.underline.perl6fe"
1504
- },
1505
- "4": {
1506
- "name": "punctuation.section.embedded.pod.code.perl6fe"
1507
1860
  }
1508
1861
  },
1509
- "name": "meta.pod.c.perl6fe"
1510
- },
1511
- {
1512
- "match": "(I)(\\<)(.+?)(\\>)",
1513
- "captures": {
1862
+ "end": "(?x) (»)",
1863
+ "endCaptures": {
1514
1864
  "1": {
1515
- "name": "support.function.pod.code.perl6fe"
1516
- },
1517
- "2": {
1518
- "name": "punctuation.section.embedded.pod.code.perl6fe"
1519
- },
1520
- "3": {
1521
- "name": "markup.italic.perl6fe"
1522
- },
1523
- "4": {
1524
1865
  "name": "punctuation.section.embedded.pod.code.perl6fe"
1525
1866
  }
1526
1867
  },
1527
- "name": "meta.pod.c.perl6fe"
1868
+ "contentName": "markup.italic.perl6fe",
1869
+ "name": "meta.pod.c.perl6fe",
1870
+ "patterns": [
1871
+ {
1872
+ "include": "#comment-block-syntax"
1873
+ },
1874
+ {
1875
+ "include": "source.quoting.perl6fe#q_chevron_string_content"
1876
+ }
1877
+ ]
1528
1878
  },
1529
1879
  {
1530
- "match": "(B)(\\<)(.+?)(\\>)",
1531
- "captures": {
1880
+ "begin": "(?x) (B) («)",
1881
+ "beginCaptures": {
1532
1882
  "1": {
1533
1883
  "name": "support.function.pod.code.perl6fe"
1534
1884
  },
1535
1885
  "2": {
1536
1886
  "name": "punctuation.section.embedded.pod.code.perl6fe"
1537
- },
1538
- "3": {
1539
- "name": "markup.bold.perl6fe"
1540
- },
1541
- "4": {
1887
+ }
1888
+ },
1889
+ "end": "(?x) (»)",
1890
+ "endCaptures": {
1891
+ "1": {
1542
1892
  "name": "punctuation.section.embedded.pod.code.perl6fe"
1543
1893
  }
1544
1894
  },
1545
- "name": "meta.pod.c.perl6fe"
1546
- }
1547
- ]
1548
- },
1549
- "heredocs": {
1550
- "patterns": [
1895
+ "contentName": "markup.bold.perl6fe",
1896
+ "name": "meta.pod.c.perl6fe",
1897
+ "patterns": [
1898
+ {
1899
+ "include": "#comment-block-syntax"
1900
+ },
1901
+ {
1902
+ "include": "source.quoting.perl6fe#q_chevron_string_content"
1903
+ }
1904
+ ]
1905
+ },
1551
1906
  {
1552
- "begin": "(?x) (?: ([qQ](?!/)|qq|qw|qww|qx|qqx) \\s* ((?:\\s*:\\w+)*\\s*:(?:to|heredoc))\\s* | (qto|qqto|Qto) \\s* ((?:\\s*:\\w+)*)\\s* ) /(\\w+)/",
1907
+ "begin": "(?x) ([A-Z]) («)",
1553
1908
  "beginCaptures": {
1554
1909
  "1": {
1555
- "name": "string.quoted.construct.perl6fe"
1910
+ "name": "support.function.pod.code.perl6fe"
1556
1911
  },
1557
1912
  "2": {
1558
- "name": "support.function.adverb.perl6fe"
1559
- },
1560
- "3": {
1561
- "name": "string.quoted.construct.perl6fe"
1562
- },
1563
- "4": {
1564
- "name": "support.function.adverb.perl6fe"
1565
- },
1566
- "5": {
1567
- "name": "entity.other.attribute-name.heredoc.delimiter.perl6fe"
1913
+ "name": "punctuation.section.embedded.pod.code.perl6fe"
1568
1914
  }
1569
1915
  },
1570
- "end": "\\s*\\5",
1916
+ "end": "(?x) (»)",
1571
1917
  "endCaptures": {
1572
- "0": {
1573
- "name": "entity.other.attribute-name.heredoc.delimiter.perl6fe"
1918
+ "1": {
1919
+ "name": "punctuation.section.embedded.pod.code.perl6fe"
1574
1920
  }
1575
1921
  },
1922
+ "contentName": "markup.raw.code.perl6fe",
1923
+ "name": "meta.pod.c.perl6fe",
1576
1924
  "patterns": [
1577
1925
  {
1578
- "begin": "(?<=/)",
1579
- "end": "\\n",
1580
- "patterns": [
1581
- {
1582
- "include": "$self"
1583
- }
1584
- ],
1585
- "name": "meta.heredoc.continuation.perl6fe"
1926
+ "include": "#comment-block-syntax"
1586
1927
  },
1587
1928
  {
1588
- "match": "^(?:.|\\n)*$",
1589
- "name": "string.quoted.heredoc.perl6fe"
1929
+ "include": "source.quoting.perl6fe#q_chevron_string_content"
1590
1930
  }
1591
- ],
1592
- "name": "meta.heredoc.perl6fe"
1931
+ ]
1593
1932
  }
1594
1933
  ]
1595
1934
  },
@@ -1629,7 +1968,7 @@
1629
1968
  "include": "#p5_escaped_char"
1630
1969
  },
1631
1970
  {
1632
- "include": "#q_brace_string_content"
1971
+ "include": "source.quoting.perl6fe#q_brace_string_content"
1633
1972
  }
1634
1973
  ]
1635
1974
  },
@@ -1667,7 +2006,7 @@
1667
2006
  "include": "#p5_escaped_char"
1668
2007
  },
1669
2008
  {
1670
- "include": "#q_bracket_string_content"
2009
+ "include": "source.quoting.perl6fe#q_bracket_string_content"
1671
2010
  }
1672
2011
  ]
1673
2012
  },
@@ -1705,7 +2044,7 @@
1705
2044
  "include": "#p5_escaped_char"
1706
2045
  },
1707
2046
  {
1708
- "include": "#q_slash_string_content"
2047
+ "include": "source.quoting.perl6fe#q_slash_string_content"
1709
2048
  }
1710
2049
  ]
1711
2050
  }
@@ -1759,7 +2098,7 @@
1759
2098
  }
1760
2099
  ]
1761
2100
  },
1762
- "variables": {
2101
+ "regexp-variables": {
1763
2102
  "patterns": [
1764
2103
  {
1765
2104
  "begin": "\\$(?=\\<)",
@@ -1786,9 +2125,16 @@
1786
2125
  }
1787
2126
  }
1788
2127
  ]
2128
+ }
2129
+ ]
2130
+ },
2131
+ "variables": {
2132
+ "patterns": [
2133
+ {
2134
+ "include": "#regexp-variables"
1789
2135
  },
1790
2136
  {
1791
- "match": "(?x) (\\$|@|%|&) (\\.|\\*|:|!|\\^|~|=|\\?)? ( (?:[a-zA-Z]) (?: [a-zA-Z0-9_À-ÿ\\$]| [\\-'][a-zA-Z_À-ÿ\\$] )* )",
2137
+ "match": "(?x)\n(\\$|@|%|&)\n(\\.|\\*|:|!|\\^|~|=|\\?)?\n(\n (?:[\\p{Alpha}_]) # Must start with Alpha or underscore\n (?:\n [\\p{Digit}\\p{Alpha}_] # have alphanum/underscore or a ' or -\n | # followed by an alphanum or underscore\n [\\-'] [\\p{Digit}\\p{Alpha}_]\n )*\n)",
1792
2138
  "captures": {
1793
2139
  "1": {
1794
2140
  "name": "variable.other.identifier.sigil.perl6fe"
@@ -1804,12 +2150,108 @@
1804
2150
  }
1805
2151
  ]
1806
2152
  },
2153
+ "hex_escapes": {
2154
+ "patterns": [
2155
+ {
2156
+ "match": "(?x) (\\\\x) ( \\[ ) ( [\\dA-Fa-f]+ ) ( \\] )",
2157
+ "captures": {
2158
+ "1": {
2159
+ "name": "keyword.punctuation.hex.perl6fe"
2160
+ },
2161
+ "2": {
2162
+ "name": "keyword.operator.bracket.open.perl6fe"
2163
+ },
2164
+ "3": {
2165
+ "name": "routine.name.hex.perl6fe"
2166
+ },
2167
+ "4": {
2168
+ "name": "keyword.operator.bracket.close.perl6fe"
2169
+ }
2170
+ },
2171
+ "name": "punctuation.hex.perl6fe"
2172
+ }
2173
+ ]
2174
+ },
1807
2175
  "interpolation": {
1808
2176
  "patterns": [
1809
2177
  {
1810
- "match": "(?x)(?<!\\\\) (\\$|@|%|&)(?!\\$) (\\.|\\*|:|!|\\^|~|=|\\?)? ([a-zA-Z_À-ÿ\\$]) ( [a-zA-Z0-9_À-ÿ\\$]| [\\-'][a-zA-Z_À-ÿ\\$][a-zA-Z0-9_À-ÿ\\$] )*",
2178
+ "match": "(?x)\n(?<!\\\\)\n(\\$|@|%|&)\n(?!\\$)\n(\\.|\\*|:|!|\\^|~|=|\\?)? # Twigils\n([\\p{Alpha}_]) # Must start with Alpha or underscore\n(\n [\\p{Digit}\\p{Alpha}_] # have alphanum/underscore or a ' or -\n| # followed by an alphanum or underscore\n [\\-'] [\\p{Digit}\\p{Alpha}_]\n)*\n( \\[ .* \\] )? # postcircumfix [ ]\n## methods\n(?:\n (?:\n ( \\. )\n (\n [\\p{Alpha}]\n (?:\n [\\p{Digit}\\p{Alpha}_] # have alphanum/underscore or a ' or -\n | # followed by an alphanum or underscore\n [\\-'] [\\p{Digit}\\p{Alpha}_]\n )*\n\n )\n )?\n ( \\( .*? \\) )\n)?",
2179
+ "captures": {
2180
+ "1": {
2181
+ "name": "variable.other.identifier.sigil.perl6fe"
2182
+ },
2183
+ "2": {
2184
+ "name": "support.class.twigil.interpolated.perl6fe"
2185
+ },
2186
+ "5": {
2187
+ "patterns": [
2188
+ {
2189
+ "begin": "<",
2190
+ "beginCaptures": {
2191
+ "0": {
2192
+ "name": "keyword.operator.chevron.open.perl6fe"
2193
+ }
2194
+ },
2195
+ "end": ">",
2196
+ "endCaptures": {
2197
+ "0": {
2198
+ "name": "keyword.operator.chevron.close.perl6fe"
2199
+ }
2200
+ }
2201
+ },
2202
+ {
2203
+ "begin": "\\[",
2204
+ "beginCaptures": {
2205
+ "0": {
2206
+ "name": "keyword.operator.bracket.open.perl6fe"
2207
+ }
2208
+ },
2209
+ "end": "\\]",
2210
+ "endCaptures": {
2211
+ "0": {
2212
+ "name": "keyword.operator.bracket.close.perl6fe"
2213
+ }
2214
+ },
2215
+ "patterns": [
2216
+ {
2217
+ "include": "$self"
2218
+ }
2219
+ ]
2220
+ }
2221
+ ]
2222
+ },
2223
+ "6": {
2224
+ "name": "keyword.operator.dot.perl6fe"
2225
+ },
2226
+ "7": {
2227
+ "name": "support.function.perl6fe"
2228
+ },
2229
+ "8": {
2230
+ "begin": "(",
2231
+ "beginCaptures": {
2232
+ "0": "keyword.operator.paren.open.perl6fe"
2233
+ },
2234
+ "end": ")",
2235
+ "endCaptures": {
2236
+ "0": {
2237
+ "name": "keyword.operator.paren.close.perl6fe"
2238
+ }
2239
+ },
2240
+ "patterns": [
2241
+ {
2242
+ "include": "$self"
2243
+ }
2244
+ ]
2245
+ }
2246
+ },
1811
2247
  "name": "variable.other.identifier.interpolated.perl6fe"
1812
2248
  },
2249
+ {
2250
+ "include": "#hex_escapes"
2251
+ },
2252
+ {
2253
+ "include": "#regexp-variables"
2254
+ },
1813
2255
  {
1814
2256
  "begin": "(\\{)",
1815
2257
  "beginCaptures": {
@@ -1832,66 +2274,12 @@
1832
2274
  }
1833
2275
  ]
1834
2276
  },
1835
- "q_angle_string_content": {
1836
- "begin": "<",
1837
- "end": ">",
1838
- "patterns": [
1839
- {
1840
- "include": "#q_angle_string_content"
1841
- }
1842
- ]
1843
- },
1844
- "q_brace_string_content": {
1845
- "begin": "{",
1846
- "end": "}",
1847
- "patterns": [
1848
- {
1849
- "include": "#q_brace_string_content"
1850
- }
1851
- ]
1852
- },
1853
- "q_bracket_string_content": {
1854
- "begin": "\\[",
1855
- "end": "\\]",
1856
- "patterns": [
1857
- {
1858
- "include": "#q_bracket_string_content"
1859
- }
1860
- ]
1861
- },
1862
- "q_double_string_content": {
1863
- "begin": "\"",
1864
- "end": "\"",
1865
- "patterns": [
1866
- {
1867
- "include": "#q_double_string_content"
1868
- }
1869
- ]
1870
- },
1871
- "q_paren_string_content": {
1872
- "begin": "\\(",
1873
- "end": "\\)",
1874
- "patterns": [
1875
- {
1876
- "include": "#q_paren_string_content"
1877
- }
1878
- ]
1879
- },
1880
- "q_single_string_content": {
1881
- "begin": "'",
1882
- "end": "'",
1883
- "patterns": [
1884
- {
1885
- "include": "#q_single_string_content"
1886
- }
1887
- ]
1888
- },
1889
- "q_slash_string_content": {
1890
- "begin": "\\\\/",
1891
- "end": "\\\\/",
2277
+ "q_right_double_right_double_string_content": {
2278
+ "begin": "",
2279
+ "end": "",
1892
2280
  "patterns": [
1893
2281
  {
1894
- "include": "#q_slash_string_content"
2282
+ "include": "#q_right_double_right_double_string_content"
1895
2283
  }
1896
2284
  ]
1897
2285
  }