tm-grammars 0.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (181) hide show
  1. package/LICENSE +22 -0
  2. package/NOTICE +6565 -0
  3. package/README.md +211 -0
  4. package/grammars/abap.json +380 -0
  5. package/grammars/actionscript-3.json +951 -0
  6. package/grammars/ada.json +3874 -0
  7. package/grammars/apache.json +562 -0
  8. package/grammars/apex.json +3203 -0
  9. package/grammars/apl.json +1479 -0
  10. package/grammars/applescript.json +1406 -0
  11. package/grammars/ara.json +428 -0
  12. package/grammars/asm.json +1741 -0
  13. package/grammars/astro.json +776 -0
  14. package/grammars/awk.json +388 -0
  15. package/grammars/ballerina.json +3768 -0
  16. package/grammars/bat.json +783 -0
  17. package/grammars/beancount.json +831 -0
  18. package/grammars/berry.json +172 -0
  19. package/grammars/bibtex.json +315 -0
  20. package/grammars/bicep.json +239 -0
  21. package/grammars/blade.json +3870 -0
  22. package/grammars/c.json +3552 -0
  23. package/grammars/cadence.json +738 -0
  24. package/grammars/clarity.json +877 -0
  25. package/grammars/clojure.json +426 -0
  26. package/grammars/cmake.json +143 -0
  27. package/grammars/cobol.json +1124 -0
  28. package/grammars/codeql.json +1540 -0
  29. package/grammars/coffee.json +1311 -0
  30. package/grammars/cpp-macro.json +9498 -0
  31. package/grammars/cpp.json +16635 -0
  32. package/grammars/crystal.json +1866 -0
  33. package/grammars/csharp.json +5722 -0
  34. package/grammars/css.json +1860 -0
  35. package/grammars/csv.json +46 -0
  36. package/grammars/cue.json +1128 -0
  37. package/grammars/cypher.json +353 -0
  38. package/grammars/d.json +3185 -0
  39. package/grammars/dart.json +522 -0
  40. package/grammars/dax.json +185 -0
  41. package/grammars/diff.json +155 -0
  42. package/grammars/docker.json +97 -0
  43. package/grammars/dream-maker.json +640 -0
  44. package/grammars/elixir.json +1014 -0
  45. package/grammars/elm.json +751 -0
  46. package/grammars/erb.json +156 -0
  47. package/grammars/erlang.json +1757 -0
  48. package/grammars/fish.json +189 -0
  49. package/grammars/fsharp.json +1831 -0
  50. package/grammars/gdresource.json +290 -0
  51. package/grammars/gdscript.json +969 -0
  52. package/grammars/gdshader.json +405 -0
  53. package/grammars/gherkin.json +133 -0
  54. package/grammars/git-commit.json +85 -0
  55. package/grammars/git-rebase.json +56 -0
  56. package/grammars/glimmer-js.json +98 -0
  57. package/grammars/glimmer-ts.json +98 -0
  58. package/grammars/glsl.json +57 -0
  59. package/grammars/gnuplot.json +892 -0
  60. package/grammars/go.json +1012 -0
  61. package/grammars/graphql.json +1295 -0
  62. package/grammars/groovy.json +1378 -0
  63. package/grammars/hack.json +2650 -0
  64. package/grammars/haml.json +598 -0
  65. package/grammars/handlebars.json +848 -0
  66. package/grammars/haskell.json +2431 -0
  67. package/grammars/hcl.json +787 -0
  68. package/grammars/hjson.json +821 -0
  69. package/grammars/hlsl.json +212 -0
  70. package/grammars/html.json +93 -0
  71. package/grammars/imba.json +2696 -0
  72. package/grammars/ini.json +108 -0
  73. package/grammars/java.json +1885 -0
  74. package/grammars/javascript.json +5984 -0
  75. package/grammars/jinja-html.json +16 -0
  76. package/grammars/jinja.json +345 -0
  77. package/grammars/jison.json +715 -0
  78. package/grammars/jsdoc.json +21 -0
  79. package/grammars/json.json +208 -0
  80. package/grammars/json5.json +244 -0
  81. package/grammars/jsonc.json +208 -0
  82. package/grammars/jsonl.json +208 -0
  83. package/grammars/jsonnet.json +211 -0
  84. package/grammars/jssm.json +159 -0
  85. package/grammars/jsx.json +5984 -0
  86. package/grammars/julia.json +1061 -0
  87. package/grammars/kotlin.json +580 -0
  88. package/grammars/kusto.json +687 -0
  89. package/grammars/latex.json +2395 -0
  90. package/grammars/less.json +5012 -0
  91. package/grammars/liquid.json +990 -0
  92. package/grammars/lisp.json +121 -0
  93. package/grammars/logo.json +55 -0
  94. package/grammars/lua.json +956 -0
  95. package/grammars/make.json +629 -0
  96. package/grammars/markdown.json +3066 -0
  97. package/grammars/marko.json +1344 -0
  98. package/grammars/matlab.json +1131 -0
  99. package/grammars/mdc.json +571 -0
  100. package/grammars/mdx.json +5629 -0
  101. package/grammars/mermaid.json +1382 -0
  102. package/grammars/mojo.json +4153 -0
  103. package/grammars/narrat.json +227 -0
  104. package/grammars/nextflow.json +298 -0
  105. package/grammars/nginx.json +2121 -0
  106. package/grammars/nim.json +1522 -0
  107. package/grammars/nix.json +1200 -0
  108. package/grammars/nushell.json +1047 -0
  109. package/grammars/objective-c.json +3750 -0
  110. package/grammars/objective-cpp.json +7242 -0
  111. package/grammars/ocaml.json +2967 -0
  112. package/grammars/pascal.json +154 -0
  113. package/grammars/perl.json +2971 -0
  114. package/grammars/php.json +4024 -0
  115. package/grammars/plsql.json +241 -0
  116. package/grammars/postcss.json +377 -0
  117. package/grammars/powerquery.json +349 -0
  118. package/grammars/powershell.json +1024 -0
  119. package/grammars/prisma.json +443 -0
  120. package/grammars/prolog.json +298 -0
  121. package/grammars/proto.json +507 -0
  122. package/grammars/pug.json +1033 -0
  123. package/grammars/puppet.json +777 -0
  124. package/grammars/purescript.json +871 -0
  125. package/grammars/python.json +4208 -0
  126. package/grammars/r.json +637 -0
  127. package/grammars/raku.json +310 -0
  128. package/grammars/razor.json +1813 -0
  129. package/grammars/reg.json +136 -0
  130. package/grammars/rel.json +200 -0
  131. package/grammars/riscv.json +298 -0
  132. package/grammars/rst.json +734 -0
  133. package/grammars/ruby.json +2769 -0
  134. package/grammars/rust.json +1171 -0
  135. package/grammars/sas.json +302 -0
  136. package/grammars/sass.json +618 -0
  137. package/grammars/scala.json +1313 -0
  138. package/grammars/scheme.json +384 -0
  139. package/grammars/scss.json +1874 -0
  140. package/grammars/shaderlab.json +199 -0
  141. package/grammars/shellscript.json +2025 -0
  142. package/grammars/shellsession.json +33 -0
  143. package/grammars/smalltalk.json +235 -0
  144. package/grammars/solidity.json +1210 -0
  145. package/grammars/sparql.json +45 -0
  146. package/grammars/splunk.json +91 -0
  147. package/grammars/sql.json +631 -0
  148. package/grammars/ssh-config.json +88 -0
  149. package/grammars/stata.json +3050 -0
  150. package/grammars/stylus.json +1208 -0
  151. package/grammars/svelte.json +1171 -0
  152. package/grammars/swift.json +4203 -0
  153. package/grammars/system-verilog.json +1063 -0
  154. package/grammars/tasl.json +292 -0
  155. package/grammars/tcl.json +291 -0
  156. package/grammars/tex.json +281 -0
  157. package/grammars/toml.json +431 -0
  158. package/grammars/tsx.json +5984 -0
  159. package/grammars/turtle.json +261 -0
  160. package/grammars/twig.json +1394 -0
  161. package/grammars/typescript.json +5735 -0
  162. package/grammars/v.json +1001 -0
  163. package/grammars/vb.json +232 -0
  164. package/grammars/verilog.json +305 -0
  165. package/grammars/vhdl.json +1484 -0
  166. package/grammars/viml.json +445 -0
  167. package/grammars/vue-html.json +559 -0
  168. package/grammars/vue.json +1237 -0
  169. package/grammars/vyper.json +5415 -0
  170. package/grammars/wasm.json +831 -0
  171. package/grammars/wenyan.json +129 -0
  172. package/grammars/wgsl.json +391 -0
  173. package/grammars/wolfram.json +2370 -0
  174. package/grammars/xml.json +382 -0
  175. package/grammars/xsl.json +89 -0
  176. package/grammars/yaml.json +616 -0
  177. package/grammars/zenscript.json +257 -0
  178. package/grammars/zig.json +312 -0
  179. package/index.d.ts +18 -0
  180. package/index.js +2165 -0
  181. package/package.json +46 -0
@@ -0,0 +1,1047 @@
1
+ {
2
+ "displayName": "nushell",
3
+ "name": "nushell",
4
+ "patterns": [
5
+ {
6
+ "include": "#define-variable"
7
+ },
8
+ {
9
+ "include": "#define-alias"
10
+ },
11
+ {
12
+ "include": "#function"
13
+ },
14
+ {
15
+ "include": "#extern"
16
+ },
17
+ {
18
+ "include": "#module"
19
+ },
20
+ {
21
+ "include": "#use-module"
22
+ },
23
+ {
24
+ "include": "#expression"
25
+ },
26
+ {
27
+ "include": "#comment"
28
+ }
29
+ ],
30
+ "repository": {
31
+ "binary": {
32
+ "begin": "\\b(0x)(\\[)",
33
+ "beginCaptures": {
34
+ "1": {
35
+ "name": "constant.numeric.nushell"
36
+ },
37
+ "2": {
38
+ "name": "meta.brace.square.begin.nushell"
39
+ }
40
+ },
41
+ "end": "\\]",
42
+ "endCaptures": {
43
+ "0": {
44
+ "name": "meta.brace.square.begin.nushell"
45
+ }
46
+ },
47
+ "name": "constant.binary.nushell",
48
+ "patterns": [
49
+ {
50
+ "match": "[0-9a-fA-F]{2}",
51
+ "name": "constant.numeric.nushell"
52
+ }
53
+ ]
54
+ },
55
+ "braced-expression": {
56
+ "begin": "\\{",
57
+ "beginCaptures": {
58
+ "0": {
59
+ "name": "punctuation.section.block.begin.bracket.curly.nushell"
60
+ }
61
+ },
62
+ "end": "\\}",
63
+ "endCaptures": {
64
+ "0": {
65
+ "name": "punctuation.section.block.end.bracket.curly.nushell"
66
+ }
67
+ },
68
+ "name": "meta.expression.braced.nushell",
69
+ "patterns": [
70
+ {
71
+ "begin": "(?<=\\{)\\s*\\|",
72
+ "end": "\\|",
73
+ "name": "meta.closure.parameters.nushell",
74
+ "patterns": [
75
+ {
76
+ "include": "#function-parameter"
77
+ }
78
+ ]
79
+ },
80
+ {
81
+ "captures": {
82
+ "1": {
83
+ "name": "variable.other.nushell"
84
+ },
85
+ "2": {
86
+ "name": "keyword.control.nushell"
87
+ }
88
+ },
89
+ "match": "(\\w+)\\s*(:)\\s*"
90
+ },
91
+ {
92
+ "captures": {
93
+ "1": {
94
+ "name": "variable.other.nushell"
95
+ },
96
+ "2": {
97
+ "name": "variable.other.nushell",
98
+ "patterns": [
99
+ {
100
+ "include": "#paren-expression"
101
+ }
102
+ ]
103
+ },
104
+ "3": {
105
+ "name": "keyword.control.nushell"
106
+ }
107
+ },
108
+ "match": "(\\$\"((?:[^\"\\\\]|\\\\.)*)\")\\s*(:)\\s*",
109
+ "name": "meta.record-entry.nushell"
110
+ },
111
+ {
112
+ "captures": {
113
+ "1": {
114
+ "name": "variable.other.nushell"
115
+ },
116
+ "2": {
117
+ "name": "keyword.control.nushell"
118
+ }
119
+ },
120
+ "match": "(\"(?:[^\"\\\\]|\\\\.)*\")\\s*(:)\\s*",
121
+ "name": "meta.record-entry.nushell"
122
+ },
123
+ {
124
+ "captures": {
125
+ "1": {
126
+ "name": "variable.other.nushell"
127
+ },
128
+ "2": {
129
+ "name": "variable.other.nushell",
130
+ "patterns": [
131
+ {
132
+ "include": "#paren-expression"
133
+ }
134
+ ]
135
+ },
136
+ "3": {
137
+ "name": "keyword.control.nushell"
138
+ }
139
+ },
140
+ "match": "(\\$'([^']*)')\\s*(:)\\s*",
141
+ "name": "meta.record-entry.nushell"
142
+ },
143
+ {
144
+ "captures": {
145
+ "1": {
146
+ "name": "variable.other.nushell"
147
+ },
148
+ "2": {
149
+ "name": "keyword.control.nushell"
150
+ }
151
+ },
152
+ "match": "('[^']*')\\s*(:)\\s*",
153
+ "name": "meta.record-entry.nushell"
154
+ },
155
+ {
156
+ "include": "source.nushell"
157
+ }
158
+ ]
159
+ },
160
+ "command": {
161
+ "begin": "(?<!\\w)(?:(\\^)|(?![0-9]|\\$))([\\w.!]+(?:(?: (?!-)[\\w\\-.!]+(?:(?= |\\))|$)|[\\w\\-.!]+))*|(?<=\\^)\\$?(?:\"[^\"]+\"|'[^']+'))",
162
+ "beginCaptures": {
163
+ "1": {
164
+ "name": "keyword.operator.nushell"
165
+ },
166
+ "2": {
167
+ "patterns": [
168
+ {
169
+ "include": "#control-keywords"
170
+ },
171
+ {
172
+ "captures": {
173
+ "0": {
174
+ "name": "keyword.other.builtin.nushell"
175
+ }
176
+ },
177
+ "match": "(?:ansi|char) \\w+"
178
+ },
179
+ {
180
+ "captures": {
181
+ "1": {
182
+ "name": "keyword.other.builtin.nushell"
183
+ },
184
+ "2": {
185
+ "patterns": [
186
+ {
187
+ "include": "#value"
188
+ }
189
+ ]
190
+ }
191
+ },
192
+ "comment": "Regex generated with list-to-tree (https://github.com/glcraft/list-to-tree)",
193
+ "match": "(a(?:ll|n(?:si(?: (?:gradient|link|strip))?|y)|ppend|st)|b(?:its(?: (?:and|not|or|ro(?:l|r)|sh(?:l|r)|xor))?|reak|ytes(?: (?:a(?:dd|t)|build|collect|ends-with|index-of|length|re(?:move|place|verse)|starts-with))?)|c(?:al|d|har|lear|o(?:l(?:lect|umns)|m(?:mandline|p(?:act|lete))|n(?:fig(?: (?:env|nu|reset))?|tinue))|p)|d(?:ate(?: (?:format|humanize|list-timezone|now|to-(?:record|t(?:able|imezone))))?|e(?:bug|code(?: (?:base64|hex))?|fault|scribe|tect columns)|fr (?:a(?:gg(?:-groups)?|ll-(?:false|true)|ppend|rg-(?:m(?:ax|in)|sort|true|unique|where)|s(?:-date(?:time)?)?)|c(?:ache|o(?:l(?:lect|umns)?|n(?:cat(?:-str|enate)|tains)|unt(?:-null)?)|umulative)|d(?:atepart|rop(?:-(?:duplicates|nulls))?|types|ummies)|exp(?:lode|r-not)|f(?:etch|i(?:l(?:l-n(?:an|ull)|ter(?:-with)?)|rst)|latten)|g(?:et(?:-(?:day|hour|m(?:inute|onth)|nanosecond|ordinal|second|week(?:day)?|year))?|roup-by)|i(?:mplode|nto-(?:df|lazy|nu)|s-(?:duplicated|in|n(?:ot-null|ull)|unique))|join|l(?:ast|it|owercase|s)|m(?:ax|e(?:an|dian|lt)|in)|n(?:-unique|ot)|o(?:pen|therwise)|qu(?:antile|ery)|r(?:e(?:name|place(?:-all)?|verse)|olling)|s(?:ample|e(?:lect|t(?:-with-idx)?)|h(?:ape|ift)|lice|ort-by|t(?:d|r(?:-(?:lengths|slice)|ftime))|um(?:mary)?)|t(?:ake|o-(?:a(?:rrow|vro)|csv|jsonl|parquet))|u(?:nique|ppercase)|va(?:lue-counts|r)|w(?:hen|ith-column))|o|rop(?: (?:column|nth))?|u)|e(?:ach(?: while)?|cho|n(?:code(?: (?:base64|hex))?|umerate)|rror make|very|x(?:ec|it|p(?:l(?:ain|ore)|ort-env)))|f(?:i(?:l(?:l|ter)|nd|rst)|latten|mt|ormat(?: (?:d(?:ate|uration)|filesize))?|rom(?: (?:csv|json|nuon|ods|ssv|t(?:oml|sv)|url|x(?:lsx|ml)|y(?:aml|ml)))?)|g(?:et|lob|r(?:id|oup(?:-by)?))|h(?:ash(?: (?:md5|sha256))?|e(?:aders|lp(?: (?:aliases|commands|externs|modules|operators))?)|i(?:de-env|sto(?:gram|ry(?: session)?))|ttp(?: (?:delete|get|head|options|p(?:atch|ost|ut)))?)|i(?:f|gnore|n(?:put(?: list(?:en)?)?|s(?:ert|pect)|to(?: (?:b(?:i(?:nary|ts)|ool)|d(?:atetime|ecimal|uration)|f(?:ilesize|loat)|int|record|s(?:qlite|tring)))?)|s-(?:admin|empty)|tems)|join|k(?:eybindings(?: (?:default|list(?:en)?))?|ill)|l(?:a(?:st|zy make)|e(?:ngth|t-env)|ines|o(?:ad-env|op)|s)|m(?:at(?:ch|h(?: (?:a(?:bs|rc(?:cos(?:h)?|sin(?:h)?|tan(?:h)?)|vg)|c(?:eil|os(?:h)?)|exp|floor|l(?:n|og)|m(?:ax|edian|in|ode)|product|round|s(?:in(?:h)?|qrt|tddev|um)|tan(?:h)?|variance))?)|e(?:rge|tadata)|kdir|ove|v)|nu-(?:check|highlight)|o(?:pen|verlay list)|p(?:a(?:r(?:-each|se)|th(?: (?:basename|dirname|ex(?:ists|pand)|join|parse|relative-to|split|type))?)|ort|r(?:epend|int|ofile)|s)|query db|r(?:an(?:dom(?: (?:bool|chars|d(?:ecimal|ice)|float|integer|uuid))?|ge)|e(?:duce|ject|name|verse)|m|o(?:ll(?: (?:down|left|right|up))?|tate)|un-external)|s(?:ave|c(?:hema|ope (?:aliases|commands|e(?:ngine-stats|xterns)|modules|variables))|e(?:lect|q(?: (?:char|date))?)|huffle|ize|kip(?: (?:until|while))?|leep|o(?:rt(?:-by)?|urce-env)|plit(?: (?:c(?:hars|olumn)|list|row|words)|-by)?|t(?:art|r(?: (?:c(?:a(?:mel-case|pitalize)|ontains)|d(?:istance|owncase)|e(?:nds-with|xpand)|index-of|join|kebab-case|length|pascal-case|re(?:place|verse)|s(?:creaming-snake-case|nake-case|tarts-with|ubstring)|t(?:itle-case|rim)|upcase))?)|ys)|t(?:a(?:ble|ke(?: (?:until|while))?)|erm size|imeit|o(?: (?:csv|html|json|md|nuon|t(?:ext|oml|sv)|xml|yaml)|uch)?|r(?:anspose|y)|utor)|u(?:cp|niq(?:-by)?|p(?:date(?: cells)?|sert)|rl(?: (?:build-query|encode|join|parse))?)|v(?:alues|ersion|iew(?: (?:files|s(?:ource|pan)))?)|w(?:atch|h(?:ere|i(?:ch|le))|i(?:ndow|th-env)|rap)|zip)(?![\\w-])( (.*))?"
194
+ },
195
+ {
196
+ "captures": {
197
+ "1": {
198
+ "patterns": [
199
+ {
200
+ "include": "#paren-expression"
201
+ }
202
+ ]
203
+ }
204
+ },
205
+ "match": "(?<=\\^)(?:\\$(\"[^\"]+\"|'[^']+')|\"[^\"]+\"|'[^']+')",
206
+ "name": "entity.name.type.external.nushell"
207
+ },
208
+ {
209
+ "captures": {
210
+ "1": {
211
+ "name": "entity.name.type.external.nushell"
212
+ },
213
+ "2": {
214
+ "patterns": [
215
+ {
216
+ "include": "#value"
217
+ }
218
+ ]
219
+ }
220
+ },
221
+ "match": "([\\w.]+(?:-[\\w.!]+)*)(?: (.*))?"
222
+ },
223
+ {
224
+ "include": "#value"
225
+ }
226
+ ]
227
+ }
228
+ },
229
+ "end": "(?=\\||\\)|\\}|;)|$",
230
+ "name": "meta.command.nushell",
231
+ "patterns": [
232
+ {
233
+ "include": "#value"
234
+ }
235
+ ]
236
+ },
237
+ "comment": {
238
+ "match": "(#.*)$",
239
+ "name": "comment.nushell"
240
+ },
241
+ "constant-keywords": {
242
+ "match": "\\b(?:true|false|null)\\b",
243
+ "name": "constant.language.nushell"
244
+ },
245
+ "constant-value": {
246
+ "patterns": [
247
+ {
248
+ "include": "#constant-keywords"
249
+ },
250
+ {
251
+ "include": "#datetime"
252
+ },
253
+ {
254
+ "include": "#numbers"
255
+ },
256
+ {
257
+ "include": "#numbers-hexa"
258
+ },
259
+ {
260
+ "include": "#binary"
261
+ }
262
+ ]
263
+ },
264
+ "control-keywords": {
265
+ "comment": "Regex generated with list-to-tree (https://github.com/glcraft/list-to-tree)",
266
+ "match": "(?<![0-9a-zA-Z_\\-.\\/:\\\\])(?:break|continue|else(?: if)?|for|if|loop|mut|return|try|while)(?![0-9a-zA-Z_\\-.\\/:\\\\])",
267
+ "name": "keyword.control.nushell"
268
+ },
269
+ "datetime": {
270
+ "match": "\\b\\d{4}-\\d{2}-\\d{2}(?:T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d+)?(?:\\+\\d{2}:?\\d{2}|Z)?)?\\b",
271
+ "name": "constant.numeric.nushell"
272
+ },
273
+ "define-alias": {
274
+ "captures": {
275
+ "1": {
276
+ "name": "entity.name.function.nushell"
277
+ },
278
+ "2": {
279
+ "name": "entity.name.type.nushell"
280
+ },
281
+ "3": {
282
+ "patterns": [
283
+ {
284
+ "include": "#operators"
285
+ }
286
+ ]
287
+ }
288
+ },
289
+ "match": "((?:export )?alias)\\s+([\\w\\-!]+)\\s*(=)"
290
+ },
291
+ "define-variable": {
292
+ "captures": {
293
+ "1": {
294
+ "name": "keyword.other.nushell"
295
+ },
296
+ "2": {
297
+ "name": "variable.other.nushell"
298
+ },
299
+ "3": {
300
+ "patterns": [
301
+ {
302
+ "include": "#operators"
303
+ }
304
+ ]
305
+ }
306
+ },
307
+ "match": "(let|mut|(?:export\\s+)?const)\\s+(\\w+)\\s+(=)"
308
+ },
309
+ "expression": {
310
+ "patterns": [
311
+ {
312
+ "include": "#pre-command"
313
+ },
314
+ {
315
+ "include": "#for-loop"
316
+ },
317
+ {
318
+ "include": "#operators"
319
+ },
320
+ {
321
+ "match": "\\|",
322
+ "name": "keyword.control.nushell"
323
+ },
324
+ {
325
+ "include": "#control-keywords"
326
+ },
327
+ {
328
+ "include": "#constant-value"
329
+ },
330
+ {
331
+ "include": "#command"
332
+ },
333
+ {
334
+ "include": "#value"
335
+ }
336
+ ]
337
+ },
338
+ "extern": {
339
+ "begin": "((?:export\\s+)?extern)\\s+([\\w\\-]+|\"[\\w\\- ]+\")",
340
+ "beginCaptures": {
341
+ "1": {
342
+ "name": "entity.name.function.nushell"
343
+ },
344
+ "2": {
345
+ "name": "entity.name.type.nushell"
346
+ }
347
+ },
348
+ "end": "(?<=\\])",
349
+ "endCaptures": {
350
+ "0": {
351
+ "name": "punctuation.definition.function.end.nushell"
352
+ }
353
+ },
354
+ "patterns": [
355
+ {
356
+ "include": "#function-parameters"
357
+ }
358
+ ]
359
+ },
360
+ "for-loop": {
361
+ "begin": "(for)\\s+(\\$?\\w+)\\s+(in)\\s+(.+)\\s*(\\{)",
362
+ "beginCaptures": {
363
+ "1": {
364
+ "name": "keyword.other.nushell"
365
+ },
366
+ "2": {
367
+ "name": "variable.other.nushell"
368
+ },
369
+ "3": {
370
+ "name": "keyword.other.nushell"
371
+ },
372
+ "4": {
373
+ "patterns": [
374
+ {
375
+ "include": "#value"
376
+ }
377
+ ]
378
+ },
379
+ "5": {
380
+ "name": "punctuation.section.block.begin.bracket.curly.nushell"
381
+ }
382
+ },
383
+ "end": "\\}",
384
+ "endCaptures": {
385
+ "0": {
386
+ "name": "punctuation.section.block.end.bracket.curly.nushell"
387
+ }
388
+ },
389
+ "name": "meta.for-loop.nushell",
390
+ "patterns": [
391
+ {
392
+ "include": "source.nushell"
393
+ }
394
+ ]
395
+ },
396
+ "function": {
397
+ "begin": "((?:export\\s+)?def(?:\\s+--\\w+)?)\\s+([\\w\\-]+|\"[\\w\\- ]+\")(\\s+--\\w+)?",
398
+ "beginCaptures": {
399
+ "1": {
400
+ "name": "entity.name.function.nushell"
401
+ },
402
+ "2": {
403
+ "name": "entity.name.type.nushell"
404
+ },
405
+ "3": {
406
+ "name": "entity.name.function.nushell"
407
+ }
408
+ },
409
+ "end": "(?<=\\})",
410
+ "patterns": [
411
+ {
412
+ "include": "#function-parameters"
413
+ },
414
+ {
415
+ "include": "#function-body"
416
+ },
417
+ {
418
+ "include": "#function-inout"
419
+ }
420
+ ]
421
+ },
422
+ "function-body": {
423
+ "begin": "\\{",
424
+ "beginCaptures": {
425
+ "0": {
426
+ "name": "punctuation.definition.function.begin.nushell"
427
+ }
428
+ },
429
+ "end": "\\}",
430
+ "endCaptures": {
431
+ "0": {
432
+ "name": "punctuation.definition.function.end.nushell"
433
+ }
434
+ },
435
+ "name": "meta.function.body.nushell",
436
+ "patterns": [
437
+ {
438
+ "include": "source.nushell"
439
+ }
440
+ ]
441
+ },
442
+ "function-inout": {
443
+ "patterns": [
444
+ {
445
+ "include": "#types"
446
+ },
447
+ {
448
+ "match": "->",
449
+ "name": "keyword.operator.nushell"
450
+ },
451
+ {
452
+ "include": "#function-multiple-inout"
453
+ }
454
+ ]
455
+ },
456
+ "function-multiple-inout": {
457
+ "begin": "(?<=]\\s*)(:)\\s+(\\[)",
458
+ "beginCaptures": {
459
+ "1": {
460
+ "name": "punctuation.definition.in-out.nushell"
461
+ },
462
+ "2": {
463
+ "name": "meta.brace.square.begin.nushell"
464
+ }
465
+ },
466
+ "end": "\\]",
467
+ "endCaptures": {
468
+ "0": {
469
+ "name": "meta.brace.square.end.nushell"
470
+ }
471
+ },
472
+ "patterns": [
473
+ {
474
+ "include": "#types"
475
+ },
476
+ {
477
+ "captures": {
478
+ "1": {
479
+ "name": "punctuation.separator.nushell"
480
+ }
481
+ },
482
+ "match": "\\s*(,)\\s*"
483
+ },
484
+ {
485
+ "captures": {
486
+ "1": {
487
+ "name": "keyword.operator.nushell"
488
+ }
489
+ },
490
+ "match": "\\s+(->)\\s+"
491
+ }
492
+ ]
493
+ },
494
+ "function-parameter": {
495
+ "patterns": [
496
+ {
497
+ "match": "((?:-{0,2}|\\.{3})[\\w-]+)(?:\\((-[\\w?])\\))?",
498
+ "name": "variable.parameter.nushell"
499
+ },
500
+ {
501
+ "begin": "\\??:\\s*",
502
+ "end": "(?=(?:\\s+(?:-{0,2}|\\.{3})[\\w-]+)|(?:\\s*(?:,|\\]|\\||@|=|#|$)))",
503
+ "patterns": [
504
+ {
505
+ "include": "#types"
506
+ }
507
+ ]
508
+ },
509
+ {
510
+ "begin": "@(?=\"|')",
511
+ "end": "(?<=\"|')",
512
+ "patterns": [
513
+ {
514
+ "include": "#string"
515
+ }
516
+ ]
517
+ },
518
+ {
519
+ "begin": "=\\s*",
520
+ "end": "(?=(?:\\s+-{0,2}[\\w-]+)|(?:\\s*(?:,|\\]|\\||#|$)))",
521
+ "name": "default.value.nushell",
522
+ "patterns": [
523
+ {
524
+ "include": "#value"
525
+ }
526
+ ]
527
+ }
528
+ ]
529
+ },
530
+ "function-parameters": {
531
+ "begin": "\\[",
532
+ "beginCaptures": {
533
+ "0": {
534
+ "name": "meta.brace.square.begin.nushell"
535
+ }
536
+ },
537
+ "end": "\\]",
538
+ "endCaptures": {
539
+ "0": {
540
+ "name": "meta.brace.square.end.nushell"
541
+ }
542
+ },
543
+ "name": "meta.function.parameters.nushell",
544
+ "patterns": [
545
+ {
546
+ "include": "#function-parameter"
547
+ },
548
+ {
549
+ "include": "#comment"
550
+ }
551
+ ]
552
+ },
553
+ "internal-variables": {
554
+ "match": "\\$(?:nu|env)\\b",
555
+ "name": "variable.language.nushell"
556
+ },
557
+ "keyword": {
558
+ "match": "(?:def(?:-env)?)",
559
+ "name": "keyword.other.nushell"
560
+ },
561
+ "module": {
562
+ "begin": "((?:export\\s+)?module)\\s+([\\w\\-]+)\\s*\\{",
563
+ "beginCaptures": {
564
+ "1": {
565
+ "name": "entity.name.function.nushell"
566
+ },
567
+ "2": {
568
+ "name": "entity.name.namespace.nushell"
569
+ }
570
+ },
571
+ "end": "\\}",
572
+ "endCaptures": {
573
+ "0": {
574
+ "name": "punctuation.definition.module.end.nushell"
575
+ }
576
+ },
577
+ "name": "meta.module.nushell",
578
+ "patterns": [
579
+ {
580
+ "include": "source.nushell"
581
+ }
582
+ ]
583
+ },
584
+ "numbers": {
585
+ "match": "(?<![\\w-])[-+]?(?:\\d+|\\d{1,3}(?:_\\d{3})*)(?:\\.\\d*)?(?i:ns|us|ms|sec|min|hr|day|wk|b|kb|mb|gb|tb|pt|eb|zb|kib|mib|gib|tib|pit|eib|zib)?(?:(?![\\w.])|(?=\\.\\.))",
586
+ "name": "constant.numeric.nushell"
587
+ },
588
+ "numbers-hexa": {
589
+ "match": "(?<![\\w-])0x[0-9a-fA-F]+(?![\\w.])",
590
+ "name": "constant.numeric.nushell"
591
+ },
592
+ "operators": {
593
+ "patterns": [
594
+ {
595
+ "include": "#operators-word"
596
+ },
597
+ {
598
+ "include": "#operators-symbols"
599
+ },
600
+ {
601
+ "include": "#ranges"
602
+ }
603
+ ]
604
+ },
605
+ "operators-symbols": {
606
+ "match": "(?<= )(?:(?:\\+|\\-|\\*|\\/)=?|\\/\\/|\\*\\*|!=|[<>=]=?|[!=]~|\\+\\+=?)(?= |$)",
607
+ "name": "keyword.control.nushell"
608
+ },
609
+ "operators-word": {
610
+ "match": "(?<= |\\()(?:mod|in|not-in|not|and|or|xor|bit-or|bit-and|bit-xor|bit-shl|bit-shr|starts-with|ends-with)(?= |\\)|$)",
611
+ "name": "keyword.control.nushell"
612
+ },
613
+ "parameters": {
614
+ "match": "\\b-{1,2}[\\w-]*",
615
+ "name": "variable.parameter.nushell"
616
+ },
617
+ "paren-expression": {
618
+ "begin": "\\(",
619
+ "beginCaptures": {
620
+ "0": {
621
+ "name": "meta.brace.round.begin.nushell"
622
+ }
623
+ },
624
+ "end": "\\)",
625
+ "endCaptures": {
626
+ "0": {
627
+ "name": "meta.brace.round.end.nushell"
628
+ }
629
+ },
630
+ "name": "meta.expression.parenthesis.nushell",
631
+ "patterns": [
632
+ {
633
+ "include": "#expression"
634
+ }
635
+ ]
636
+ },
637
+ "pre-command": {
638
+ "begin": "(\\w+)(=)",
639
+ "beginCaptures": {
640
+ "1": {
641
+ "name": "variable.other.nushell"
642
+ },
643
+ "2": {
644
+ "patterns": [
645
+ {
646
+ "include": "#operators"
647
+ }
648
+ ]
649
+ }
650
+ },
651
+ "end": "(?=\\s+)",
652
+ "patterns": [
653
+ {
654
+ "include": "#value"
655
+ }
656
+ ]
657
+ },
658
+ "ranges": {
659
+ "match": "\\.\\.<?|:",
660
+ "name": "keyword.control.nushell"
661
+ },
662
+ "string": {
663
+ "patterns": [
664
+ {
665
+ "include": "#string-single-quote"
666
+ },
667
+ {
668
+ "include": "#string-backtick"
669
+ },
670
+ {
671
+ "include": "#string-double-quote"
672
+ },
673
+ {
674
+ "include": "#string-interpolated-double"
675
+ },
676
+ {
677
+ "include": "#string-interpolated-single"
678
+ },
679
+ {
680
+ "include": "#string-bare"
681
+ }
682
+ ]
683
+ },
684
+ "string-backtick": {
685
+ "begin": "`",
686
+ "beginCaptures": {
687
+ "0": {
688
+ "name": "punctuation.definition.string.begin.nushell"
689
+ }
690
+ },
691
+ "end": "`",
692
+ "endCaptures": {
693
+ "0": {
694
+ "name": "punctuation.definition.string.end.nushell"
695
+ }
696
+ },
697
+ "name": "string.quoted.single.nushell"
698
+ },
699
+ "string-bare": {
700
+ "match": "[^$\\[{(\"',|#\\s|][^\\[\\]{}()\"'\\s#,|]*",
701
+ "name": "string.bare.nushell"
702
+ },
703
+ "string-double-quote": {
704
+ "begin": "\"",
705
+ "beginCaptures": {
706
+ "0": {
707
+ "name": "punctuation.definition.string.begin.nushell"
708
+ }
709
+ },
710
+ "end": "\"",
711
+ "endCaptures": {
712
+ "0": {
713
+ "name": "punctuation.definition.string.end.nushell"
714
+ }
715
+ },
716
+ "name": "string.quoted.double.nushell",
717
+ "patterns": [
718
+ {
719
+ "match": "\\w+"
720
+ },
721
+ {
722
+ "include": "#string-escape"
723
+ }
724
+ ]
725
+ },
726
+ "string-escape": {
727
+ "match": "\\\\(?:[bfrnt\\\\'\"/]|u[0-9a-fA-F]{4})",
728
+ "name": "constant.character.escape.nushell"
729
+ },
730
+ "string-interpolated-double": {
731
+ "begin": "\\$\"",
732
+ "beginCaptures": {
733
+ "0": {
734
+ "name": "punctuation.definition.string.begin.nushell"
735
+ }
736
+ },
737
+ "end": "\"",
738
+ "endCaptures": {
739
+ "0": {
740
+ "name": "punctuation.definition.string.end.nushell"
741
+ }
742
+ },
743
+ "name": "string.interpolated.double.nushell",
744
+ "patterns": [
745
+ {
746
+ "match": "\\\\[()]",
747
+ "name": "constant.character.escape.nushell"
748
+ },
749
+ {
750
+ "include": "#string-escape"
751
+ },
752
+ {
753
+ "include": "#paren-expression"
754
+ }
755
+ ]
756
+ },
757
+ "string-interpolated-single": {
758
+ "begin": "\\$'",
759
+ "beginCaptures": {
760
+ "0": {
761
+ "name": "punctuation.definition.string.begin.nushell"
762
+ }
763
+ },
764
+ "end": "'",
765
+ "endCaptures": {
766
+ "0": {
767
+ "name": "punctuation.definition.string.end.nushell"
768
+ }
769
+ },
770
+ "name": "string.interpolated.single.nushell",
771
+ "patterns": [
772
+ {
773
+ "include": "#paren-expression"
774
+ }
775
+ ]
776
+ },
777
+ "string-single-quote": {
778
+ "begin": "'",
779
+ "beginCaptures": {
780
+ "0": {
781
+ "name": "punctuation.definition.string.begin.nushell"
782
+ }
783
+ },
784
+ "end": "'",
785
+ "endCaptures": {
786
+ "0": {
787
+ "name": "punctuation.definition.string.end.nushell"
788
+ }
789
+ },
790
+ "name": "string.quoted.single.nushell"
791
+ },
792
+ "table": {
793
+ "begin": "\\[",
794
+ "beginCaptures": {
795
+ "0": {
796
+ "name": "meta.brace.square.begin.nushell"
797
+ }
798
+ },
799
+ "end": "\\]",
800
+ "endCaptures": {
801
+ "0": {
802
+ "name": "meta.brace.square.end.nushell"
803
+ }
804
+ },
805
+ "name": "meta.table.nushell",
806
+ "patterns": [
807
+ {
808
+ "include": "#value"
809
+ },
810
+ {
811
+ "match": ",",
812
+ "name": "punctuation.separator.nushell"
813
+ },
814
+ {
815
+ "include": "#comment"
816
+ }
817
+ ]
818
+ },
819
+ "types": {
820
+ "patterns": [
821
+ {
822
+ "begin": "\\b(list)\\s*<",
823
+ "beginCaptures": {
824
+ "1": {
825
+ "name": "entity.name.type.nushell"
826
+ }
827
+ },
828
+ "end": ">",
829
+ "name": "meta.list.nushell",
830
+ "patterns": [
831
+ {
832
+ "include": "#types"
833
+ }
834
+ ]
835
+ },
836
+ {
837
+ "begin": "\\b(record)\\s*<",
838
+ "beginCaptures": {
839
+ "1": {
840
+ "name": "entity.name.type.nushell"
841
+ }
842
+ },
843
+ "end": ">",
844
+ "name": "meta.record.nushell",
845
+ "patterns": [
846
+ {
847
+ "captures": {
848
+ "1": {
849
+ "name": "variable.parameter.nushell"
850
+ }
851
+ },
852
+ "match": "([\\w\\-]+|\"[\\w\\- ]+\"|'[^']+')\\s*:\\s*"
853
+ },
854
+ {
855
+ "include": "#types"
856
+ }
857
+ ]
858
+ },
859
+ {
860
+ "match": "\\b(\\w+)\\b",
861
+ "name": "entity.name.type.nushell"
862
+ }
863
+ ]
864
+ },
865
+ "use-module": {
866
+ "patterns": [
867
+ {
868
+ "captures": {
869
+ "1": {
870
+ "name": "entity.name.function.nushell"
871
+ },
872
+ "2": {
873
+ "name": "entity.name.namespace.nushell"
874
+ },
875
+ "3": {
876
+ "name": "keyword.other.nushell"
877
+ }
878
+ },
879
+ "match": "^\\s*((?:export )?use)\\s+([\\w\\-]+|\"[\\w\\- ]+\"|'[\\w\\- ]+')(?:\\s+([\\w\\-]+|\"[\\w\\- ]+\"|'[\\w\\- ]+'|\\*))?\\s*;?$"
880
+ },
881
+ {
882
+ "begin": "^\\s*((?:export )?use)\\s+([\\w\\-]+|\"[\\w\\- ]+\"|'[\\w\\- ]+')\\s*\\[",
883
+ "beginCaptures": {
884
+ "1": {
885
+ "name": "entity.name.function.nushell"
886
+ },
887
+ "2": {
888
+ "name": "entity.name.namespace.nushell"
889
+ }
890
+ },
891
+ "end": "(\\])\\s*;?\\s*$",
892
+ "endCaptures": {
893
+ "1": {
894
+ "name": "meta.brace.square.end.nushell"
895
+ }
896
+ },
897
+ "patterns": [
898
+ {
899
+ "captures": {
900
+ "1": {
901
+ "name": "keyword.other.nushell"
902
+ }
903
+ },
904
+ "match": "([\\w\\-]+|\"[\\w\\- ]+\"|'[\\w\\- ]+'|\\*),?"
905
+ },
906
+ {
907
+ "include": "#comment"
908
+ }
909
+ ]
910
+ },
911
+ {
912
+ "captures": {
913
+ "2": {
914
+ "name": "entity.name.function.nushell"
915
+ },
916
+ "3": {
917
+ "name": "string.bare.nushell",
918
+ "patterns": [
919
+ {
920
+ "captures": {
921
+ "1": {
922
+ "name": "entity.name.namespace.nushell"
923
+ }
924
+ },
925
+ "match": "([\\w\\- ]+)(?:\\.nu)?(?=$|\"|')"
926
+ }
927
+ ]
928
+ },
929
+ "4": {
930
+ "name": "keyword.other.nushell"
931
+ }
932
+ },
933
+ "match": "(?<path>(?:/|\\\\|~[\\/\\\\]|\\.\\.?[\\/\\\\])?(?:[^\\/\\\\]+[\\/\\\\])*[\\w\\- ]+(?:\\.nu)?){0}^\\s*((?:export )?use)\\s+(\"\\g<path>\"|'\\g<path>\\'|(?![\"'])\\g<path>)(?:\\s+([\\w\\-]+|\"[\\w\\- ]+\"|'[^']+'|\\*))?\\s*;?$"
934
+ },
935
+ {
936
+ "begin": "(?<path>(?:/|\\\\|~[\\/\\\\]|\\.\\.?[\\/\\\\])?(?:[^\\/\\\\]+[\\/\\\\])*[\\w\\- ]+(?:\\.nu)?){0}^\\s*((?:export )?use)\\s+(\"\\g<path>\"|'\\g<path>\\'|(?![\"'])\\g<path>)\\s+\\[",
937
+ "beginCaptures": {
938
+ "2": {
939
+ "name": "entity.name.function.nushell"
940
+ },
941
+ "3": {
942
+ "name": "string.bare.nushell",
943
+ "patterns": [
944
+ {
945
+ "captures": {
946
+ "1": {
947
+ "name": "entity.name.namespace.nushell"
948
+ }
949
+ },
950
+ "match": "([\\w\\- ]+)(?:\\.nu)?(?=$|\"|')"
951
+ }
952
+ ]
953
+ }
954
+ },
955
+ "end": "(\\])\\s*;?\\s*$",
956
+ "endCaptures": {
957
+ "1": {
958
+ "name": "meta.brace.square.end.nushell"
959
+ }
960
+ },
961
+ "patterns": [
962
+ {
963
+ "captures": {
964
+ "0": {
965
+ "name": "keyword.other.nushell"
966
+ }
967
+ },
968
+ "match": "([\\w\\-]+|\"[\\w\\- ]+\"|'[\\w\\- ]+'|\\*),?"
969
+ },
970
+ {
971
+ "include": "#comment"
972
+ }
973
+ ]
974
+ },
975
+ {
976
+ "captures": {
977
+ "0": {
978
+ "name": "entity.name.function.nushell"
979
+ }
980
+ },
981
+ "match": "^\\s*(?:export )?use\\b"
982
+ }
983
+ ]
984
+ },
985
+ "value": {
986
+ "patterns": [
987
+ {
988
+ "include": "#variables"
989
+ },
990
+ {
991
+ "include": "#variable-fields"
992
+ },
993
+ {
994
+ "include": "#control-keywords"
995
+ },
996
+ {
997
+ "include": "#constant-value"
998
+ },
999
+ {
1000
+ "include": "#table"
1001
+ },
1002
+ {
1003
+ "include": "#parameters"
1004
+ },
1005
+ {
1006
+ "include": "#operators"
1007
+ },
1008
+ {
1009
+ "include": "#paren-expression"
1010
+ },
1011
+ {
1012
+ "include": "#braced-expression"
1013
+ },
1014
+ {
1015
+ "include": "#string"
1016
+ },
1017
+ {
1018
+ "include": "#comment"
1019
+ }
1020
+ ]
1021
+ },
1022
+ "variable-fields": {
1023
+ "match": "(?<=\\)|\\}|\\])(?:\\.(?:[\\w-]+|\"[\\w\\- ]+\"))+",
1024
+ "name": "variable.other.nushell"
1025
+ },
1026
+ "variables": {
1027
+ "captures": {
1028
+ "1": {
1029
+ "patterns": [
1030
+ {
1031
+ "include": "#internal-variables"
1032
+ },
1033
+ {
1034
+ "match": "\\$.+",
1035
+ "name": "variable.other.nushell"
1036
+ }
1037
+ ]
1038
+ },
1039
+ "2": {
1040
+ "name": "variable.other.nushell"
1041
+ }
1042
+ },
1043
+ "match": "(\\$[a-zA-Z0-9_]+)((?:\\.(?:[\\w-]+|\"[\\w\\- ]+\"))*)"
1044
+ }
1045
+ },
1046
+ "scopeName": "source.nushell"
1047
+ }