Skip to content

Commit 3233f42

Browse files
committed
Added special highlighting rules to switch + some cleanup
1 parent 3d836a9 commit 3233f42

File tree

1 file changed

+82
-203
lines changed

1 file changed

+82
-203
lines changed

PowerShellSyntax.tmLanguage

Lines changed: 82 additions & 203 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,10 @@
6969
<key>include</key>
7070
<string>#stringSingleQuotedHeredoc</string>
7171
</dict>
72+
<dict>
73+
<key>include</key>
74+
<string>#switch</string>
75+
</dict>
7276
<dict>
7377
<key>include</key>
7478
<string>#scriptBlock</string>
@@ -115,20 +119,12 @@
115119
</dict>
116120
<dict>
117121
<key>include</key>
118-
<string>#commands-OLD</string>
119-
</dict>
120-
<dict>
121-
<key>include</key>
122-
<string>#commands-NEW</string>
122+
<string>#commands</string>
123123
</dict>
124124
<dict>
125125
<key>include</key>
126126
<string>#executableFiles</string>
127127
</dict>
128-
<dict>
129-
<key>include</key>
130-
<string>#parameter-OLD</string>
131-
</dict>
132128
<dict>
133129
<key>include</key>
134130
<string>#illegalVariable</string>
@@ -137,10 +133,6 @@
137133
<key>include</key>
138134
<string>#variable</string>
139135
</dict>
140-
<dict>
141-
<key>include</key>
142-
<string>#demoScopeHighlighting</string>
143-
</dict>
144136
</array>
145137
<key>repository</key>
146138
<dict>
@@ -225,43 +217,13 @@
225217
<key>comment</key>
226218
<string>-Parameter value</string>
227219
<key>match</key>
228-
<string>(-\w+)(:)?</string>
220+
<string>\s(-\w+)(:)?</string>
229221
<key>name</key>
230222
<string>variable.parameter.powershell</string>
231223
</dict>
232224
</array>
233225
</dict>
234226
<key>commands</key>
235-
<dict>
236-
<key>patterns</key>
237-
<array>
238-
<dict>
239-
<key>comment</key>
240-
<string>Generic function match based on Verb-Noun pair using list of approved verbs.</string>
241-
<key>match</key>
242-
<string>(?&lt;!\\)\b(?i:Add|Approve|Assert|Backup|Block|Checkpoint|Clear|Close|Compare|Complete|Compress|Confirm|Connect|Convert|ConvertFrom|ConvertTo|Copy|Debug|Deny|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:\w+)\b(?!\.|\\)</string>
243-
<key>name</key>
244-
<string>support.function.powershell</string>
245-
</dict>
246-
<dict>
247-
<key>comment</key>
248-
<string>Built-in commands that don't adhere to the approved verbs standard.</string>
249-
<key>match</key>
250-
<string>(?&lt;!\\)\b(?i:foreach-object|tee-object|where-object|sort-object)\b(?!\.|\\)</string>
251-
<key>name</key>
252-
<string>support.function.powershell</string>
253-
</dict>
254-
<dict>
255-
<key>comment</key>
256-
<string>Built-in aliases</string>
257-
<key>match</key>
258-
<string>(?&lt;!\\|\[)\b(?i:ac|asnp|cat|cd|cfs|chdir|clc|clear|clhy|cli|clp|cls|clv|cnsn|compare|copy|cp|cpi|cpp|curl|cvpa|dbp|del|diff|dir|dnsn|ebp|echo|epal|epcsv|epsn|erase|etsn|exsn|fc|fhx|fl|ft|fw|gal|gbp|gc|gcb|gci|gcm|gcs|gdr|ghy|gi|gjb|gl|gm|gmo|gp|gps|gpv|group|gsn|gsnp|gsv|gu|gv|gwmi|h|history|icm|iex|ihy|ii|ipal|ipcsv|ipmo|ipsn|irm|ise|iwmi|iwr|kill|lp|ls|man|md|measure|mi|mount|move|mp|mv|nal|ndr|ni|nmo|npssc|nsn|nv|ogv|oh|popd|ps|pushd|r|rbp|rcjb|rcsn|rd|rdr|ren|ri|rjb|rm|rmdir|rmo|rni|rnp|rp|rsn|rsnp|rujb|rv|rvpa|rwmi|sajb|sal|saps|sasv|sbp|sc|scb|select|set|shcm|si|sl|sleep|sls|sort|sp|spjb|spps|spsv|start|sujb|sv|swmi|tee|trcm|type|wget|wjb|write)\b(?!\.|\\|\])</string>
259-
<key>name</key>
260-
<string>support.other.alias.powershell</string>
261-
</dict>
262-
</array>
263-
</dict>
264-
<key>commands-NEW</key>
265227
<dict>
266228
<key>patterns</key>
267229
<array>
@@ -736,155 +698,20 @@
736698
<key>name</key>
737699
<string>keyword.control.powershell</string>
738700
</dict>
739-
<key>demoScopeHighlighting</key>
701+
<key>defaultKeyword</key>
740702
<dict>
741-
<key>patterns</key>
742-
<array>
743-
<dict>
744-
<key>match</key>
745-
<string>\b(demo_scope_constantLanguage)\b</string>
746-
<key>name</key>
747-
<string>constant.language</string>
748-
</dict>
749-
<dict>
750-
<key>match</key>
751-
<string>\b(demo_scope_constantNumeric)\b</string>
752-
<key>name</key>
753-
<string>constant.numeric</string>
754-
</dict>
755-
<dict>
756-
<key>match</key>
757-
<string>\b(demo_scope_constantOther)\b</string>
758-
<key>name</key>
759-
<string>constant.other</string>
760-
</dict>
761-
<dict>
762-
<key>match</key>
763-
<string>\b(demo_scope_constantCharacterEscape)\b</string>
764-
<key>name</key>
765-
<string>constant.character.escape</string>
766-
</dict>
767-
<dict>
768-
<key>match</key>
769-
<string>\b(demo_scope_entityOtherAttributeName)\b</string>
770-
<key>name</key>
771-
<string>entity.other.attribute-name</string>
772-
</dict>
773-
<dict>
774-
<key>match</key>
775-
<string>\b(demo_scope_invalid)\b</string>
776-
<key>name</key>
777-
<string>invalid</string>
778-
</dict>
779-
<dict>
780-
<key>match</key>
781-
<string>\b(demo_scope_comment)\b</string>
782-
<key>name</key>
783-
<string>comment</string>
784-
</dict>
785-
<dict>
786-
<key>match</key>
787-
<string>\b(demo_scope_metaSelector)\b</string>
788-
<key>name</key>
789-
<string>meta.selector</string>
790-
</dict>
791-
<dict>
792-
<key>match</key>
793-
<string>\b(demo_scope_storageType)\b</string>
794-
<key>name</key>
795-
<string>storage.type</string>
796-
</dict>
797-
<dict>
798-
<key>match</key>
799-
<string>\b(demo_scope_string)\b</string>
800-
<key>name</key>
801-
<string>string</string>
802-
</dict>
803-
<dict>
804-
<key>match</key>
805-
<string>\b(demo_scope_keywordControl)\b</string>
806-
<key>name</key>
807-
<string>keyword.control</string>
808-
</dict>
809-
<dict>
810-
<key>match</key>
811-
<string>\b(demo_scope_keywordOperator)\b</string>
812-
<key>name</key>
813-
<string>keyword.operator</string>
814-
</dict>
815-
<dict>
816-
<key>match</key>
817-
<string>\b(demo_scope_keywordOtherUnit)\b</string>
818-
<key>name</key>
819-
<string>keyword.other.unit</string>
820-
</dict>
821-
<dict>
822-
<key>match</key>
823-
<string>\b(demo_scope_supportType)\b</string>
824-
<key>name</key>
825-
<string>support.type</string>
826-
</dict>
827-
<dict>
828-
<key>match</key>
829-
<string>\b(demo_scope_supportConstant)\b</string>
830-
<key>name</key>
831-
<string>support.constant</string>
832-
</dict>
833-
<dict>
834-
<key>match</key>
835-
<string>\b(demo_scope_supportVariable)\b</string>
836-
<key>name</key>
837-
<string>support.variable</string>
838-
</dict>
839-
<dict>
840-
<key>match</key>
841-
<string>\b(demo_scope_entityNameClass)\b</string>
842-
<key>name</key>
843-
<string>entity.name.class</string>
844-
</dict>
845-
<dict>
846-
<key>match</key>
847-
<string>\b(demo_scope_entityNameType)\b</string>
848-
<key>name</key>
849-
<string>entity.name.type</string>
850-
</dict>
851-
<dict>
852-
<key>match</key>
853-
<string>\b(demo_scope_entityNameFunction)\b</string>
854-
<key>name</key>
855-
<string>entity.name.function</string>
856-
</dict>
857-
<dict>
858-
<key>match</key>
859-
<string>\b(demo_scope_metaParameterTypeVariable)\b</string>
860-
<key>name</key>
861-
<string>meta.parameter.type.variable</string>
862-
</dict>
863-
<dict>
864-
<key>match</key>
865-
<string>\b(demo_scope_metaTypeAnnotation)\b</string>
866-
<key>name</key>
867-
<string>meta.type.annotation</string>
868-
</dict>
869-
<dict>
870-
<key>match</key>
871-
<string>\b(demo_scope_variableParameter)\b</string>
872-
<key>name</key>
873-
<string>variable.parameter</string>
874-
</dict>
875-
<dict>
876-
<key>match</key>
877-
<string>\b(demo_scope_variableLanguage)\b</string>
878-
<key>name</key>
879-
<string>variable.language</string>
880-
</dict>
703+
<key>captures</key>
704+
<dict>
705+
<key>0</key>
881706
<dict>
882-
<key>match</key>
883-
<string>\b(demo_scope_variableOther)\b</string>
884707
<key>name</key>
885-
<string>variable.other</string>
708+
<string>keyword.other.powershell</string>
886709
</dict>
887-
</array>
710+
</dict>
711+
<key>comment</key>
712+
<string>Default is a reserved word when used in Switch statements. This is kind of a work-around - it will highlight only inside scriptblocks.</string>
713+
<key>match</key>
714+
<string>(?i:(default))\s*(?=\{)</string>
888715
</dict>
889716
<key>executableFiles</key>
890717
<dict>
@@ -1138,13 +965,6 @@
1138965
</dict>
1139966
</array>
1140967
</dict>
1141-
<key>parameter</key>
1142-
<dict>
1143-
<key>match</key>
1144-
<string>((?&lt;=\s)-(\w+))</string>
1145-
<key>name</key>
1146-
<string>variable.parameter.powershell</string>
1147-
</dict>
1148968
<key>redirection</key>
1149969
<dict>
1150970
<key>patterns</key>
@@ -1174,12 +994,12 @@
1174994
<key>name</key>
1175995
<string>keyword.other.powershell</string>
1176996
</dict>
1177-
<key>scriptblock</key>
997+
<key>scriptBlock</key>
1178998
<dict>
1179999
<key>begin</key>
1180-
<string>\{</string>
1000+
<string>(\{)</string>
11811001
<key>end</key>
1182-
<string>\}</string>
1002+
<string>(\})</string>
11831003
<key>name</key>
11841004
<string>meta.scriptblock.powershell</string>
11851005
<key>patterns</key>
@@ -1188,6 +1008,10 @@
11881008
<key>include</key>
11891009
<string>$self</string>
11901010
</dict>
1011+
<dict>
1012+
<key>include</key>
1013+
<string>#defaultKeyword</string>
1014+
</dict>
11911015
</array>
11921016
</dict>
11931017
<key>stringDoubleQuoted</key>
@@ -1216,10 +1040,6 @@
12161040
<key>include</key>
12171041
<string>#subExpression</string>
12181042
</dict>
1219-
<dict>
1220-
<key>include</key>
1221-
<string>#scriptBlock</string>
1222-
</dict>
12231043
</array>
12241044
</dict>
12251045
<key>stringDoubleQuotedHeredoc</key>
@@ -1337,6 +1157,65 @@
13371157
</dict>
13381158
</array>
13391159
</dict>
1160+
<key>switch</key>
1161+
<dict>
1162+
<key>patterns</key>
1163+
<array>
1164+
<dict>
1165+
<key>captures</key>
1166+
<dict>
1167+
<key>1</key>
1168+
<dict>
1169+
<key>name</key>
1170+
<string>keyword.control.powershell</string>
1171+
</dict>
1172+
<key>2</key>
1173+
<dict>
1174+
<key>name</key>
1175+
<string>variable.parameter.powershell</string>
1176+
</dict>
1177+
<key>4</key>
1178+
<dict>
1179+
<key>name</key>
1180+
<string>variable.parameter.powershell</string>
1181+
</dict>
1182+
<key>5</key>
1183+
<dict>
1184+
<key>name</key>
1185+
<string>variable.parameter.powershell</string>
1186+
</dict>
1187+
</dict>
1188+
<key>comment</key>
1189+
<string>switch [-regex|-wildcard|-exact][-casesensitive] -file filename</string>
1190+
<key>match</key>
1191+
<string>\b(?i:(switch))\b\s+(?i:(-regex|-wildcard|-exact){0,1})\s*(?i:(-casesensitive){0,1})\s*(?i:(-file))\s+</string>
1192+
</dict>
1193+
<dict>
1194+
<key>captures</key>
1195+
<dict>
1196+
<key>1</key>
1197+
<dict>
1198+
<key>name</key>
1199+
<string>keyword.control.powershell</string>
1200+
</dict>
1201+
<key>2</key>
1202+
<dict>
1203+
<key>name</key>
1204+
<string>variable.parameter.powershell</string>
1205+
</dict>
1206+
<key>3</key>
1207+
<dict>
1208+
<key>name</key>
1209+
<string>variable.parameter.powershell</string>
1210+
</dict>
1211+
</dict>
1212+
<key>comment</key>
1213+
<string>switch [-regex|-wildcard|-exact][-casesensitive] (&lt;value&gt;)</string>
1214+
<key>match</key>
1215+
<string>\b(?i:(switch))\b\s+(?i:(-regex|-wildcard|-exact){0,1})\s*(?i:(-casesensitive){0,1})\s*</string>
1216+
</dict>
1217+
</array>
1218+
</dict>
13401219
<key>type</key>
13411220
<dict>
13421221
<key>begin</key>

0 commit comments

Comments
 (0)