1<?xml version="1.0" encoding="UTF-8"?>
2<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
3<plist version="1.0">
4<dict>
5 <key>fileTypes</key>
6 <array>
7 <string>ps1</string>
8 <string>psm1</string>
9 <string>psd1</string>
10 </array>
11 <key>name</key>
12 <string>PowerShell</string>
13 <key>patterns</key>
14 <array>
15 <dict>
16 <key>begin</key>
17 <string>&lt;#</string>
18 <key>beginCaptures</key>
19 <dict>
20 <key>0</key>
21 <dict>
22 <key>name</key>
23 <string>punctuation.definition.comment.block.begin.powershell</string>
24 </dict>
25 </dict>
26 <key>end</key>
27 <string>#&gt;</string>
28 <key>endCaptures</key>
29 <dict>
30 <key>0</key>
31 <dict>
32 <key>name</key>
33 <string>punctuation.definition.comment.block.end.powershell</string>
34 </dict>
35 </dict>
36 <key>name</key>
37 <string>comment.block.powershell</string>
38 <key>patterns</key>
39 <array>
40 <dict>
41 <key>include</key>
42 <string>#commentEmbeddedDocs</string>
43 </dict>
44 </array>
45 </dict>
46 <dict>
47 <key>match</key>
48 <string>[2-6]&gt;&amp;1|&gt;&gt;|&gt;|&lt;&lt;|&lt;|&gt;|&gt;\||[1-6]&gt;|[1-6]&gt;&gt;</string>
49 <key>name</key>
50 <string>keyword.operator.redirection.powershell</string>
51 </dict>
52 <dict>
53 <key>include</key>
54 <string>#commands</string>
55 </dict>
56 <dict>
57 <key>include</key>
58 <string>#commentLine</string>
59 </dict>
60 <dict>
61 <key>include</key>
62 <string>#variable</string>
63 </dict>
64 <dict>
65 <key>include</key>
66 <string>#subexpression</string>
67 </dict>
68 <dict>
69 <key>include</key>
70 <string>#function</string>
71 </dict>
72 <dict>
73 <key>include</key>
74 <string>#attribute</string>
75 </dict>
76 <dict>
77 <key>include</key>
78 <string>#UsingDirective</string>
79 </dict>
80 <dict>
81 <key>include</key>
82 <string>#type</string>
83 </dict>
84 <dict>
85 <key>include</key>
86 <string>#hashtable</string>
87 </dict>
88 <dict>
89 <key>include</key>
90 <string>#doubleQuotedString</string>
91 </dict>
92 <dict>
93 <key>include</key>
94 <string>#scriptblock</string>
95 </dict>
96 <dict>
97 <key>comment</key>
98 <string>Needed to parse stuff correctly in 'argument mode'. (See about_parsing.)</string>
99 <key>include</key>
100 <string>#doubleQuotedStringEscapes</string>
101 </dict>
102 <dict>
103 <key>begin</key>
104 <string>['\x{2018}-\x{201B}]</string>
105 <key>beginCaptures</key>
106 <dict>
107 <key>0</key>
108 <dict>
109 <key>name</key>
110 <string>punctuation.definition.string.begin.powershell</string>
111 </dict>
112 </dict>
113 <key>end</key>
114 <string>['\x{2018}-\x{201B}]</string>
115 <key>applyEndPatternLast</key>
116 <true/>
117 <key>endCaptures</key>
118 <dict>
119 <key>0</key>
120 <dict>
121 <key>name</key>
122 <string>punctuation.definition.string.end.powershell</string>
123 </dict>
124 </dict>
125 <key>name</key>
126 <string>string.quoted.single.powershell</string>
127 <key>patterns</key>
128 <array>
129 <dict>
130 <key>match</key>
131 <string>['\x{2018}-\x{201B}]{2}</string>
132 <key>name</key>
133 <string>constant.character.escape.powershell</string>
134 </dict>
135 </array>
136 </dict>
137 <dict>
138 <key>begin</key>
139 <string>(@["\x{201C}-\x{201E}])\s*$</string>
140 <key>beginCaptures</key>
141 <dict>
142 <key>1</key>
143 <dict>
144 <key>name</key>
145 <string>punctuation.definition.string.begin.powershell</string>
146 </dict>
147 </dict>
148 <key>end</key>
149 <string>^["\x{201C}-\x{201E}]@</string>
150 <key>endCaptures</key>
151 <dict>
152 <key>0</key>
153 <dict>
154 <key>name</key>
155 <string>punctuation.definition.string.end.powershell</string>
156 </dict>
157 </dict>
158 <key>name</key>
159 <string>string.quoted.double.heredoc.powershell</string>
160 <key>patterns</key>
161 <array>
162 <dict>
163 <key>include</key>
164 <string>#variableNoProperty</string>
165 </dict>
166 <dict>
167 <key>include</key>
168 <string>#doubleQuotedStringEscapes</string>
169 </dict>
170 <dict>
171 <key>include</key>
172 <string>#interpolation</string>
173 </dict>
174 </array>
175 </dict>
176 <dict>
177 <key>begin</key>
178 <string>(@['\x{2018}-\x{201B}])\s*$</string>
179 <key>beginCaptures</key>
180 <dict>
181 <key>1</key>
182 <dict>
183 <key>name</key>
184 <string>punctuation.definition.string.begin.powershell</string>
185 </dict>
186 </dict>
187 <key>end</key>
188 <string>^['\x{2018}-\x{201B}]@</string>
189 <key>endCaptures</key>
190 <dict>
191 <key>0</key>
192 <dict>
193 <key>name</key>
194 <string>punctuation.definition.string.end.powershell</string>
195 </dict>
196 </dict>
197 <key>name</key>
198 <string>string.quoted.single.heredoc.powershell</string>
199 </dict>
200 <dict>
201 <key>include</key>
202 <string>#numericConstant</string>
203 </dict>
204 <dict>
205 <key>begin</key>
206 <string>(@)(\()</string>
207 <key>beginCaptures</key>
208 <dict>
209 <key>1</key>
210 <dict>
211 <key>name</key>
212 <string>keyword.other.array.begin.powershell</string>
213 </dict>
214 <key>2</key>
215 <dict>
216 <key>name</key>
217 <string>punctuation.section.group.begin.powershell</string>
218 </dict>
219 </dict>
220 <key>end</key>
221 <string>\)</string>
222 <key>endCaptures</key>
223 <dict>
224 <key>0</key>
225 <dict>
226 <key>name</key>
227 <string>punctuation.section.group.end.powershell</string>
228 </dict>
229 </dict>
230 <key>name</key>
231 <string>meta.group.array-expression.powershell</string>
232 <key>patterns</key>
233 <array>
234 <dict>
235 <key>include</key>
236 <string>$self</string>
237 </dict>
238 </array>
239 </dict>
240 <dict>
241 <key>begin</key>
242 <string>((\$))(\()</string>
243 <key>beginCaptures</key>
244 <dict>
245 <key>1</key>
246 <dict>
247 <key>name</key>
248 <string>keyword.other.substatement.powershell</string>
249 </dict>
250 <key>2</key>
251 <dict>
252 <key>name</key>
253 <string>punctuation.definition.subexpression.powershell</string>
254 </dict>
255 <key>3</key>
256 <dict>
257 <key>name</key>
258 <string>punctuation.section.group.begin.powershell</string>
259 </dict>
260 </dict>
261 <key>end</key>
262 <string>\)</string>
263 <key>endCaptures</key>
264 <dict>
265 <key>0</key>
266 <dict>
267 <key>name</key>
268 <string>punctuation.section.group.end.powershell</string>
269 </dict>
270 </dict>
271 <key>name</key>
272 <string>meta.group.complex.subexpression.powershell</string>
273 <key>patterns</key>
274 <array>
275 <dict>
276 <key>include</key>
277 <string>$self</string>
278 </dict>
279 </array>
280 </dict>
281 <dict>
282 <key>match</key>
283 <string>(\b(([A-Za-z0-9\-_\.]+)\.(?i:exe|com|cmd|bat))\b)</string>
284 <key>name</key>
285 <string>support.function.powershell</string>
286 </dict>
287 <dict>
288 <key>match</key>
289 <string>(?&lt;!\w|-|\.)((?i:begin|break|catch|clean|continue|data|default|define|do|dynamicparam|else|elseif|end|exit|finally|for|from|if|in|inlinescript|parallel|param|process|return|sequence|switch|throw|trap|try|until|var|while)|%|\?)(?!\w)</string>
290 <key>name</key>
291 <string>keyword.control.powershell</string>
292 </dict>
293 <dict>
294 <key>match</key>
295 <string>(?&lt;!\w|-|[^\)]\.)((?i:(foreach|where)(?!-object))|%|\?)(?!\w)</string>
296 <key>name</key>
297 <string>keyword.control.powershell</string>
298 </dict>
299 <dict>
300 <key>begin</key>
301 <string>(?&lt;!\w)(--%)(?!\w)</string>
302 <key>beginCaptures</key>
303 <dict>
304 <key>1</key>
305 <dict>
306 <key>name</key>
307 <string>keyword.control.powershell</string>
308 </dict>
309 </dict>
310 <key>end</key>
311 <string>$</string>
312 <key>patterns</key>
313 <array>
314 <dict>
315 <key>match</key>
316 <string>.+</string>
317 <key>name</key>
318 <string>string.unquoted.powershell</string>
319 </dict>
320 </array>
321 <key>comment</key>
322 <string>This should be moved to the repository at some point.</string>
323 </dict>
324 <dict>
325 <key>comment</key>
326 <string>This should only be relevant inside a class but will require a rework of how classes are matched. This is a temp fix.</string>
327 <key>match</key>
328 <string>(?&lt;!\w)((?i:hidden|static))(?!\w)</string>
329 <key>name</key>
330 <string>storage.modifier.powershell</string>
331 </dict>
332 <dict>
333 <key>captures</key>
334 <dict>
335 <key>1</key>
336 <dict>
337 <key>name</key>
338 <string>storage.type.powershell</string>
339 </dict>
340 <key>2</key>
341 <dict>
342 <key>name</key>
343 <string>entity.name.function</string>
344 </dict>
345 </dict>
346 <key>comment</key>
347 <string>capture should be entity.name.type, but it doesn't provide a good color in the default schema.</string>
348 <key>match</key>
349 <string>(?&lt;!\w|-)((?i:class)|%|\?)(?:\s)+((?:\p{L}|\d|_|-|)+)\b</string>
350 </dict>
351 <dict>
352 <key>match</key>
353 <string>(?&lt;!\w)-(?i:is(?:not)?|as)\b</string>
354 <key>name</key>
355 <string>keyword.operator.comparison.powershell</string>
356 </dict>
357 <dict>
358 <key>match</key>
359 <string>(?&lt;!\w)-(?i:[ic]?(?:eq|ne|[gl][te]|(?:not)?(?:like|match|contains|in)|replace))(?!\p{L})</string>
360 <key>name</key>
361 <string>keyword.operator.comparison.powershell</string>
362 </dict>
363 <dict>
364 <key>match</key>
365 <string>(?&lt;!\w)-(?i:join|split)(?!\p{L})|!</string>
366 <key>name</key>
367 <string>keyword.operator.unary.powershell</string>
368 </dict>
369 <dict>
370 <key>match</key>
371 <string>(?&lt;!\w)-(?i:and|or|not|xor)(?!\p{L})|!</string>
372 <key>name</key>
373 <string>keyword.operator.logical.powershell</string>
374 </dict>
375 <dict>
376 <key>match</key>
377 <string>(?&lt;!\w)-(?i:band|bor|bnot|bxor|shl|shr)(?!\p{L})</string>
378 <key>name</key>
379 <string>keyword.operator.bitwise.powershell</string>
380 </dict>
381 <dict>
382 <key>match</key>
383 <string>(?&lt;!\w)-(?i:f)(?!\p{L})</string>
384 <key>name</key>
385 <string>keyword.operator.string-format.powershell</string>
386 </dict>
387 <dict>
388 <key>match</key>
389 <string>[+%*/-]?=|[+/*%-]</string>
390 <key>name</key>
391 <string>keyword.operator.assignment.powershell</string>
392 </dict>
393 <dict>
394 <key>match</key>
395 <string>\|{2}|&amp;{2}|;</string>
396 <key>name</key>
397 <string>punctuation.terminator.statement.powershell</string>
398 </dict>
399 <dict>
400 <key>match</key>
401 <string>&amp;|(?&lt;!\w)\.(?= )|`|,|\|</string>
402 <key>name</key>
403 <string>keyword.operator.other.powershell</string>
404 </dict>
405 <dict>
406 <key>comment</key>
407 <string>This is very imprecise, is there a syntax for 'must come after...' </string>
408 <key>match</key>
409 <string>(?&lt;!\s|^)\.\.(?=\-?\d|\(|\$)</string>
410 <key>name</key>
411 <string>keyword.operator.range.powershell</string>
412 </dict>
413 </array>
414 <key>repository</key>
415 <dict>
416 <key>commentLine</key>
417 <dict>
418 <key>begin</key>
419 <string>(?&lt;![`\\-])(#)#*</string>
420 <key>captures</key>
421 <dict>
422 <key>1</key>
423 <dict>
424 <key>name</key>
425 <string>punctuation.definition.comment.powershell</string>
426 </dict>
427 </dict>
428 <key>end</key>
429 <string>$\n?</string>
430 <key>name</key>
431 <string>comment.line.powershell</string>
432 <key>patterns</key>
433 <array>
434 <dict>
435 <key>include</key>
436 <string>#commentEmbeddedDocs</string>
437 </dict>
438 <dict>
439 <key>include</key>
440 <string>#RequiresDirective</string>
441 </dict>
442 </array>
443 </dict>
444 <key>attribute</key>
445 <dict>
446 <key>begin</key>
447 <string>(\[)\s*\b(?i)(cmdletbinding|alias|outputtype|parameter|validatenotnull|validatenotnullorempty|validatecount|validateset|allownull|allowemptycollection|allowemptystring|validatescript|validaterange|validatepattern|validatelength|supportswildcards)\b</string>
448 <key>beginCaptures</key>
449 <dict>
450 <key>1</key>
451 <dict>
452 <key>name</key>
453 <string>punctuation.section.bracket.begin.powershell</string>
454 </dict>
455 <key>2</key>
456 <dict>
457 <key>name</key>
458 <string>support.function.attribute.powershell</string>
459 </dict>
460 </dict>
461 <key>end</key>
462 <string>(\])</string>
463 <key>endCaptures</key>
464 <dict>
465 <key>1</key>
466 <dict>
467 <key>name</key>
468 <string>punctuation.section.bracket.end.powershell</string>
469 </dict>
470 </dict>
471 <key>name</key>
472 <string>meta.attribute.powershell</string>
473 <key>patterns</key>
474 <array>
475 <dict>
476 <key>begin</key>
477 <string>\(</string>
478 <key>beginCaptures</key>
479 <dict>
480 <key>0</key>
481 <dict>
482 <key>name</key>
483 <string>punctuation.section.group.begin.powershell</string>
484 </dict>
485 </dict>
486 <key>end</key>
487 <string>\)</string>
488 <key>endCaptures</key>
489 <dict>
490 <key>0</key>
491 <dict>
492 <key>name</key>
493 <string>punctuation.section.group.end.powershell</string>
494 </dict>
495 </dict>
496 <key>patterns</key>
497 <array>
498 <dict>
499 <key>include</key>
500 <string>$self</string>
501 </dict>
502 <dict>
503 <key>match</key>
504 <string>(?i)\b(mandatory|valuefrompipeline|valuefrompipelinebypropertyname|valuefromremainingarguments|position|parametersetname|defaultparametersetname|supportsshouldprocess|supportspaging|positionalbinding|helpuri|confirmimpact|helpmessage)\b(?:\s+)?(=)?</string>
505 <key>captures</key>
506 <dict>
507 <key>1</key>
508 <dict>
509 <key>name</key>
510 <string>variable.parameter.attribute.powershell</string>
511 </dict>
512 <key>2</key>
513 <dict>
514 <key>name</key>
515 <string>keyword.operator.assignment.powershell</string>
516 </dict>
517 </dict>
518 </dict>
519 </array>
520 </dict>
521 </array>
522 </dict>
523 <key>commands</key>
524 <dict>
525 <key>patterns</key>
526 <array>
527 <dict>
528 <key>comment</key>
529 <string>Verb-Noun pattern:</string>
530 <key>match</key>
531 <string>(?:(\p{L}|\d|_|-|\\|\:)*\\)?\b(?i:Add|Approve|Assert|Backup|Block|Build|Checkpoint|Clear|Close|Compare|Complete|Compress|Confirm|Connect|Convert|ConvertFrom|ConvertTo|Copy|Debug|Deny|Deploy|Disable|Disconnect|Dismount|Edit|Enable|Enter|Exit|Expand|Export|Find|Format|Get|Grant|Group|Hide|Import|Initialize|Install|Invoke|Join|Limit|Lock|Measure|Merge|Mount|Move|New|Open|Optimize|Out|Ping|Pop|Protect|Publish|Push|Read|Receive|Redo|Register|Remove|Rename|Repair|Request|Reset|Resize|Resolve|Restart|Restore|Resume|Revoke|Save|Search|Select|Send|Set|Show|Skip|Split|Start|Step|Stop|Submit|Suspend|Switch|Sync|Test|Trace|Unblock|Undo|Uninstall|Unlock|Unprotect|Unpublish|Unregister|Update|Use|Wait|Watch|Write)\-.+?(?:\.(?i:exe|cmd|bat|ps1))?\b</string>
532 <key>name</key>
533 <string>support.function.powershell</string>
534 </dict>
535 <dict>
536 <key>comment</key>
537 <string>Builtin cmdlets with reserved verbs</string>
538 <key>match</key>
539 <string>(?&lt;!\w)(?i:foreach-object)(?!\w)</string>
540 <key>name</key>
541 <string>support.function.powershell</string>
542 </dict>
543 <dict>
544 <key>comment</key>
545 <string>Builtin cmdlets with reserved verbs</string>
546 <key>match</key>
547 <string>(?&lt;!\w)(?i:where-object)(?!\w)</string>
548 <key>name</key>
549 <string>support.function.powershell</string>
550 </dict>
551 <dict>
552 <key>comment</key>
553 <string>Builtin cmdlets with reserved verbs</string>
554 <key>match</key>
555 <string>(?&lt;!\w)(?i:sort-object)(?!\w)</string>
556 <key>name</key>
557 <string>support.function.powershell</string>
558 </dict>
559 <dict>
560 <key>comment</key>
561 <string>Builtin cmdlets with reserved verbs</string>
562 <key>match</key>
563 <string>(?&lt;!\w)(?i:tee-object)(?!\w)</string>
564 <key>name</key>
565 <string>support.function.powershell</string>
566 </dict>
567 </array>
568 </dict>
569 <key>commentEmbeddedDocs</key>
570 <dict>
571 <key>patterns</key>
572 <array>
573 <dict>
574 <key>captures</key>
575 <dict>
576 <key>1</key>
577 <dict>
578 <key>name</key>
579 <string>constant.string.documentation.powershell</string>
580 </dict>
581 <key>2</key>
582 <dict>
583 <key>name</key>
584 <string>keyword.operator.documentation.powershell</string>
585 </dict>
586 </dict>
587 <key>comment</key>
588 <string>these embedded doc keywords do not support arguments, must be the only thing on the line</string>
589 <key>match</key>
590 <string>(?:^|\G)(?i:\s*(\.)(COMPONENT|DESCRIPTION|EXAMPLE|FUNCTIONALITY|INPUTS|LINK|NOTES|OUTPUTS|ROLE|SYNOPSIS))\s*$</string>
591 <key>name</key>
592 <string>comment.documentation.embedded.powershell</string>
593 </dict>
594 <dict>
595 <key>captures</key>
596 <dict>
597 <key>1</key>
598 <dict>
599 <key>name</key>
600 <string>constant.string.documentation.powershell</string>
601 </dict>
602 <key>2</key>
603 <dict>
604 <key>name</key>
605 <string>keyword.operator.documentation.powershell</string>
606 </dict>
607 <key>3</key>
608 <dict>
609 <key>name</key>
610 <string>keyword.operator.documentation.powershell</string>
611 </dict>
612 </dict>
613 <key>comment</key>
614 <string>these embedded doc keywords require arguments though the type required may be inconsistent, they may not all be able to use the same argument match</string>
615 <key>match</key>
616 <string>(?:^|\G)(?i:\s*(\.)(EXTERNALHELP|FORWARDHELP(?:CATEGORY|TARGETNAME)|PARAMETER|REMOTEHELPRUNSPACE))\s+(.+?)\s*$</string>
617 <key>name</key>
618 <string>comment.documentation.embedded.powershell</string>
619 </dict>
620 </array>
621 </dict>
622 <key>doubleQuotedStringEscapes</key>
623 <dict>
624 <key>patterns</key>
625 <array>
626 <dict>
627 <key>match</key>
628 <string>`[`0abefnrtv'"\x{2018}-\x{201E}$]</string>
629 <key>name</key>
630 <string>constant.character.escape.powershell</string>
631 </dict>
632 <dict>
633 <key>include</key>
634 <string>#unicodeEscape</string>
635 </dict>
636 </array>
637 </dict>
638 <key>unicodeEscape</key>
639 <dict>
640 <key>comment</key>
641 <string>`u{xxxx} added in PowerShell 6.0</string>
642 <key>patterns</key>
643 <array>
644 <dict>
645 <key>match</key>
646 <string>`u\{(?:(?:10)?([0-9a-fA-F]){1,4}|0?\g&lt;1&gt;{1,5})}</string>
647 <key>name</key>
648 <string>constant.character.escape.powershell</string>
649 </dict>
650 <dict>
651 <key>match</key>
652 <string>`u(?:\{[0-9a-fA-F]{,6}.)?</string>
653 <key>name</key>
654 <string>invalid.character.escape.powershell</string>
655 </dict>
656 </array>
657 </dict>
658 <key>function</key>
659 <dict>
660 <key>begin</key>
661 <string>^(?:\s*+)(?i)(function|filter|configuration|workflow)\s+(?:(global|local|script|private):)?((?:\p{L}|\d|_|-|\.)+)</string>
662 <key>beginCaptures</key>
663 <dict>
664 <key>0</key>
665 <dict>
666 <key>name</key>
667 <string>meta.function.powershell</string>
668 </dict>
669 <key>1</key>
670 <dict>
671 <key>name</key>
672 <string>storage.type.powershell</string>
673 </dict>
674 <key>2</key>
675 <dict>
676 <key>name</key>
677 <string>storage.modifier.scope.powershell</string>
678 </dict>
679 <key>3</key>
680 <dict>
681 <key>name</key>
682 <string>entity.name.function.powershell</string>
683 </dict>
684 </dict>
685 <key>end</key>
686 <string>(?=\{|\()</string>
687 <key>patterns</key>
688 <array>
689 <dict>
690 <key>include</key>
691 <string>#commentLine</string>
692 </dict>
693 </array>
694 </dict>
695 <key>subexpression</key>
696 <dict>
697 <key>begin</key>
698 <string>\(</string>
699 <key>beginCaptures</key>
700 <dict>
701 <key>0</key>
702 <dict>
703 <key>name</key>
704 <string>punctuation.section.group.begin.powershell</string>
705 </dict>
706 </dict>
707 <key>end</key>
708 <string>\)</string>
709 <key>endCaptures</key>
710 <dict>
711 <key>0</key>
712 <dict>
713 <key>name</key>
714 <string>punctuation.section.group.end.powershell</string>
715 </dict>
716 </dict>
717 <key>name</key>
718 <string>meta.group.simple.subexpression.powershell</string>
719 <key>patterns</key>
720 <array>
721 <dict>
722 <key>include</key>
723 <string>$self</string>
724 </dict>
725 </array>
726 </dict>
727 <key>interpolation</key>
728 <dict>
729 <key>begin</key>
730 <string>(((\$)))((\())</string>
731 <key>beginCaptures</key>
732 <dict>
733 <key>1</key>
734 <dict>
735 <key>name</key>
736 <string>keyword.other.substatement.powershell</string>
737 </dict>
738 <key>2</key>
739 <dict>
740 <key>name</key>
741 <string>punctuation.definition.substatement.powershell</string>
742 </dict>
743 <key>3</key>
744 <dict>
745 <key>name</key>
746 <string>punctuation.section.embedded.substatement.begin.powershell</string>
747 </dict>
748 <key>4</key>
749 <dict>
750 <key>name</key>
751 <string>punctuation.section.group.begin.powershell</string>
752 </dict>
753 <key>5</key>
754 <dict>
755 <key>name</key>
756 <string>punctuation.section.embedded.substatement.begin.powershell</string>
757 </dict>
758 </dict>
759 <key>contentName</key>
760 <string>interpolated.complex.source.powershell</string>
761 <key>end</key>
762 <string>(\))</string>
763 <key>endCaptures</key>
764 <dict>
765 <key>0</key>
766 <dict>
767 <key>name</key>
768 <string>punctuation.section.group.end.powershell</string>
769 </dict>
770 <key>1</key>
771 <dict>
772 <key>name</key>
773 <string>punctuation.section.embedded.substatement.end.powershell</string>
774 </dict>
775 </dict>
776 <key>name</key>
777 <string>meta.embedded.substatement.powershell</string>
778 <key>patterns</key>
779 <array>
780 <dict>
781 <key>include</key>
782 <string>$self</string>
783 </dict>
784 </array>
785 </dict>
786 <key>numericConstant</key>
787 <dict>
788 <key>patterns</key>
789 <array>
790 <dict>
791 <key>captures</key>
792 <dict>
793 <key>1</key>
794 <dict>
795 <key>name</key>
796 <string>constant.numeric.hex.powershell</string>
797 </dict>
798 <key>2</key>
799 <dict>
800 <key>name</key>
801 <string>keyword.other.powershell</string>
802 </dict>
803 </dict>
804 <key>match</key>
805 <string>(?&lt;!\w)([-+]?0(?:x|X)[0-9a-fA-F_]+(?:U|u|L|l|UL|Ul|uL|ul|LU|Lu|lU|lu)?)((?i:[kmgtp]b)?)\b</string>
806 </dict>
807 <dict>
808 <key>captures</key>
809 <dict>
810 <key>1</key>
811 <dict>
812 <key>name</key>
813 <string>constant.numeric.integer.powershell</string>
814 </dict>
815 <key>2</key>
816 <dict>
817 <key>name</key>
818 <string>keyword.other.powershell</string>
819 </dict>
820 </dict>
821 <key>match</key>
822 <string>(?&lt;!\w)([-+]?(?:[0-9_]+)?\.[0-9_]+(?:(?:e|E)[0-9]+)?(?:F|f|D|d|M|m)?)((?i:[kmgtp]b)?)\b</string>
823 </dict>
824 <dict>
825 <key>captures</key>
826 <dict>
827 <key>1</key>
828 <dict>
829 <key>name</key>
830 <string>constant.numeric.octal.powershell</string>
831 </dict>
832 <key>2</key>
833 <dict>
834 <key>name</key>
835 <string>keyword.other.powershell</string>
836 </dict>
837 </dict>
838 <key>match</key>
839 <string>(?&lt;!\w)([-+]?0(?:b|B)[01_]+(?:U|u|L|l|UL|Ul|uL|ul|LU|Lu|lU|lu)?)((?i:[kmgtp]b)?)\b</string>
840 </dict>
841 <dict>
842 <key>captures</key>
843 <dict>
844 <key>1</key>
845 <dict>
846 <key>name</key>
847 <string>constant.numeric.integer.powershell</string>
848 </dict>
849 <key>2</key>
850 <dict>
851 <key>name</key>
852 <string>keyword.other.powershell</string>
853 </dict>
854 </dict>
855 <key>match</key>
856 <string>(?&lt;!\w)([-+]?[0-9_]+(?:e|E)(?:[0-9_])?+(?:F|f|D|d|M|m)?)((?i:[kmgtp]b)?)\b</string>
857 </dict>
858 <dict>
859 <key>captures</key>
860 <dict>
861 <key>1</key>
862 <dict>
863 <key>name</key>
864 <string>constant.numeric.integer.powershell</string>
865 </dict>
866 <key>2</key>
867 <dict>
868 <key>name</key>
869 <string>keyword.other.powershell</string>
870 </dict>
871 </dict>
872 <key>match</key>
873 <string>(?&lt;!\w)([-+]?[0-9_]+\.(?:e|E)(?:[0-9_])?+(?:F|f|D|d|M|m)?)((?i:[kmgtp]b)?)\b</string>
874 </dict>
875 <dict>
876 <key>captures</key>
877 <dict>
878 <key>1</key>
879 <dict>
880 <key>name</key>
881 <string>constant.numeric.integer.powershell</string>
882 </dict>
883 <key>2</key>
884 <dict>
885 <key>name</key>
886 <string>keyword.other.powershell</string>
887 </dict>
888 </dict>
889 <key>match</key>
890 <string>(?&lt;!\w)([-+]?[0-9_]+[\.]?(?:F|f|D|d|M|m))((?i:[kmgtp]b)?)\b</string>
891 </dict>
892 <dict>
893 <key>captures</key>
894 <dict>
895 <key>1</key>
896 <dict>
897 <key>name</key>
898 <string>constant.numeric.integer.powershell</string>
899 </dict>
900 <key>2</key>
901 <dict>
902 <key>name</key>
903 <string>keyword.other.powershell</string>
904 </dict>
905 </dict>
906 <key>match</key>
907 <string>(?&lt;!\w)([-+]?[0-9_]+[\.]?(?:U|u|L|l|UL|Ul|uL|ul|LU|Lu|lU|lu)?)((?i:[kmgtp]b)?)\b</string>
908 </dict>
909 </array>
910 </dict>
911 <key>scriptblock</key>
912 <dict>
913 <key>begin</key>
914 <string>\{</string>
915 <key>beginCaptures</key>
916 <dict>
917 <key>0</key>
918 <dict>
919 <key>name</key>
920 <string>punctuation.section.braces.begin.powershell</string>
921 </dict>
922 </dict>
923 <key>end</key>
924 <string>\}</string>
925 <key>endCaptures</key>
926 <dict>
927 <key>0</key>
928 <dict>
929 <key>name</key>
930 <string>punctuation.section.braces.end.powershell</string>
931 </dict>
932 </dict>
933 <key>name</key>
934 <string>meta.scriptblock.powershell</string>
935 <key>patterns</key>
936 <array>
937 <dict>
938 <key>include</key>
939 <string>$self</string>
940 </dict>
941 </array>
942 </dict>
943 <key>type</key>
944 <dict>
945 <key>begin</key>
946 <string>\[</string>
947 <key>beginCaptures</key>
948 <dict>
949 <key>0</key>
950 <dict>
951 <key>name</key>
952 <string>punctuation.section.bracket.begin.powershell</string>
953 </dict>
954 </dict>
955 <key>end</key>
956 <string>\]</string>
957 <key>endCaptures</key>
958 <dict>
959 <key>0</key>
960 <dict>
961 <key>name</key>
962 <string>punctuation.section.bracket.end.powershell</string>
963 </dict>
964 </dict>
965 <key>patterns</key>
966 <array>
967 <dict>
968 <key>match</key>
969 <string>(?!\d+|\.)(?:\p{L}|\p{N}|\.)+</string>
970 <key>name</key>
971 <string>storage.type.powershell</string>
972 </dict>
973 <dict>
974 <key>include</key>
975 <string>$self</string>
976 </dict>
977 </array>
978 </dict>
979 <key>variable</key>
980 <dict>
981 <key>patterns</key>
982 <array>
983 <dict>
984 <key>captures</key>
985 <dict>
986 <key>0</key>
987 <dict>
988 <key>name</key>
989 <string>constant.language.powershell</string>
990 </dict>
991 <key>1</key>
992 <dict>
993 <key>name</key>
994 <string>punctuation.definition.variable.powershell</string>
995 </dict>
996 </dict>
997 <key>comment</key>
998 <string>These are special constants.</string>
999 <key>match</key>
1000 <string>(\$)(?i:(False|Null|True))\b</string>
1001 </dict>
1002 <dict>
1003 <key>captures</key>
1004 <dict>
1005 <key>0</key>
1006 <dict>
1007 <key>name</key>
1008 <string>support.constant.variable.powershell</string>
1009 </dict>
1010 <key>1</key>
1011 <dict>
1012 <key>name</key>
1013 <string>punctuation.definition.variable.powershell</string>
1014 </dict>
1015 <key>3</key>
1016 <dict>
1017 <key>name</key>
1018 <string>variable.other.member.powershell</string>
1019 </dict>
1020 </dict>
1021 <key>comment</key>
1022 <string>These are the other built-in constants.</string>
1023 <key>match</key>
1024 <string>(\$)(?i:(Error|ExecutionContext|Host|Home|PID|PsHome|PsVersionTable|ShellID))((?:\.(?:\p{L}|\d|_)+)*\b)?\b</string>
1025 </dict>
1026 <dict>
1027 <key>captures</key>
1028 <dict>
1029 <key>0</key>
1030 <dict>
1031 <key>name</key>
1032 <string>support.variable.automatic.powershell</string>
1033 </dict>
1034 <key>1</key>
1035 <dict>
1036 <key>name</key>
1037 <string>punctuation.definition.variable.powershell</string>
1038 </dict>
1039 <key>3</key>
1040 <dict>
1041 <key>name</key>
1042 <string>variable.other.member.powershell</string>
1043 </dict>
1044 </dict>
1045 <key>comment</key>
1046 <string>Automatic variables are not constants, but they are read-only. In monokai (default) color schema support.variable doesn't have color, so we use constant.</string>
1047 <key>match</key>
1048 <string>(\$)((?:[$^?])|(?i:_|Args|ConsoleFileName|Event|EventArgs|EventSubscriber|ForEach|Input|LastExitCode|Matches|MyInvocation|NestedPromptLevel|Profile|PSBoundParameters|PsCmdlet|PsCulture|PSDebugContext|PSItem|PSCommandPath|PSScriptRoot|PsUICulture|Pwd|Sender|SourceArgs|SourceEventArgs|StackTrace|Switch|This)\b)((?:\.(?:\p{L}|\d|_)+)*\b)?</string>
1049 </dict>
1050 <dict>
1051 <key>captures</key>
1052 <dict>
1053 <key>0</key>
1054 <dict>
1055 <key>name</key>
1056 <string>variable.language.powershell</string>
1057 </dict>
1058 <key>1</key>
1059 <dict>
1060 <key>name</key>
1061 <string>punctuation.definition.variable.powershell</string>
1062 </dict>
1063 <key>3</key>
1064 <dict>
1065 <key>name</key>
1066 <string>variable.other.member.powershell</string>
1067 </dict>
1068 </dict>
1069 <key>comment</key>
1070 <string>Style preference variables as language variables so that they stand out.</string>
1071 <key>match</key>
1072 <string>(\$)(?i:(ConfirmPreference|DebugPreference|ErrorActionPreference|ErrorView|FormatEnumerationLimit|InformationPreference|LogCommandHealthEvent|LogCommandLifecycleEvent|LogEngineHealthEvent|LogEngineLifecycleEvent|LogProviderHealthEvent|LogProviderLifecycleEvent|MaximumAliasCount|MaximumDriveCount|MaximumErrorCount|MaximumFunctionCount|MaximumHistoryCount|MaximumVariableCount|OFS|OutputEncoding|PSCulture|PSDebugContext|PSDefaultParameterValues|PSEmailServer|PSItem|PSModuleAutoLoadingPreference|PSModuleAutoloadingPreference|PSSenderInfo|PSSessionApplicationName|PSSessionConfigurationName|PSSessionOption|ProgressPreference|VerbosePreference|WarningPreference|WhatIfPreference))((?:\.(?:\p{L}|\d|_)+)*\b)?\b</string>
1073 </dict>
1074 <dict>
1075 <key>captures</key>
1076 <dict>
1077 <key>0</key>
1078 <dict>
1079 <key>name</key>
1080 <string>variable.other.readwrite.powershell</string>
1081 </dict>
1082 <key>1</key>
1083 <dict>
1084 <key>name</key>
1085 <string>punctuation.definition.variable.powershell</string>
1086 </dict>
1087 <key>2</key>
1088 <dict>
1089 <key>name</key>
1090 <string>storage.modifier.scope.powershell</string>
1091 </dict>
1092 <key>4</key>
1093 <dict>
1094 <key>name</key>
1095 <string>variable.other.member.powershell</string>
1096 </dict>
1097 </dict>
1098 <key>match</key>
1099 <string>(?i:(\$|@)(global|local|private|script|using|workflow):((?:\p{L}|\d|_)+))((?:\.(?:\p{L}|\d|_)+)*\b)?</string>
1100 </dict>
1101 <dict>
1102 <key>captures</key>
1103 <dict>
1104 <key>0</key>
1105 <dict>
1106 <key>name</key>
1107 <string>variable.other.readwrite.powershell</string>
1108 </dict>
1109 <key>1</key>
1110 <dict>
1111 <key>name</key>
1112 <string>punctuation.definition.variable.powershell</string>
1113 </dict>
1114 <key>2</key>
1115 <dict>
1116 <key>name</key>
1117 <string>punctuation.section.braces.begin.powershell</string>
1118 </dict>
1119 <key>3</key>
1120 <dict>
1121 <key>name</key>
1122 <string>storage.modifier.scope.powershell</string>
1123 </dict>
1124 <key>5</key>
1125 <dict>
1126 <key>name</key>
1127 <string>punctuation.section.braces.end.powershell</string>
1128 </dict>
1129 <key>6</key>
1130 <dict>
1131 <key>name</key>
1132 <string>variable.other.member.powershell</string>
1133 </dict>
1134 </dict>
1135 <key>match</key>
1136 <string>(?i:(\$)(\{)(global|local|private|script|using|workflow):([^}]*[^}`])(\}))((?:\.(?:\p{L}|\d|_)+)*\b)?</string>
1137 </dict>
1138 <dict>
1139 <key>captures</key>
1140 <dict>
1141 <key>0</key>
1142 <dict>
1143 <key>name</key>
1144 <string>variable.other.readwrite.powershell</string>
1145 </dict>
1146 <key>1</key>
1147 <dict>
1148 <key>name</key>
1149 <string>punctuation.definition.variable.powershell</string>
1150 </dict>
1151 <key>2</key>
1152 <dict>
1153 <key>name</key>
1154 <string>support.variable.drive.powershell</string>
1155 </dict>
1156 <key>4</key>
1157 <dict>
1158 <key>name</key>
1159 <string>variable.other.member.powershell</string>
1160 </dict>
1161 </dict>
1162 <key>match</key>
1163 <string>(?i:(\$|@)((?:\p{L}|\d|_)+:)?((?:\p{L}|\d|_)+))((?:\.(?:\p{L}|\d|_)+)*\b)?</string>
1164 </dict>
1165 <dict>
1166 <key>captures</key>
1167 <dict>
1168 <key>0</key>
1169 <dict>
1170 <key>name</key>
1171 <string>variable.other.readwrite.powershell</string>
1172 </dict>
1173 <key>1</key>
1174 <dict>
1175 <key>name</key>
1176 <string>punctuation.definition.variable.powershell</string>
1177 </dict>
1178 <key>2</key>
1179 <dict>
1180 <key>name</key>
1181 <string>punctuation.section.braces.begin.powershell</string>
1182 </dict>
1183 <key>3</key>
1184 <dict>
1185 <key>name</key>
1186 <string>support.variable.drive.powershell</string>
1187 </dict>
1188 <key>5</key>
1189 <dict>
1190 <key>name</key>
1191 <string>punctuation.section.braces.end.powershell</string>
1192 </dict>
1193 <key>6</key>
1194 <dict>
1195 <key>name</key>
1196 <string>variable.other.member.powershell</string>
1197 </dict>
1198 </dict>
1199 <key>match</key>
1200 <string>(?i:(\$)(\{)((?:\p{L}|\d|_)+:)?([^}]*[^}`])(\}))((?:\.(?:\p{L}|\d|_)+)*\b)?</string>
1201 </dict>
1202 </array>
1203 </dict>
1204 <key>UsingDirective</key>
1205 <dict>
1206 <key>match</key>
1207 <string>(?&lt;!\w)(?i:(using))\s+(?i:(namespace|module))\s+(?i:((?:\w+(?:\.)?)+))</string>
1208 <key>captures</key>
1209 <dict>
1210 <key>1</key>
1211 <dict>
1212 <key>name</key>
1213 <string>keyword.control.using.powershell</string>
1214 </dict>
1215 <key>2</key>
1216 <dict>
1217 <key>name</key>
1218 <string>keyword.other.powershell</string>
1219 </dict>
1220 <key>3</key>
1221 <dict>
1222 <key>name</key>
1223 <string>variable.parameter.powershell</string>
1224 </dict>
1225 </dict>
1226 </dict>
1227 <key>RequiresDirective</key>
1228 <dict>
1229 <key>begin</key>
1230 <string>(?&lt;=#)(?i:(requires))\s</string>
1231 <key>beginCaptures</key>
1232 <dict>
1233 <key>0</key>
1234 <dict>
1235 <key>name</key>
1236 <string>keyword.control.requires.powershell</string>
1237 </dict>
1238 </dict>
1239 <key>end</key>
1240 <string>$</string>
1241 <key>name</key>
1242 <string>meta.requires.powershell</string>
1243 <key>patterns</key>
1244 <array>
1245 <dict>
1246 <key>match</key>
1247 <string>\-(?i:Modules|PSSnapin|RunAsAdministrator|ShellId|Version|Assembly|PSEdition)</string>
1248 <key>name</key>
1249 <string>keyword.other.powershell</string>
1250 </dict>
1251 <dict>
1252 <key>match</key>
1253 <string>(?&lt;!-)\b\p{L}+|\d+(?:\.\d+)*</string>
1254 <key>name</key>
1255 <string>variable.parameter.powershell</string>
1256 </dict>
1257 <dict>
1258 <key>include</key>
1259 <string>#hashtable</string>
1260 </dict>
1261 </array>
1262 </dict>
1263 <key>variableNoProperty</key>
1264 <dict>
1265 <key>patterns</key>
1266 <array>
1267 <dict>
1268 <key>captures</key>
1269 <dict>
1270 <key>0</key>
1271 <dict>
1272 <key>name</key>
1273 <string>constant.language.powershell</string>
1274 </dict>
1275 <key>1</key>
1276 <dict>
1277 <key>name</key>
1278 <string>punctuation.definition.variable.powershell</string>
1279 </dict>
1280 </dict>
1281 <key>comment</key>
1282 <string>These are special constants.</string>
1283 <key>match</key>
1284 <string>(\$)(?i:(False|Null|True))\b</string>
1285 </dict>
1286 <dict>
1287 <key>captures</key>
1288 <dict>
1289 <key>0</key>
1290 <dict>
1291 <key>name</key>
1292 <string>support.constant.variable.powershell</string>
1293 </dict>
1294 <key>1</key>
1295 <dict>
1296 <key>name</key>
1297 <string>punctuation.definition.variable.powershell</string>
1298 </dict>
1299 <key>3</key>
1300 <dict>
1301 <key>name</key>
1302 <string>variable.other.member.powershell</string>
1303 </dict>
1304 </dict>
1305 <key>comment</key>
1306 <string>These are the other built-in constants.</string>
1307 <key>match</key>
1308 <string>(\$)(?i:(Error|ExecutionContext|Host|Home|PID|PsHome|PsVersionTable|ShellID))\b</string>
1309 </dict>
1310 <dict>
1311 <key>captures</key>
1312 <dict>
1313 <key>0</key>
1314 <dict>
1315 <key>name</key>
1316 <string>support.variable.automatic.powershell</string>
1317 </dict>
1318 <key>1</key>
1319 <dict>
1320 <key>name</key>
1321 <string>punctuation.definition.variable.powershell</string>
1322 </dict>
1323 <key>3</key>
1324 <dict>
1325 <key>name</key>
1326 <string>variable.other.member.powershell</string>
1327 </dict>
1328 </dict>
1329 <key>comment</key>
1330 <string>Automatic variables are not constants, but they are read-only...</string>
1331 <key>match</key>
1332 <string>(\$)((?:[$^?])|(?i:_|Args|ConsoleFileName|Event|EventArgs|EventSubscriber|ForEach|Input|LastExitCode|Matches|MyInvocation|NestedPromptLevel|Profile|PSBoundParameters|PsCmdlet|PsCulture|PSDebugContext|PSItem|PSCommandPath|PSScriptRoot|PsUICulture|Pwd|Sender|SourceArgs|SourceEventArgs|StackTrace|Switch|This)\b)</string>
1333 </dict>
1334 <dict>
1335 <key>captures</key>
1336 <dict>
1337 <key>0</key>
1338 <dict>
1339 <key>name</key>
1340 <string>variable.language.powershell</string>
1341 </dict>
1342 <key>1</key>
1343 <dict>
1344 <key>name</key>
1345 <string>punctuation.definition.variable.powershell</string>
1346 </dict>
1347 <key>3</key>
1348 <dict>
1349 <key>name</key>
1350 <string>variable.other.member.powershell</string>
1351 </dict>
1352 </dict>
1353 <key>comment</key>
1354 <string>Style preference variables as language variables so that they stand out.</string>
1355 <key>match</key>
1356 <string>(\$)(?i:(ConfirmPreference|DebugPreference|ErrorActionPreference|ErrorView|FormatEnumerationLimit|InformationPreference|LogCommandHealthEvent|LogCommandLifecycleEvent|LogEngineHealthEvent|LogEngineLifecycleEvent|LogProviderHealthEvent|LogProviderLifecycleEvent|MaximumAliasCount|MaximumDriveCount|MaximumErrorCount|MaximumFunctionCount|MaximumHistoryCount|MaximumVariableCount|OFS|OutputEncoding|PSCulture|PSDebugContext|PSDefaultParameterValues|PSEmailServer|PSItem|PSModuleAutoLoadingPreference|PSModuleAutoloadingPreference|PSSenderInfo|PSSessionApplicationName|PSSessionConfigurationName|PSSessionOption|ProgressPreference|VerbosePreference|WarningPreference|WhatIfPreference))\b</string>
1357 </dict>
1358 <dict>
1359 <key>captures</key>
1360 <dict>
1361 <key>0</key>
1362 <dict>
1363 <key>name</key>
1364 <string>variable.other.readwrite.powershell</string>
1365 </dict>
1366 <key>1</key>
1367 <dict>
1368 <key>name</key>
1369 <string>punctuation.definition.variable.powershell</string>
1370 </dict>
1371 <key>2</key>
1372 <dict>
1373 <key>name</key>
1374 <string>storage.modifier.scope.powershell</string>
1375 </dict>
1376 <key>4</key>
1377 <dict>
1378 <key>name</key>
1379 <string>variable.other.member.powershell</string>
1380 </dict>
1381 </dict>
1382 <key>match</key>
1383 <string>(?i:(\$)(global|local|private|script|using|workflow):((?:\p{L}|\d|_)+))</string>
1384 </dict>
1385 <dict>
1386 <key>captures</key>
1387 <dict>
1388 <key>0</key>
1389 <dict>
1390 <key>name</key>
1391 <string>variable.other.readwrite.powershell</string>
1392 </dict>
1393 <key>1</key>
1394 <dict>
1395 <key>name</key>
1396 <string>punctuation.definition.variable.powershell</string>
1397 </dict>
1398 <key>2</key>
1399 <dict>
1400 <key>name</key>
1401 <string>storage.modifier.scope.powershell</string>
1402 </dict>
1403 <key>4</key>
1404 <dict>
1405 <key>name</key>
1406 <string>keyword.other.powershell</string>
1407 </dict>
1408 <key>5</key>
1409 <dict>
1410 <key>name</key>
1411 <string>variable.other.member.powershell</string>
1412 </dict>
1413 </dict>
1414 <key>match</key>
1415 <string>(?i:(\$)(\{)(global|local|private|script|using|workflow):([^}]*[^}`])(\}))</string>
1416 </dict>
1417 <dict>
1418 <key>captures</key>
1419 <dict>
1420 <key>0</key>
1421 <dict>
1422 <key>name</key>
1423 <string>variable.other.readwrite.powershell</string>
1424 </dict>
1425 <key>1</key>
1426 <dict>
1427 <key>name</key>
1428 <string>punctuation.definition.variable.powershell</string>
1429 </dict>
1430 <key>2</key>
1431 <dict>
1432 <key>name</key>
1433 <string>support.variable.drive.powershell</string>
1434 </dict>
1435 <key>4</key>
1436 <dict>
1437 <key>name</key>
1438 <string>variable.other.member.powershell</string>
1439 </dict>
1440 </dict>
1441 <key>match</key>
1442 <string>(?i:(\$)((?:\p{L}|\d|_)+:)?((?:\p{L}|\d|_)+))</string>
1443 </dict>
1444 <dict>
1445 <key>captures</key>
1446 <dict>
1447 <key>0</key>
1448 <dict>
1449 <key>name</key>
1450 <string>variable.other.readwrite.powershell</string>
1451 </dict>
1452 <key>1</key>
1453 <dict>
1454 <key>name</key>
1455 <string>punctuation.definition.variable.powershell</string>
1456 </dict>
1457 <key>2</key>
1458 <dict>
1459 <key>name</key>
1460 <string>punctuation.section.braces.begin</string>
1461 </dict>
1462 <key>3</key>
1463 <dict>
1464 <key>name</key>
1465 <string>support.variable.drive.powershell</string>
1466 </dict>
1467 <key>5</key>
1468 <dict>
1469 <key>name</key>
1470 <string>punctuation.section.braces.end</string>
1471 </dict>
1472 </dict>
1473 <key>match</key>
1474 <string>(?i:(\$)(\{)((?:\p{L}|\d|_)+:)?([^}]*[^}`])(\}))</string>
1475 </dict>
1476 </array>
1477 </dict>
1478 <key>hashtable</key>
1479 <dict>
1480 <key>begin</key>
1481 <string>(@)(\{)</string>
1482 <key>beginCaptures</key>
1483 <dict>
1484 <key>1</key>
1485 <dict>
1486 <key>name</key>
1487 <string>keyword.other.hashtable.begin.powershell</string>
1488 </dict>
1489 <key>2</key>
1490 <dict>
1491 <key>name</key>
1492 <string>punctuation.section.braces.begin.powershell</string>
1493 </dict>
1494 </dict>
1495 <key>end</key>
1496 <string>(\})</string>
1497 <key>endCaptures</key>
1498 <dict>
1499 <key>1</key>
1500 <dict>
1501 <key>name</key>
1502 <string>punctuation.section.braces.end.powershell</string>
1503 </dict>
1504 </dict>
1505 <key>name</key>
1506 <string>meta.hashtable.powershell</string>
1507 <key>patterns</key>
1508 <array>
1509 <dict>
1510 <key>captures</key>
1511 <dict>
1512 <key>1</key>
1513 <dict>
1514 <key>name</key>
1515 <string>punctuation.definition.string.begin.powershell</string>
1516 </dict>
1517 <key>2</key>
1518 <dict>
1519 <key>name</key>
1520 <string>variable.other.readwrite.powershell</string>
1521 </dict>
1522 <key>3</key>
1523 <dict>
1524 <key>name</key>
1525 <string>punctuation.definition.string.end.powershell</string>
1526 </dict>
1527 <key>4</key>
1528 <dict>
1529 <key>name</key>
1530 <string>keyword.operator.assignment.powershell</string>
1531 </dict>
1532 </dict>
1533 <key>match</key>
1534 <string>\b((?:\'|\")?)(\w+)((?:\'|\")?)(?:\s+)?(=)(?:\s+)?</string>
1535 <key>name</key>
1536 <string>meta.hashtable.assignment.powershell</string>
1537 </dict>
1538 <dict>
1539 <key>include</key>
1540 <string>#scriptblock</string>
1541 </dict>
1542 <dict>
1543 <key>include</key>
1544 <string>$self</string>
1545 </dict>
1546 </array>
1547 </dict>
1548 <key>doubleQuotedString</key>
1549 <dict>
1550 <key>begin</key>
1551 <string>["\x{201C}-\x{201E}]</string>
1552 <key>beginCaptures</key>
1553 <dict>
1554 <key>0</key>
1555 <dict>
1556 <key>name</key>
1557 <string>punctuation.definition.string.begin.powershell</string>
1558 </dict>
1559 </dict>
1560 <key>end</key>
1561 <string>["\x{201C}-\x{201E}]</string>
1562 <key>applyEndPatternLast</key>
1563 <true/>
1564 <key>endCaptures</key>
1565 <dict>
1566 <key>0</key>
1567 <dict>
1568 <key>name</key>
1569 <string>punctuation.definition.string.end.powershell</string>
1570 </dict>
1571 </dict>
1572 <key>name</key>
1573 <string>string.quoted.double.powershell</string>
1574 <key>patterns</key>
1575 <array>
1576 <dict>
1577 <key>match</key>
1578 <string>(?i)\b[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,64}\b</string>
1579 </dict>
1580 <dict>
1581 <key>include</key>
1582 <string>#variableNoProperty</string>
1583 </dict>
1584 <dict>
1585 <key>include</key>
1586 <string>#doubleQuotedStringEscapes</string>
1587 </dict>
1588 <dict>
1589 <key>match</key>
1590 <string>["\x{201C}-\x{201E}]{2}</string>
1591 <key>name</key>
1592 <string>constant.character.escape.powershell</string>
1593 </dict>
1594 <dict>
1595 <key>include</key>
1596 <string>#interpolation</string>
1597 </dict>
1598 <dict>
1599 <key>match</key>
1600 <string>`\s*$</string>
1601 <key>name</key>
1602 <string>keyword.other.powershell</string>
1603 </dict>
1604 </array>
1605 </dict>
1606 </dict>
1607 <key>scopeName</key>
1608 <string>source.powershell</string>
1609 <key>uuid</key>
1610 <string>f8f5ffb0-503e-11df-9879-0800200c9a66</string>
1611</dict>
1612</plist>