PluginProbe
Code Block Pro – Beautiful Syntax Highlighting / 1.11.1
Code Block Pro – Beautiful Syntax Highlighting v1.11.1
1.27.1 1.27.2 1.27.3 1.27.4 1.27.5 1.27.6 1.27.7 1.28.0 1.3.0 1.4.0 1.5.0 1.5.1 1.5.2 1.6.0 1.7.0 1.8.0 1.9.0 1.9.1 1.9.2 1.9.3 trunk 1.1.0 1.10.0 1.11.0 1.11.1 All 63 releases
code-block-pro / build / shiki / languages / powershell.tmLanguage.json

powershell.tmLanguage.json in Code Block Pro – Beautiful Syntax Highlighting 1.11.1, at build/shiki/languages/powershell.tmLanguage.json

1,030 lines 31.9 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 {
2 "information_for_contributors": [
3 "This file has been converted from https://github.com/PowerShell/EditorSyntax/blob/master/PowerShellSyntax.tmLanguage",
4 "If you want to provide a fix or improvement, please create a pull request against the original repository.",
5 "Once accepted there, we are happy to receive an update request."
6 ],
7 "version": "https://github.com/PowerShell/EditorSyntax/commit/742f0b5d4b60f5930c0b47fcc1f646860521296e",
8 "name": "powershell",
9 "scopeName": "source.powershell",
10 "patterns": [
11 {
12 "begin": "<#",
13 "beginCaptures": {
14 "0": {
15 "name": "punctuation.definition.comment.block.begin.powershell"
16 }
17 },
18 "end": "#>",
19 "endCaptures": {
20 "0": {
21 "name": "punctuation.definition.comment.block.end.powershell"
22 }
23 },
24 "name": "comment.block.powershell",
25 "patterns": [
26 {
27 "include": "#commentEmbeddedDocs"
28 }
29 ]
30 },
31 {
32 "match": "[2-6]>&1|>>|>|<<|<|>|>\\||[1-6]>|[1-6]>>",
33 "name": "keyword.operator.redirection.powershell"
34 },
35 {
36 "include": "#commands"
37 },
38 {
39 "include": "#commentLine"
40 },
41 {
42 "include": "#variable"
43 },
44 {
45 "include": "#subexpression"
46 },
47 {
48 "include": "#function"
49 },
50 {
51 "include": "#attribute"
52 },
53 {
54 "include": "#UsingDirective"
55 },
56 {
57 "include": "#type"
58 },
59 {
60 "include": "#hashtable"
61 },
62 {
63 "include": "#doubleQuotedString"
64 },
65 {
66 "include": "#scriptblock"
67 },
68 {
69 "comment": "Needed to parse stuff correctly in 'argument mode'. (See about_parsing.)",
70 "include": "#doubleQuotedStringEscapes"
71 },
72 {
73 "begin": "['\\x{2018}-\\x{201B}]",
74 "beginCaptures": {
75 "0": {
76 "name": "punctuation.definition.string.begin.powershell"
77 }
78 },
79 "end": "['\\x{2018}-\\x{201B}]",
80 "applyEndPatternLast": true,
81 "endCaptures": {
82 "0": {
83 "name": "punctuation.definition.string.end.powershell"
84 }
85 },
86 "name": "string.quoted.single.powershell",
87 "patterns": [
88 {
89 "match": "['\\x{2018}-\\x{201B}]{2}",
90 "name": "constant.character.escape.powershell"
91 }
92 ]
93 },
94 {
95 "begin": "(@[\"\\x{201C}-\\x{201E}])\\s*$",
96 "beginCaptures": {
97 "1": {
98 "name": "punctuation.definition.string.begin.powershell"
99 }
100 },
101 "end": "^[\"\\x{201C}-\\x{201E}]@",
102 "endCaptures": {
103 "0": {
104 "name": "punctuation.definition.string.end.powershell"
105 }
106 },
107 "name": "string.quoted.double.heredoc.powershell",
108 "patterns": [
109 {
110 "include": "#variableNoProperty"
111 },
112 {
113 "include": "#doubleQuotedStringEscapes"
114 },
115 {
116 "include": "#interpolation"
117 }
118 ]
119 },
120 {
121 "begin": "(@['\\x{2018}-\\x{201B}])\\s*$",
122 "beginCaptures": {
123 "1": {
124 "name": "punctuation.definition.string.begin.powershell"
125 }
126 },
127 "end": "^['\\x{2018}-\\x{201B}]@",
128 "endCaptures": {
129 "0": {
130 "name": "punctuation.definition.string.end.powershell"
131 }
132 },
133 "name": "string.quoted.single.heredoc.powershell"
134 },
135 {
136 "include": "#numericConstant"
137 },
138 {
139 "begin": "(@)(\\()",
140 "beginCaptures": {
141 "1": {
142 "name": "keyword.other.array.begin.powershell"
143 },
144 "2": {
145 "name": "punctuation.section.group.begin.powershell"
146 }
147 },
148 "end": "\\)",
149 "endCaptures": {
150 "0": {
151 "name": "punctuation.section.group.end.powershell"
152 }
153 },
154 "name": "meta.group.array-expression.powershell",
155 "patterns": [
156 {
157 "include": "$self"
158 }
159 ]
160 },
161 {
162 "begin": "((\\$))(\\()",
163 "beginCaptures": {
164 "1": {
165 "name": "keyword.other.substatement.powershell"
166 },
167 "2": {
168 "name": "punctuation.definition.subexpression.powershell"
169 },
170 "3": {
171 "name": "punctuation.section.group.begin.powershell"
172 }
173 },
174 "comment": "TODO: move to repo; make recursive.",
175 "end": "\\)",
176 "endCaptures": {
177 "0": {
178 "name": "punctuation.section.group.end.powershell"
179 }
180 },
181 "name": "meta.group.complex.subexpression.powershell",
182 "patterns": [
183 {
184 "include": "$self"
185 }
186 ]
187 },
188 {
189 "match": "(\\b(([A-Za-z0-9\\-_\\.]+)\\.(?i:exe|com|cmd|bat))\\b)",
190 "name": "support.function.powershell"
191 },
192 {
193 "match": "(?<!\\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)",
194 "name": "keyword.control.powershell"
195 },
196 {
197 "match": "(?<!\\w|-|[^\\)]\\.)((?i:(foreach|where)(?!-object))|%|\\?)(?!\\w)",
198 "name": "keyword.control.powershell"
199 },
200 {
201 "begin": "(?<!\\w)(--%)(?!\\w)",
202 "beginCaptures": {
203 "1": {
204 "name": "keyword.control.powershell"
205 }
206 },
207 "end": "$",
208 "patterns": [
209 {
210 "match": ".+",
211 "name": "string.unquoted.powershell"
212 }
213 ],
214 "comment": "This should be moved to the repository at some point."
215 },
216 {
217 "comment": "This should only be relevant inside a class but will require a rework of how classes are matched. This is a temp fix.",
218 "match": "(?<!\\w)((?i:hidden|static))(?!\\w)",
219 "name": "storage.modifier.powershell"
220 },
221 {
222 "captures": {
223 "1": {
224 "name": "storage.type.powershell"
225 },
226 "2": {
227 "name": "entity.name.function"
228 }
229 },
230 "comment": "capture should be entity.name.type, but it doesn't provide a good color in the default schema.",
231 "match": "(?<!\\w|-)((?i:class)|%|\\?)(?:\\s)+((?:\\p{L}|\\d|_|-|)+)\\b"
232 },
233 {
234 "match": "(?<!\\w)-(?i:is(?:not)?|as)\\b",
235 "name": "keyword.operator.comparison.powershell"
236 },
237 {
238 "match": "(?<!\\w)-(?i:[ic]?(?:eq|ne|[gl][te]|(?:not)?(?:like|match|contains|in)|replace))(?!\\p{L})",
239 "name": "keyword.operator.comparison.powershell"
240 },
241 {
242 "match": "(?<!\\w)-(?i:join|split)(?!\\p{L})|!",
243 "name": "keyword.operator.unary.powershell"
244 },
245 {
246 "match": "(?<!\\w)-(?i:and|or|not|xor)(?!\\p{L})|!",
247 "name": "keyword.operator.logical.powershell"
248 },
249 {
250 "match": "(?<!\\w)-(?i:band|bor|bnot|bxor|shl|shr)(?!\\p{L})",
251 "name": "keyword.operator.bitwise.powershell"
252 },
253 {
254 "match": "(?<!\\w)-(?i:f)(?!\\p{L})",
255 "name": "keyword.operator.string-format.powershell"
256 },
257 {
258 "match": "[+%*/-]?=|[+/*%-]",
259 "name": "keyword.operator.assignment.powershell"
260 },
261 {
262 "match": "\\|{2}|&{2}|;",
263 "name": "punctuation.terminator.statement.powershell"
264 },
265 {
266 "match": "&|(?<!\\w)\\.(?= )|`|,|\\|",
267 "name": "keyword.operator.other.powershell"
268 },
269 {
270 "comment": "This is very imprecise, is there a syntax for 'must come after...' ",
271 "match": "(?<!\\s|^)\\.\\.(?=\\-?\\d|\\(|\\$)",
272 "name": "keyword.operator.range.powershell"
273 }
274 ],
275 "repository": {
276 "commentLine": {
277 "begin": "(?<![`\\\\-])(#)#*",
278 "captures": {
279 "1": {
280 "name": "punctuation.definition.comment.powershell"
281 }
282 },
283 "end": "$\\n?",
284 "name": "comment.line.powershell",
285 "patterns": [
286 {
287 "include": "#commentEmbeddedDocs"
288 },
289 {
290 "include": "#RequiresDirective"
291 }
292 ]
293 },
294 "attribute": {
295 "begin": "(\\[)\\s*\\b(?i)(cmdletbinding|alias|outputtype|parameter|validatenotnull|validatenotnullorempty|validatecount|validateset|allownull|allowemptycollection|allowemptystring|validatescript|validaterange|validatepattern|validatelength|supportswildcards)\\b",
296 "beginCaptures": {
297 "1": {
298 "name": "punctuation.section.bracket.begin.powershell"
299 },
300 "2": {
301 "name": "support.function.attribute.powershell"
302 }
303 },
304 "end": "(\\])",
305 "endCaptures": {
306 "1": {
307 "name": "punctuation.section.bracket.end.powershell"
308 }
309 },
310 "name": "meta.attribute.powershell",
311 "patterns": [
312 {
313 "begin": "\\(",
314 "beginCaptures": {
315 "0": {
316 "name": "punctuation.section.group.begin.powershell"
317 }
318 },
319 "end": "\\)",
320 "endCaptures": {
321 "0": {
322 "name": "punctuation.section.group.end.powershell"
323 }
324 },
325 "patterns": [
326 {
327 "include": "$self"
328 },
329 {
330 "match": "(?i)\\b(mandatory|valuefrompipeline|valuefrompipelinebypropertyname|valuefromremainingarguments|position|parametersetname|defaultparametersetname|supportsshouldprocess|supportspaging|positionalbinding|helpuri|confirmimpact|helpmessage)\\b(?:\\s+)?(=)?",
331 "captures": {
332 "1": {
333 "name": "variable.parameter.attribute.powershell"
334 },
335 "2": {
336 "name": "keyword.operator.assignment.powershell"
337 }
338 }
339 }
340 ]
341 }
342 ]
343 },
344 "commands": {
345 "patterns": [
346 {
347 "comment": "Verb-Noun pattern:",
348 "match": "(?:(\\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",
349 "name": "support.function.powershell"
350 },
351 {
352 "comment": "Builtin cmdlets with reserved verbs",
353 "match": "(?<!\\w)(?i:foreach-object)(?!\\w)",
354 "name": "support.function.powershell"
355 },
356 {
357 "comment": "Builtin cmdlets with reserved verbs",
358 "match": "(?<!\\w)(?i:where-object)(?!\\w)",
359 "name": "support.function.powershell"
360 },
361 {
362 "comment": "Builtin cmdlets with reserved verbs",
363 "match": "(?<!\\w)(?i:sort-object)(?!\\w)",
364 "name": "support.function.powershell"
365 },
366 {
367 "comment": "Builtin cmdlets with reserved verbs",
368 "match": "(?<!\\w)(?i:tee-object)(?!\\w)",
369 "name": "support.function.powershell"
370 }
371 ]
372 },
373 "commentEmbeddedDocs": {
374 "patterns": [
375 {
376 "captures": {
377 "1": {
378 "name": "constant.string.documentation.powershell"
379 },
380 "2": {
381 "name": "keyword.operator.documentation.powershell"
382 }
383 },
384 "comment": "these embedded doc keywords do not support arguments, must be the only thing on the line",
385 "match": "(?:^|\\G)(?i:\\s*(\\.)(COMPONENT|DESCRIPTION|EXAMPLE|FUNCTIONALITY|INPUTS|LINK|NOTES|OUTPUTS|ROLE|SYNOPSIS))\\s*$",
386 "name": "comment.documentation.embedded.powershell"
387 },
388 {
389 "captures": {
390 "1": {
391 "name": "constant.string.documentation.powershell"
392 },
393 "2": {
394 "name": "keyword.operator.documentation.powershell"
395 },
396 "3": {
397 "name": "keyword.operator.documentation.powershell"
398 }
399 },
400 "comment": "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",
401 "match": "(?:^|\\G)(?i:\\s*(\\.)(EXTERNALHELP|FORWARDHELP(?:CATEGORY|TARGETNAME)|PARAMETER|REMOTEHELPRUNSPACE))\\s+(.+?)\\s*$",
402 "name": "comment.documentation.embedded.powershell"
403 }
404 ]
405 },
406 "doubleQuotedStringEscapes": {
407 "patterns": [
408 {
409 "match": "`[`0abefnrtv'\"\\x{2018}-\\x{201E}$]",
410 "name": "constant.character.escape.powershell"
411 },
412 {
413 "include": "#unicodeEscape"
414 }
415 ]
416 },
417 "unicodeEscape": {
418 "comment": "`u{xxxx} added in PowerShell 6.0",
419 "patterns": [
420 {
421 "match": "`u\\{(?:(?:10)?([0-9a-fA-F]){1,4}|0?\\g<1>{1,5})}",
422 "name": "constant.character.escape.powershell"
423 },
424 {
425 "match": "`u(?:\\{[0-9a-fA-F]{,6}.)?",
426 "name": "invalid.character.escape.powershell"
427 }
428 ]
429 },
430 "function": {
431 "begin": "^(?:\\s*+)(?i)(function|filter|configuration|workflow)\\s+(?:(global|local|script|private):)?((?:\\p{L}|\\d|_|-|\\.)+)",
432 "beginCaptures": {
433 "0": {
434 "name": "meta.function.powershell"
435 },
436 "1": {
437 "name": "storage.type.powershell"
438 },
439 "2": {
440 "name": "storage.modifier.scope.powershell"
441 },
442 "3": {
443 "name": "entity.name.function.powershell"
444 }
445 },
446 "end": "(?=\\{|\\()",
447 "patterns": [
448 {
449 "include": "#commentLine"
450 }
451 ]
452 },
453 "subexpression": {
454 "begin": "\\(",
455 "beginCaptures": {
456 "0": {
457 "name": "punctuation.section.group.begin.powershell"
458 }
459 },
460 "end": "\\)",
461 "endCaptures": {
462 "0": {
463 "name": "punctuation.section.group.end.powershell"
464 }
465 },
466 "name": "meta.group.simple.subexpression.powershell",
467 "patterns": [
468 {
469 "include": "$self"
470 }
471 ]
472 },
473 "interpolation": {
474 "begin": "(((\\$)))((\\())",
475 "beginCaptures": {
476 "1": {
477 "name": "keyword.other.substatement.powershell"
478 },
479 "2": {
480 "name": "punctuation.definition.substatement.powershell"
481 },
482 "3": {
483 "name": "punctuation.section.embedded.substatement.begin.powershell"
484 },
485 "4": {
486 "name": "punctuation.section.group.begin.powershell"
487 },
488 "5": {
489 "name": "punctuation.section.embedded.substatement.begin.powershell"
490 }
491 },
492 "contentName": "interpolated.complex.source.powershell",
493 "end": "(\\))",
494 "endCaptures": {
495 "0": {
496 "name": "punctuation.section.group.end.powershell"
497 },
498 "1": {
499 "name": "punctuation.section.embedded.substatement.end.powershell"
500 }
501 },
502 "name": "meta.embedded.substatement.powershell",
503 "patterns": [
504 {
505 "include": "$self"
506 }
507 ]
508 },
509 "numericConstant": {
510 "patterns": [
511 {
512 "captures": {
513 "1": {
514 "name": "constant.numeric.hex.powershell"
515 },
516 "2": {
517 "name": "keyword.other.powershell"
518 }
519 },
520 "match": "(?<!\\w)([-+]?0(?:x|X)[0-9a-fA-F_]+(?:U|u|L|l|UL|Ul|uL|ul|LU|Lu|lU|lu)?)((?i:[kmgtp]b)?)\\b"
521 },
522 {
523 "captures": {
524 "1": {
525 "name": "constant.numeric.integer.powershell"
526 },
527 "2": {
528 "name": "keyword.other.powershell"
529 }
530 },
531 "match": "(?<!\\w)([-+]?(?:[0-9_]+)?\\.[0-9_]+(?:(?:e|E)[0-9]+)?(?:F|f|D|d|M|m)?)((?i:[kmgtp]b)?)\\b"
532 },
533 {
534 "captures": {
535 "1": {
536 "name": "constant.numeric.octal.powershell"
537 },
538 "2": {
539 "name": "keyword.other.powershell"
540 }
541 },
542 "match": "(?<!\\w)([-+]?0(?:b|B)[01_]+(?:U|u|L|l|UL|Ul|uL|ul|LU|Lu|lU|lu)?)((?i:[kmgtp]b)?)\\b"
543 },
544 {
545 "captures": {
546 "1": {
547 "name": "constant.numeric.integer.powershell"
548 },
549 "2": {
550 "name": "keyword.other.powershell"
551 }
552 },
553 "match": "(?<!\\w)([-+]?[0-9_]+(?:e|E)(?:[0-9_])?+(?:F|f|D|d|M|m)?)((?i:[kmgtp]b)?)\\b"
554 },
555 {
556 "captures": {
557 "1": {
558 "name": "constant.numeric.integer.powershell"
559 },
560 "2": {
561 "name": "keyword.other.powershell"
562 }
563 },
564 "match": "(?<!\\w)([-+]?[0-9_]+\\.(?:e|E)(?:[0-9_])?+(?:F|f|D|d|M|m)?)((?i:[kmgtp]b)?)\\b"
565 },
566 {
567 "captures": {
568 "1": {
569 "name": "constant.numeric.integer.powershell"
570 },
571 "2": {
572 "name": "keyword.other.powershell"
573 }
574 },
575 "match": "(?<!\\w)([-+]?[0-9_]+[\\.]?(?:F|f|D|d|M|m))((?i:[kmgtp]b)?)\\b"
576 },
577 {
578 "captures": {
579 "1": {
580 "name": "constant.numeric.integer.powershell"
581 },
582 "2": {
583 "name": "keyword.other.powershell"
584 }
585 },
586 "match": "(?<!\\w)([-+]?[0-9_]+[\\.]?(?:U|u|L|l|UL|Ul|uL|ul|LU|Lu|lU|lu)?)((?i:[kmgtp]b)?)\\b"
587 }
588 ]
589 },
590 "scriptblock": {
591 "begin": "\\{",
592 "beginCaptures": {
593 "0": {
594 "name": "punctuation.section.braces.begin.powershell"
595 }
596 },
597 "end": "\\}",
598 "endCaptures": {
599 "0": {
600 "name": "punctuation.section.braces.end.powershell"
601 }
602 },
603 "name": "meta.scriptblock.powershell",
604 "patterns": [
605 {
606 "include": "$self"
607 }
608 ]
609 },
610 "type": {
611 "begin": "\\[",
612 "beginCaptures": {
613 "0": {
614 "name": "punctuation.section.bracket.begin.powershell"
615 }
616 },
617 "end": "\\]",
618 "endCaptures": {
619 "0": {
620 "name": "punctuation.section.bracket.end.powershell"
621 }
622 },
623 "patterns": [
624 {
625 "match": "(?!\\d+|\\.)(?:\\p{L}|\\p{N}|\\.)+",
626 "name": "storage.type.powershell"
627 },
628 {
629 "include": "$self"
630 }
631 ]
632 },
633 "variable": {
634 "patterns": [
635 {
636 "captures": {
637 "0": {
638 "name": "constant.language.powershell"
639 },
640 "1": {
641 "name": "punctuation.definition.variable.powershell"
642 }
643 },
644 "comment": "These are special constants.",
645 "match": "(\\$)(?i:(False|Null|True))\\b"
646 },
647 {
648 "captures": {
649 "0": {
650 "name": "support.constant.variable.powershell"
651 },
652 "1": {
653 "name": "punctuation.definition.variable.powershell"
654 },
655 "3": {
656 "name": "variable.other.member.powershell"
657 }
658 },
659 "comment": "These are the other built-in constants.",
660 "match": "(\\$)(?i:(Error|ExecutionContext|Host|Home|PID|PsHome|PsVersionTable|ShellID))((?:\\.(?:\\p{L}|\\d|_)+)*\\b)?\\b"
661 },
662 {
663 "captures": {
664 "0": {
665 "name": "support.variable.automatic.powershell"
666 },
667 "1": {
668 "name": "punctuation.definition.variable.powershell"
669 },
670 "3": {
671 "name": "variable.other.member.powershell"
672 }
673 },
674 "comment": "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.",
675 "match": "(\\$)((?:[$^?])|(?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)?"
676 },
677 {
678 "captures": {
679 "0": {
680 "name": "variable.language.powershell"
681 },
682 "1": {
683 "name": "punctuation.definition.variable.powershell"
684 },
685 "3": {
686 "name": "variable.other.member.powershell"
687 }
688 },
689 "comment": "Style preference variables as language variables so that they stand out.",
690 "match": "(\\$)(?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"
691 },
692 {
693 "captures": {
694 "0": {
695 "name": "variable.other.readwrite.powershell"
696 },
697 "1": {
698 "name": "punctuation.definition.variable.powershell"
699 },
700 "2": {
701 "name": "storage.modifier.scope.powershell"
702 },
703 "4": {
704 "name": "variable.other.member.powershell"
705 }
706 },
707 "match": "(?i:(\\$|@)(global|local|private|script|using|workflow):((?:\\p{L}|\\d|_)+))((?:\\.(?:\\p{L}|\\d|_)+)*\\b)?"
708 },
709 {
710 "captures": {
711 "0": {
712 "name": "variable.other.readwrite.powershell"
713 },
714 "1": {
715 "name": "punctuation.definition.variable.powershell"
716 },
717 "2": {
718 "name": "punctuation.section.braces.begin.powershell"
719 },
720 "3": {
721 "name": "storage.modifier.scope.powershell"
722 },
723 "5": {
724 "name": "punctuation.section.braces.end.powershell"
725 },
726 "6": {
727 "name": "variable.other.member.powershell"
728 }
729 },
730 "match": "(?i:(\\$)(\\{)(global|local|private|script|using|workflow):([^}]*[^}`])(\\}))((?:\\.(?:\\p{L}|\\d|_)+)*\\b)?"
731 },
732 {
733 "captures": {
734 "0": {
735 "name": "variable.other.readwrite.powershell"
736 },
737 "1": {
738 "name": "punctuation.definition.variable.powershell"
739 },
740 "2": {
741 "name": "support.variable.drive.powershell"
742 },
743 "4": {
744 "name": "variable.other.member.powershell"
745 }
746 },
747 "match": "(?i:(\\$|@)((?:\\p{L}|\\d|_)+:)?((?:\\p{L}|\\d|_)+))((?:\\.(?:\\p{L}|\\d|_)+)*\\b)?"
748 },
749 {
750 "captures": {
751 "0": {
752 "name": "variable.other.readwrite.powershell"
753 },
754 "1": {
755 "name": "punctuation.definition.variable.powershell"
756 },
757 "2": {
758 "name": "punctuation.section.braces.begin.powershell"
759 },
760 "3": {
761 "name": "support.variable.drive.powershell"
762 },
763 "5": {
764 "name": "punctuation.section.braces.end.powershell"
765 },
766 "6": {
767 "name": "variable.other.member.powershell"
768 }
769 },
770 "match": "(?i:(\\$)(\\{)((?:\\p{L}|\\d|_)+:)?([^}]*[^}`])(\\}))((?:\\.(?:\\p{L}|\\d|_)+)*\\b)?"
771 }
772 ]
773 },
774 "UsingDirective": {
775 "match": "(?<!\\w)(?i:(using))\\s+(?i:(namespace|module))\\s+(?i:((?:\\w+(?:\\.)?)+))",
776 "captures": {
777 "1": {
778 "name": "keyword.control.using.powershell"
779 },
780 "2": {
781 "name": "keyword.other.powershell"
782 },
783 "3": {
784 "name": "variable.parameter.powershell"
785 }
786 }
787 },
788 "RequiresDirective": {
789 "begin": "(?<=#)(?i:(requires))\\s",
790 "beginCaptures": {
791 "0": {
792 "name": "keyword.control.requires.powershell"
793 }
794 },
795 "end": "$",
796 "name": "meta.requires.powershell",
797 "patterns": [
798 {
799 "match": "\\-(?i:Modules|PSSnapin|RunAsAdministrator|ShellId|Version|Assembly|PSEdition)",
800 "name": "keyword.other.powershell"
801 },
802 {
803 "match": "(?<!-)\\b\\p{L}+|\\d+(?:\\.\\d+)*",
804 "name": "variable.parameter.powershell"
805 },
806 {
807 "include": "#hashtable"
808 }
809 ]
810 },
811 "variableNoProperty": {
812 "patterns": [
813 {
814 "captures": {
815 "0": {
816 "name": "constant.language.powershell"
817 },
818 "1": {
819 "name": "punctuation.definition.variable.powershell"
820 }
821 },
822 "comment": "These are special constants.",
823 "match": "(\\$)(?i:(False|Null|True))\\b"
824 },
825 {
826 "captures": {
827 "0": {
828 "name": "support.constant.variable.powershell"
829 },
830 "1": {
831 "name": "punctuation.definition.variable.powershell"
832 },
833 "3": {
834 "name": "variable.other.member.powershell"
835 }
836 },
837 "comment": "These are the other built-in constants.",
838 "match": "(\\$)(?i:(Error|ExecutionContext|Host|Home|PID|PsHome|PsVersionTable|ShellID))\\b"
839 },
840 {
841 "captures": {
842 "0": {
843 "name": "support.variable.automatic.powershell"
844 },
845 "1": {
846 "name": "punctuation.definition.variable.powershell"
847 },
848 "3": {
849 "name": "variable.other.member.powershell"
850 }
851 },
852 "comment": "Automatic variables are not constants, but they are read-only...",
853 "match": "(\\$)((?:[$^?])|(?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)"
854 },
855 {
856 "captures": {
857 "0": {
858 "name": "variable.language.powershell"
859 },
860 "1": {
861 "name": "punctuation.definition.variable.powershell"
862 },
863 "3": {
864 "name": "variable.other.member.powershell"
865 }
866 },
867 "comment": "Style preference variables as language variables so that they stand out.",
868 "match": "(\\$)(?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"
869 },
870 {
871 "captures": {
872 "0": {
873 "name": "variable.other.readwrite.powershell"
874 },
875 "1": {
876 "name": "punctuation.definition.variable.powershell"
877 },
878 "2": {
879 "name": "storage.modifier.scope.powershell"
880 },
881 "4": {
882 "name": "variable.other.member.powershell"
883 }
884 },
885 "match": "(?i:(\\$)(global|local|private|script|using|workflow):((?:\\p{L}|\\d|_)+))"
886 },
887 {
888 "captures": {
889 "0": {
890 "name": "variable.other.readwrite.powershell"
891 },
892 "1": {
893 "name": "punctuation.definition.variable.powershell"
894 },
895 "2": {
896 "name": "storage.modifier.scope.powershell"
897 },
898 "4": {
899 "name": "keyword.other.powershell"
900 },
901 "5": {
902 "name": "variable.other.member.powershell"
903 }
904 },
905 "match": "(?i:(\\$)(\\{)(global|local|private|script|using|workflow):([^}]*[^}`])(\\}))"
906 },
907 {
908 "captures": {
909 "0": {
910 "name": "variable.other.readwrite.powershell"
911 },
912 "1": {
913 "name": "punctuation.definition.variable.powershell"
914 },
915 "2": {
916 "name": "support.variable.drive.powershell"
917 },
918 "4": {
919 "name": "variable.other.member.powershell"
920 }
921 },
922 "match": "(?i:(\\$)((?:\\p{L}|\\d|_)+:)?((?:\\p{L}|\\d|_)+))"
923 },
924 {
925 "captures": {
926 "0": {
927 "name": "variable.other.readwrite.powershell"
928 },
929 "1": {
930 "name": "punctuation.definition.variable.powershell"
931 },
932 "2": {
933 "name": "punctuation.section.braces.begin"
934 },
935 "3": {
936 "name": "support.variable.drive.powershell"
937 },
938 "5": {
939 "name": "punctuation.section.braces.end"
940 }
941 },
942 "match": "(?i:(\\$)(\\{)((?:\\p{L}|\\d|_)+:)?([^}]*[^}`])(\\}))"
943 }
944 ]
945 },
946 "hashtable": {
947 "begin": "(@)(\\{)",
948 "beginCaptures": {
949 "1": {
950 "name": "keyword.other.hashtable.begin.powershell"
951 },
952 "2": {
953 "name": "punctuation.section.braces.begin.powershell"
954 }
955 },
956 "end": "(\\})",
957 "endCaptures": {
958 "1": {
959 "name": "punctuation.section.braces.end.powershell"
960 }
961 },
962 "name": "meta.hashtable.powershell",
963 "patterns": [
964 {
965 "captures": {
966 "1": {
967 "name": "punctuation.definition.string.begin.powershell"
968 },
969 "2": {
970 "name": "variable.other.readwrite.powershell"
971 },
972 "3": {
973 "name": "punctuation.definition.string.end.powershell"
974 },
975 "4": {
976 "name": "keyword.operator.assignment.powershell"
977 }
978 },
979 "match": "\\b((?:\\'|\\\")?)(\\w+)((?:\\'|\\\")?)(?:\\s+)?(=)(?:\\s+)?",
980 "name": "meta.hashtable.assignment.powershell"
981 },
982 {
983 "include": "#scriptblock"
984 },
985 {
986 "include": "$self"
987 }
988 ]
989 },
990 "doubleQuotedString": {
991 "begin": "[\"\\x{201C}-\\x{201E}]",
992 "beginCaptures": {
993 "0": {
994 "name": "punctuation.definition.string.begin.powershell"
995 }
996 },
997 "end": "[\"\\x{201C}-\\x{201E}]",
998 "applyEndPatternLast": true,
999 "endCaptures": {
1000 "0": {
1001 "name": "punctuation.definition.string.end.powershell"
1002 }
1003 },
1004 "name": "string.quoted.double.powershell",
1005 "patterns": [
1006 {
1007 "match": "(?i)\\b[A-Z0-9._%+-]+@[A-Z0-9.-]+\\.[A-Z]{2,64}\\b"
1008 },
1009 {
1010 "include": "#variableNoProperty"
1011 },
1012 {
1013 "include": "#doubleQuotedStringEscapes"
1014 },
1015 {
1016 "match": "[\"\\x{201C}-\\x{201E}]{2}",
1017 "name": "constant.character.escape.powershell"
1018 },
1019 {
1020 "include": "#interpolation"
1021 },
1022 {
1023 "match": "`\\s*$",
1024 "name": "keyword.other.powershell"
1025 }
1026 ]
1027 }
1028 }
1029 }
1030