github-linguist 4.8.8 → 4.8.9

Sign up to get free protection for your applications and to get access to all the features.
Files changed (67) hide show
  1. checksums.yaml +4 -4
  2. data/grammars/hint.haskell.json +1123 -0
  3. data/grammars/hint.message.haskell.json +1147 -0
  4. data/grammars/hint.type.haskell.json +1120 -0
  5. data/grammars/source.asn.json +59 -0
  6. data/grammars/source.blitzmax.json +0 -2
  7. data/grammars/source.bsl.json +372 -0
  8. data/grammars/source.c++.json +67 -0
  9. data/grammars/source.c2hs.json +27 -0
  10. data/grammars/source.cabal.json +66 -0
  11. data/grammars/source.coffee.json +6 -5
  12. data/grammars/source.crystal.json +0 -11
  13. data/grammars/source.csound-score.json +3 -3
  14. data/grammars/source.csound.json +51 -15
  15. data/grammars/source.css.json +1 -1
  16. data/grammars/source.css.less.json +9 -5
  17. data/grammars/source.cython.json +42 -193
  18. data/grammars/source.d.json +7 -7
  19. data/grammars/source.elixir.json +2 -2
  20. data/grammars/source.forth.json +0 -2
  21. data/grammars/source.graphql.json +8 -2
  22. data/grammars/source.haskell.json +1089 -323
  23. data/grammars/source.hsc2hs.json +12 -0
  24. data/grammars/source.ideal.json +356 -0
  25. data/grammars/source.java.json +3 -0
  26. data/grammars/source.js.json +262 -131
  27. data/grammars/source.js.jsx.json +848 -256
  28. data/grammars/source.lsl.json +51 -103
  29. data/grammars/source.objc.json +1 -1
  30. data/grammars/source.parrot.pir.json +49 -15
  31. data/grammars/source.pic.json +868 -0
  32. data/grammars/source.purescript.json +114 -90
  33. data/grammars/source.python.json +11 -9
  34. data/grammars/source.regexp.babel.json +1 -1
  35. data/grammars/source.renpy.json +7 -7
  36. data/grammars/source.rexx.json +59 -0
  37. data/grammars/source.sas.json +8 -75
  38. data/grammars/source.sdbl.json +97 -0
  39. data/grammars/source.shell.json +1 -0
  40. data/grammars/source.smali.json +2 -2
  41. data/grammars/source.sqf.json +11 -11
  42. data/grammars/source.stan.json +60 -25
  43. data/grammars/source.tla.json +18 -6
  44. data/grammars/source.toc.json +5 -1
  45. data/grammars/source.ts.json +134 -31
  46. data/grammars/source.tsx.json +134 -31
  47. data/grammars/source.vhdl.json +150 -117
  48. data/grammars/source.viml.json +4 -4
  49. data/grammars/source.xquery.json +23 -5
  50. data/grammars/source.yaml.json +35 -19
  51. data/grammars/text.html.handlebars.json +2 -2
  52. data/grammars/text.html.php.blade.json +1 -1
  53. data/grammars/text.html.twig.json +1 -4
  54. data/grammars/text.html.vue.json +41 -1
  55. data/grammars/text.restructuredtext.json +56 -1
  56. data/grammars/text.roff.json +5089 -0
  57. data/grammars/text.runoff.json +321 -0
  58. data/grammars/text.slim.json +126 -105
  59. data/grammars/text.tex.latex.haskell.json +1335 -21
  60. data/lib/linguist/heuristics.rb +8 -0
  61. data/lib/linguist/languages.json +1 -1
  62. data/lib/linguist/languages.yml +58 -3
  63. data/lib/linguist/samples.json +5257 -76
  64. data/lib/linguist/version.rb +1 -1
  65. metadata +16 -4
  66. data/grammars/source.man.json +0 -53
  67. data/grammars/text.groff.json +0 -113
@@ -38,7 +38,7 @@
38
38
  ]
39
39
  },
40
40
  "assignment-operator": {
41
- "match": "<<=|>>=|>>>=|\\*=|(?<!\\()/=|%=|\\+=|\\-=|&=|\\^=",
41
+ "match": "<<=|>>>=|>>=|\\*=|(?<!\\()/=|%=|\\+=|\\-=|&=|\\^=",
42
42
  "name": "keyword.operator.assignment.tsx"
43
43
  },
44
44
  "await-modifier": {
@@ -116,7 +116,7 @@
116
116
  "name": "comment.line.tsx"
117
117
  },
118
118
  "control-statement": {
119
- "match": "(?<!\\.)\\b(break|catch|continue|debugger|declare|do|else|finally|for|if|return|switch|throw|try|while|with|super|case|default)\\b",
119
+ "match": "(?<!\\.)\\b(break|catch|continue|debugger|declare|do|else|finally|for|if|return|switch|throw|try|while|with|super|case|default|yield)\\b",
120
120
  "name": "keyword.control.tsx"
121
121
  },
122
122
  "decl-block": {
@@ -213,9 +213,15 @@
213
213
  {
214
214
  "include": "#block"
215
215
  },
216
+ {
217
+ "include": "#import-operator"
218
+ },
216
219
  {
217
220
  "include": "#expression-operator"
218
221
  },
222
+ {
223
+ "include": "#imply-operator"
224
+ },
219
225
  {
220
226
  "include": "#relational-operator"
221
227
  },
@@ -231,6 +237,9 @@
231
237
  {
232
238
  "include": "#storage-keyword"
233
239
  },
240
+ {
241
+ "include": "#type-primitive"
242
+ },
234
243
  {
235
244
  "include": "#function-call"
236
245
  },
@@ -243,8 +252,8 @@
243
252
  ]
244
253
  },
245
254
  "expression-operator": {
246
- "match": "=>|\\b(delete|export|import|from|in|instanceof|new|typeof|void|as)\\b",
247
- "name": "keyword.operator.tsx"
255
+ "match": "\\b(delete|in|instanceof|new|typeof|as|is|of)\\b",
256
+ "name": "keyword.others.tsx"
248
257
  },
249
258
  "field-declaration": {
250
259
  "begin": "(?<!\\()\\s*((?:\\b[a-zA-Z_$][\\w$]*)|(?:\\'[^']*\\')|(?:\\\"[^\"]*\\\"))\\s*(\\?\\s*)?(?=(=|:))",
@@ -253,7 +262,7 @@
253
262
  "name": "variable.tsx"
254
263
  },
255
264
  "2": {
256
- "name": "keyword.operator.tsx"
265
+ "name": "keyword.others.tsx"
257
266
  }
258
267
  },
259
268
  "end": "(?=\\}|;|,|$)|(?<=\\})",
@@ -270,7 +279,7 @@
270
279
  "name": "storage.type.tsx"
271
280
  },
272
281
  "3": {
273
- "name": "keyword.operator.tsx"
282
+ "name": "keyword.others.tsx"
274
283
  }
275
284
  },
276
285
  "match": "(?<=\\()\\s*\\b(var|let|const)\\s+([a-zA-Z_$][\\w$]*)\\s+(in|of)\\b",
@@ -294,7 +303,7 @@
294
303
  "begin": "\\b(?:(export)\\s+)?(?:(async)\\s+)?(function\\b)(?:\\s+([a-zA-Z_$][\\w$]*))?\\s*",
295
304
  "beginCaptures": {
296
305
  "1": {
297
- "name": "storage.modifier.tsx"
306
+ "name": "storage.type.tsx"
298
307
  },
299
308
  "2": {
300
309
  "name": "storage.modifier.tsx"
@@ -332,7 +341,7 @@
332
341
  "function-overload-declaration": {
333
342
  "captures": {
334
343
  "1": {
335
- "name": "storage.modifier.tsx"
344
+ "name": "storage.type.tsx"
336
345
  },
337
346
  "2": {
338
347
  "name": "storage.type.function.tsx"
@@ -373,6 +382,14 @@
373
382
  }
374
383
  ]
375
384
  },
385
+ "imply-operator": {
386
+ "match": "=>",
387
+ "name": "keyword.operator.tsx"
388
+ },
389
+ "import-operator": {
390
+ "match": "\\b(import|from)\\b",
391
+ "name": "keyword.control.import.include.tsx"
392
+ },
376
393
  "indexer-declaration": {
377
394
  "begin": "\\[",
378
395
  "beginCaptures": {
@@ -386,7 +403,7 @@
386
403
  "name": "meta.brace.square.tsx"
387
404
  },
388
405
  "2": {
389
- "name": "keyword.operator.tsx"
406
+ "name": "keyword.others.tsx"
390
407
  }
391
408
  },
392
409
  "name": "meta.indexer.declaration.tsx",
@@ -688,11 +705,11 @@
688
705
  ]
689
706
  },
690
707
  "logic-operator": {
691
- "match": "\\!|&|~|\\^|\\||&&|\\|\\|",
708
+ "match": "\\!|&&|&|~|\\^|\\|\\||\\|",
692
709
  "name": "keyword.operator.arithmetic.tsx"
693
710
  },
694
711
  "method-declaration": {
695
- "begin": "\\b(?:(abstract)\\s+)?\\b(?:(public|private|protected)\\s+)?\\b(?:(async)\\s+)?(?:(get|set)\\s+)?(?:(new)|(?:([a-zA-Z_$][\\.\\w$]*)\\s*(\\??)))?\\s*(?=\\(|\\<)",
712
+ "begin": "\\b(?:(abstract)\\s+)?\\b(?:(public|private|protected)\\s+)?\\b(?:(async)\\s+)?(?:(get|set)\\s+)?(?:(new)|(?:\\b(constructor)\\b)|(?:([a-zA-Z_$][\\.\\w$]*)\\s*(\\??)))?\\s*(?=\\(|\\<)",
696
713
  "beginCaptures": {
697
714
  "1": {
698
715
  "name": "storage.modifier.tsx"
@@ -710,9 +727,12 @@
710
727
  "name": "keyword.operator.tsx"
711
728
  },
712
729
  "6": {
713
- "name": "entity.name.function.tsx"
730
+ "name": "storage.type.tsx"
714
731
  },
715
732
  "7": {
733
+ "name": "entity.name.function.tsx"
734
+ },
735
+ "8": {
716
736
  "name": "keyword.operator.tsx"
717
737
  }
718
738
  },
@@ -757,20 +777,23 @@
757
777
  "name": "keyword.operator.tsx"
758
778
  },
759
779
  "6": {
760
- "name": "entity.name.function.tsx"
780
+ "name": "storage.type.tsx"
761
781
  },
762
782
  "7": {
783
+ "name": "entity.name.function.tsx"
784
+ },
785
+ "8": {
763
786
  "name": "keyword.operator.tsx"
764
787
  }
765
788
  },
766
- "match": "\\b(?:(abstract)\\s+)?\\b(?:(public|private|protected)\\s+)?\\b(?:(async)\\s+)?(?:(get|set)\\s+)?(?:(new)|(?:([a-zA-Z_$][\\.\\w$]*)\\s*(\\??)))?\\s*(?=\\(|\\<)",
789
+ "match": "\\b(?:(abstract)\\s+)?\\b(?:(public|private|protected)\\s+)?\\b(?:(async)\\s+)?(?:(get|set)\\s+)?(?:(new)|(?:\\b(constructor)\\b)|(?:([a-zA-Z_$][\\.\\w$]*)\\s*(\\??)))?\\s*(?=\\(|\\<)",
767
790
  "name": "meta.method.overload.declaration.tsx"
768
791
  },
769
792
  "new-expr": {
770
793
  "begin": "\\b(new)\\b",
771
794
  "beginCaptures": {
772
795
  "1": {
773
- "name": "keyword.operator.tsx"
796
+ "name": "keyword.others.tsx"
774
797
  }
775
798
  },
776
799
  "end": "(?=[(;]|$)",
@@ -789,7 +812,7 @@
789
812
  "name": "constant.language.null.tsx"
790
813
  },
791
814
  "numeric-literal": {
792
- "match": "\\b(?<=[^$])((0(x|X)[0-9a-fA-F]+)|([0-9]+(\\.[0-9]+)?))\\b",
815
+ "match": "\\b(?<=[^$])((0(x|X)[0-9a-fA-F]+)|(0(o|O)[0-7]+)|(0(b|B)(0|1)+)|(([0-9]+(\\.[0-9]+)?))([eE]([+-]?)[0-9]+(\\.[0-9]+)?)?)\\b",
793
816
  "name": "constant.numeric.tsx"
794
817
  },
795
818
  "object-body": {
@@ -843,7 +866,7 @@
843
866
  "begin": "\\b(?:(export)\\s+)?\\b(?:(abstract)\\s+)?\\b(?<!\\.)(class|interface)\\b",
844
867
  "beginCaptures": {
845
868
  "1": {
846
- "name": "storage.modifier.tsx"
869
+ "name": "storage.type.tsx"
847
870
  },
848
871
  "2": {
849
872
  "name": "storage.modifier.tsx"
@@ -909,10 +932,10 @@
909
932
  "object-heritage-type": {
910
933
  "captures": {
911
934
  "1": {
912
- "name": "storage.type.tsx"
935
+ "name": "support.type.tsx"
913
936
  }
914
937
  },
915
- "match": "(?:\\s*([a-zA-Z_$][\\w$]*)\\b)",
938
+ "match": "(?:\\b([a-zA-Z_$][\\w$]*)\\b)",
916
939
  "name": "meta.object.heritage.parent.tsx"
917
940
  },
918
941
  "object-member": {
@@ -940,13 +963,13 @@
940
963
  "name": "storage.modifier.tsx"
941
964
  },
942
965
  "2": {
943
- "name": "keyword.operator.tsx"
966
+ "name": "keyword.others.tsx"
944
967
  },
945
968
  "3": {
946
969
  "name": "variable.parameter.tsx"
947
970
  },
948
971
  "4": {
949
- "name": "keyword.operator.tsx"
972
+ "name": "keyword.others.tsx"
950
973
  }
951
974
  },
952
975
  "match": "(?:\\s*\\b(public|private|protected)\\b\\s+)?(\\.\\.\\.)?\\s*([a-zA-Z_$][\\w$]*)\\s*(\\??)",
@@ -1011,7 +1034,7 @@
1011
1034
  ]
1012
1035
  },
1013
1036
  "relational-operator": {
1014
- "match": "===|==|=|!=|!==|<=|>=|<>|<|>",
1037
+ "match": "===|!==|==|!=|<=|>=|<>|=|<|>",
1015
1038
  "name": "keyword.operator.comparison.tsx"
1016
1039
  },
1017
1040
  "return-type": {
@@ -1029,7 +1052,7 @@
1029
1052
  "name": "keyword.other.tsx"
1030
1053
  },
1031
1054
  "storage-keyword": {
1032
- "match": "\\b(number|boolean|string|any|var|let|function|const|module|namespace)\\b",
1055
+ "match": "\\b(var|let|function|const|module|namespace|void|export)\\b",
1033
1056
  "name": "storage.type.tsx"
1034
1057
  },
1035
1058
  "string": {
@@ -1061,7 +1084,7 @@
1061
1084
  "begin": "\\b(switch)\\b\\s*\\(",
1062
1085
  "beginCaptures": {
1063
1086
  "1": {
1064
- "name": "keyword.operator.tsx"
1087
+ "name": "keyword.control.tsx"
1065
1088
  }
1066
1089
  },
1067
1090
  "end": "\\)",
@@ -1122,13 +1145,13 @@
1122
1145
  "begin": "\\$\\{",
1123
1146
  "beginCaptures": {
1124
1147
  "0": {
1125
- "name": "keyword.operator.tsx"
1148
+ "name": "keyword.others.tsx"
1126
1149
  }
1127
1150
  },
1128
1151
  "end": "\\}",
1129
1152
  "endCaptures": {
1130
1153
  "0": {
1131
- "name": "keyword.operator.tsx"
1154
+ "name": "keyword.others.tsx"
1132
1155
  }
1133
1156
  },
1134
1157
  "name": "template.element.tsx",
@@ -1138,6 +1161,80 @@
1138
1161
  }
1139
1162
  ]
1140
1163
  },
1164
+ "ternary-expression": {
1165
+ "begin": "(?=\\?)",
1166
+ "end": "(?=$|[;,])",
1167
+ "patterns": [
1168
+ {
1169
+ "include": "#ternary-operator"
1170
+ },
1171
+ {
1172
+ "include": "#ternary-expression-type"
1173
+ }
1174
+ ]
1175
+ },
1176
+ "ternary-expression-type": {
1177
+ "name": "meta.expression.tsx",
1178
+ "patterns": [
1179
+ {
1180
+ "include": "#string"
1181
+ },
1182
+ {
1183
+ "include": "#regex"
1184
+ },
1185
+ {
1186
+ "include": "#template"
1187
+ },
1188
+ {
1189
+ "include": "#comment"
1190
+ },
1191
+ {
1192
+ "include": "#literal"
1193
+ },
1194
+ {
1195
+ "include": "#paren-expression"
1196
+ },
1197
+ {
1198
+ "include": "#ternary-expression"
1199
+ },
1200
+ {
1201
+ "include": "#import-operator"
1202
+ },
1203
+ {
1204
+ "include": "#expression-operator"
1205
+ },
1206
+ {
1207
+ "include": "#imply-operator"
1208
+ },
1209
+ {
1210
+ "include": "#relational-operator"
1211
+ },
1212
+ {
1213
+ "include": "#arithmetic-operator"
1214
+ },
1215
+ {
1216
+ "include": "#logic-operator"
1217
+ },
1218
+ {
1219
+ "include": "#assignment-operator"
1220
+ },
1221
+ {
1222
+ "include": "#type-primitive"
1223
+ },
1224
+ {
1225
+ "include": "#function-call"
1226
+ }
1227
+ ]
1228
+ },
1229
+ "ternary-operator": {
1230
+ "begin": "(\\?)",
1231
+ "end": "(:)",
1232
+ "patterns": [
1233
+ {
1234
+ "include": "#ternary-expression-type"
1235
+ }
1236
+ ]
1237
+ },
1141
1238
  "this-literal": {
1142
1239
  "match": "\\b(this)\\b",
1143
1240
  "name": "constant.language.this.tsx"
@@ -1176,6 +1273,9 @@
1176
1273
  "end": "(?=$|[,);\\}\\]]|//)|(?==[^>])|(?<=[\\}>\\]\\)]|[a-zA-Z_$])\\s*(?=\\{)",
1177
1274
  "name": "meta.type.annotation.tsx",
1178
1275
  "patterns": [
1276
+ {
1277
+ "include": "#expression-operator"
1278
+ },
1179
1279
  {
1180
1280
  "include": "#type"
1181
1281
  },
@@ -1194,7 +1294,7 @@
1194
1294
  "name": "keyword.other.tsx"
1195
1295
  },
1196
1296
  "2": {
1197
- "name": "storage.type.tsx"
1297
+ "name": "entity.name.class.tsx"
1198
1298
  }
1199
1299
  },
1200
1300
  "end": "(?=$|[,);>]|var|type|function|class|interface)",
@@ -1208,7 +1308,7 @@
1208
1308
  },
1209
1309
  {
1210
1310
  "match": "=\\s*",
1211
- "name": "keyword.operator.tsx"
1311
+ "name": "keyword.operator.comparison.tsx"
1212
1312
  }
1213
1313
  ]
1214
1314
  },
@@ -1326,7 +1426,7 @@
1326
1426
  "type-primitive": {
1327
1427
  "captures": {
1328
1428
  "1": {
1329
- "name": "storage.type.tsx"
1429
+ "name": "support.type.tsx"
1330
1430
  }
1331
1431
  },
1332
1432
  "match": "\\b(string|number|boolean|symbol|any|void)\\b",
@@ -1360,7 +1460,7 @@
1360
1460
  "name": "constant.language.tsx"
1361
1461
  },
1362
1462
  "var-expr": {
1363
- "begin": "(?<!\\()\\s*\\b(var|let|const(?!\\s+enum)\\b)",
1463
+ "begin": "(?<!\\()\\s*\\b(var|let|const(?!\\s+enum))\\b",
1364
1464
  "beginCaptures": {
1365
1465
  "1": {
1366
1466
  "name": "storage.type.tsx"
@@ -1387,6 +1487,9 @@
1387
1487
  "end": "(?=$|[;,])",
1388
1488
  "name": "meta.var-single-variable.expr.tsx",
1389
1489
  "patterns": [
1490
+ {
1491
+ "include": "#ternary-expression"
1492
+ },
1390
1493
  {
1391
1494
  "include": "#type-annotation"
1392
1495
  },
@@ -1405,7 +1508,7 @@
1405
1508
  "begin": "(=)",
1406
1509
  "beginCaptures": {
1407
1510
  "1": {
1408
- "name": "keyword.operator.tsx"
1511
+ "name": "keyword.operator.comparison.tsx"
1409
1512
  }
1410
1513
  },
1411
1514
  "end": "(?=$|[,);=])",
@@ -5,8 +5,6 @@
5
5
  "vhdl",
6
6
  "vho"
7
7
  ],
8
- "foldingStartMarker": "(?x)\r\n\t\t# From the start of the line make sure we are not going into a comment ...\r\n\t\t^(\r\n\t\t\t([^-]-?(?!-))*?\r\n\t\t\t\t(\r\n\t\t\t\t# Check for \"keyword ... is\"\r\n\t\t\t\t (\\b(?i:architecture|case|entity|function|package|procedure)\\b(.+?)(?i:\\bis)\\b)\r\n\r\n\t\t\t\t# Check for if statements\r\n\t\t\t\t|(\\b(?i:if)\\b(.+?)(?i:generate|then)\\b)\r\n\r\n\t\t\t\t# Check for and while statements\r\n\t\t\t\t|(\\b(?i:for|while)(.+?)(?i:loop|generate)\\b)\r\n\r\n\t\t\t\t# Check for keywords that do not require an is after it\r\n\t\t\t\t|(\\b(?i:component|process|record)\\b[^;]*?$)\r\n\r\n\t\t\t\t# From the beginning of the line, check for instantiation maps\r\n\t\t\t\t|(^\\s*\\b(?i:port|generic)\\b(?i:\\s+map\\b)?\\s*\\()\r\n\t\t\t)\r\n\t\t)\r\n\t",
9
- "foldingStopMarker": "(?x)\r\n\t\t# From the start of the line ...\r\n\t\t^(\r\n\t\t\t(\r\n\t\t\t\t(\r\n\t\t\t\t\t# Make sure we are not going into a comment ...\r\n\t\t\t\t\t([^-]-?(?!-))*?\r\n\t\t\t\t\t\t(\r\n\t\t\t\t\t\t\t# The word end to the end of the line\r\n\t\t\t \t\t\t\t(?i:\\bend\\b).*$\\n?\r\n\t\t\t\t\t\t)\r\n\t\t\t\t\t)\r\n\t\t\t\t)\r\n\r\n\t\t\t\t# ... a close paren followed by an optional semicolon as the only thing on the line\r\n\t\t\t |(\\s*?\\)\\s*?;?\\s*?$\\n?\r\n\t\t\t)\r\n\t\t)\r\n\t",
10
8
  "keyEquivalent": "^~V",
11
9
  "name": "VHDL",
12
10
  "patterns": [
@@ -21,10 +19,10 @@
21
19
  "architecture_pattern": {
22
20
  "patterns": [
23
21
  {
24
- "begin": "(?x)\r\n\r\n\t\t\t\t\t\t# The word architecture $1\r\n\t\t\t\t\t\t\\b((?i:architecture))\\s+\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t# Followed up by a valid $3 or invalid identifier $4\r\n\t\t\t\t\t\t(([a-zA-z][a-zA-z0-9_]*)|(.+))(?=\\s)\\s+\r\n\r\n\t\t\t\t\t\t# The word of $5\r\n\t\t\t\t\t\t((?i:of))\\s+\r\n\r\n\t\t\t\t\t\t# Followed by a valid $7 or invalid identifier $8\r\n\t\t\t\t\t\t(([a-zA-Z][a-zA-Z0-9_]*)|(.+?))(?=\\s*(?i:is))\\b\r\n\t\t\t\t\t",
22
+ "begin": "(?x)\n\n\t\t\t\t\t\t# The word architecture $1\n\t\t\t\t\t\t\\b((?i:architecture))\\s+\n\t\t\t\t\t\t\n\t\t\t\t\t\t# Followed up by a valid $3 or invalid identifier $4\n\t\t\t\t\t\t(([a-zA-z][a-zA-z0-9_]*)|(.+))(?=\\s)\\s+\n\n\t\t\t\t\t\t# The word of $5\n\t\t\t\t\t\t((?i:of))\\s+\n\n\t\t\t\t\t\t# Followed by a valid $7 or invalid identifier $8\n\t\t\t\t\t\t(([a-zA-Z][a-zA-Z0-9_]*)|(.+?))(?=\\s*(?i:is))\\b\n\t\t\t\t\t",
25
23
  "beginCaptures": {
26
24
  "1": {
27
- "name": "keyword.language.vhdl"
25
+ "name": "storage.type.architecture.vhdl"
28
26
  },
29
27
  "3": {
30
28
  "name": "entity.name.type.architecture.begin.vhdl"
@@ -33,7 +31,7 @@
33
31
  "name": "invalid.illegal.invalid.identifier.vhdl"
34
32
  },
35
33
  "5": {
36
- "name": "keyword.language.vhdl"
34
+ "name": "keyword.control.of.vhdl"
37
35
  },
38
36
  "7": {
39
37
  "name": "entity.name.type.entity.reference.vhdl"
@@ -42,13 +40,13 @@
42
40
  "name": "invalid.illegal.invalid.identifier.vhdl"
43
41
  }
44
42
  },
45
- "end": "(?x)\r\n\t\t\t\t\t\t# The word end $1\r\n\t\t\t\t\t\t\\b((?i:end))\r\n\r\n\t\t\t\t\t\t# Optional word architecture $3\r\n\t\t\t\t\t\t(\\s+((?i:architecture)))?\r\n\r\n\t\t\t\t\t\t# Optional same identifier $6 or illegal identifier $7\r\n\t\t\t\t\t\t(\\s+((\\3)|(.+?)))?\r\n\r\n\t\t\t\t\t\t# This will cause the previous to capture until just before the ; or $\r\n\t\t\t\t\t\t(?=\\s*;)\r\n\t\t\t\t\t",
43
+ "end": "(?x)\n\t\t\t\t\t\t# The word end $1\n\t\t\t\t\t\t\\b((?i:end))\n\n\t\t\t\t\t\t# Optional word architecture $3\n\t\t\t\t\t\t(\\s+((?i:architecture)))?\n\n\t\t\t\t\t\t# Optional same identifier $6 or illegal identifier $7\n\t\t\t\t\t\t(\\s+((\\3)|(.+?)))?\n\n\t\t\t\t\t\t# This will cause the previous to capture until just before the ; or $\n\t\t\t\t\t\t(?=\\s*;)\n\t\t\t\t\t",
46
44
  "endCaptures": {
47
45
  "1": {
48
- "name": "keyword.language.vhdl"
46
+ "name": "keyword.control.end.vhdl"
49
47
  },
50
48
  "3": {
51
- "name": "keyword.language.vhdl"
49
+ "name": "storage.type.architecture.vhdl"
52
50
  },
53
51
  "6": {
54
52
  "name": "entity.name.type.architecture.end.vhdl"
@@ -99,16 +97,16 @@
99
97
  "attribute_list": {
100
98
  "patterns": [
101
99
  {
102
- "begin": "\\'\\(",
100
+ "begin": "'\\(",
103
101
  "beginCaptures": {
104
102
  "0": {
105
- "name": "punctuation.vhdl"
103
+ "name": "punctuation.definition.attribute_list.begin.vhdl"
106
104
  }
107
105
  },
108
106
  "end": "\\)",
109
107
  "endCaptures": {
110
108
  "0": {
111
- "name": "punctuation.vhdl"
109
+ "name": "punctuation.definition.attribute_list.end.vhdl"
112
110
  }
113
111
  },
114
112
  "name": "meta.block.attribute_list",
@@ -142,7 +140,7 @@
142
140
  "case_pattern": {
143
141
  "patterns": [
144
142
  {
145
- "begin": "(?x)\r\n\t\t\t\t\t\t# Beginning of line ...\r\n\t\t\t\t\t\t^\\s*\r\n\r\n\t\t\t\t\t\t# Optional identifier ... $3 or invalid identifier $4\r\n\t\t\t\t\t\t(\r\n\t\t\t\t\t\t\t(\r\n\t\t\t\t\t\t\t\t ([a-zA-Z][a-zA-Z0-9_]*)\r\n\t\t\t\t\t\t\t\t|(.+?)\r\n\t\t\t\t\t\t\t)\r\n\t\t\t\t\t\t\t\\s*:\\s*\r\n\t\t\t\t\t\t)?\r\n\r\n\t\t\t\t\t\t# The word case $5\r\n\t\t\t\t\t\t\\b((?i:case))\\b\r\n\t\t\t\t\t",
143
+ "begin": "(?x)\n\t\t\t\t\t\t# Beginning of line ...\n\t\t\t\t\t\t^\\s*\n\n\t\t\t\t\t\t# Optional identifier ... $3 or invalid identifier $4\n\t\t\t\t\t\t(\n\t\t\t\t\t\t\t(\n\t\t\t\t\t\t\t\t ([a-zA-Z][a-zA-Z0-9_]*)\n\t\t\t\t\t\t\t\t|(.+?)\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\\s*:\\s*\n\t\t\t\t\t\t)?\n\n\t\t\t\t\t\t# The word case $5\n\t\t\t\t\t\t\\b((?i:case))\\b\n\t\t\t\t\t",
146
144
  "beginCaptures": {
147
145
  "3": {
148
146
  "name": "entity.name.tag.case.begin.vhdl"
@@ -151,16 +149,16 @@
151
149
  "name": "invalid.illegal.invalid.identifier.vhdl"
152
150
  },
153
151
  "5": {
154
- "name": "keyword.language.vhdl"
152
+ "name": "keyword.control.case.vhdl"
155
153
  }
156
154
  },
157
- "end": "(?x)\r\n\t\t\t\t\t\t# The word end $1\r\n\t\t\t\t\t\t\\b((?i:end))\\s*\r\n\r\n\t\t\t\t\t\t# The word case $4 or invalid word $5\r\n\t\t\t\t\t\t(\\s+(((?i:case))|(.*?)))\r\n\r\n\t\t\t\t\t\t# Optional identifier from before $8 or illegal $9\r\n\t\t\t\t\t\t(\\s+((\\2)|(.*?)))?\r\n\r\n\t\t\t\t\t\t# Ending with a semicolon\r\n\t\t\t\t\t\t(?=\\s*;)\r\n\t\t\t\t\t",
155
+ "end": "(?x)\n\t\t\t\t\t\t# The word end $1\n\t\t\t\t\t\t\\b((?i:end))\\s*\n\n\t\t\t\t\t\t# The word case $4 or invalid word $5\n\t\t\t\t\t\t(\\s+(((?i:case))|(.*?)))\n\n\t\t\t\t\t\t# Optional identifier from before $8 or illegal $9\n\t\t\t\t\t\t(\\s+((\\2)|(.*?)))?\n\n\t\t\t\t\t\t# Ending with a semicolon\n\t\t\t\t\t\t(?=\\s*;)\n\t\t\t\t\t",
158
156
  "endCaptures": {
159
157
  "1": {
160
- "name": "keyword.language.vhdl"
158
+ "name": "keyword.control.end.vhdl"
161
159
  },
162
160
  "4": {
163
- "name": "keyword.language.vhdl"
161
+ "name": "keyword.control.case.vhdl"
164
162
  },
165
163
  "5": {
166
164
  "name": "invalid.illegal.case.required.vhdl"
@@ -206,21 +204,38 @@
206
204
  "comments": {
207
205
  "patterns": [
208
206
  {
209
- "match": "--.*$\\n?",
210
- "name": "comment.line.double-dash.vhdl"
207
+ "begin": "(^[ \\t]+)?(?=--)",
208
+ "beginCaptures": {
209
+ "1": {
210
+ "name": "punctuation.whitespace.comment.leading.vhdl"
211
+ }
212
+ },
213
+ "end": "(?!\\G)",
214
+ "patterns": [
215
+ {
216
+ "begin": "--",
217
+ "beginCaptures": {
218
+ "0": {
219
+ "name": "punctuation.definition.comment.vhdl"
220
+ }
221
+ },
222
+ "end": "\\n",
223
+ "name": "comment.line.double-dash.vhdl"
224
+ }
225
+ ]
211
226
  }
212
227
  ]
213
228
  },
214
229
  "component_instantiation_pattern": {
215
230
  "patterns": [
216
231
  {
217
- "begin": "(?x)\r\n\t\t\t\t\t\t# From the beginning of the line ...\r\n\t\t\t\t\t\t^\\s*\r\n\r\n\t\t\t\t\t\t# Match a valid identifier $1\r\n\t\t\t\t\t\t([a-zA-Z][a-zA-Z0-9_]*)\r\n\r\n\t\t\t\t\t\t# Colon! $2\r\n\t\t\t\t\t\t\\s*(:)\\s*\r\n\r\n\t\t\t\t\t\t# Another valid identifier $3\r\n\t\t\t\t\t\t([a-zA-Z][a-zA-Z0-9_]*)\\b\r\n\r\n\t\t\t\t\t\t# Make sure we are just the other word, or the beginning of\r\n\t\t\t\t\t\t# a generic or port mapping\r\n\t\t\t\t\t\t(?=\\s*($|generic|port))\r\n\t\t\t\t\t",
232
+ "begin": "(?x)\n\t\t\t\t\t\t# From the beginning of the line ...\n\t\t\t\t\t\t^\\s*\n\n\t\t\t\t\t\t# Match a valid identifier $1\n\t\t\t\t\t\t([a-zA-Z][a-zA-Z0-9_]*)\n\n\t\t\t\t\t\t# Colon! $2\n\t\t\t\t\t\t\\s*(:)\\s*\n\n\t\t\t\t\t\t# Another valid identifier $3\n\t\t\t\t\t\t([a-zA-Z][a-zA-Z0-9_]*)\\b\n\n\t\t\t\t\t\t# Make sure we are just the other word, or the beginning of\n\t\t\t\t\t\t# a generic or port mapping\n\t\t\t\t\t\t(?=\\s*($|generic|port))\n\t\t\t\t\t",
218
233
  "beginCaptures": {
219
234
  "1": {
220
235
  "name": "entity.name.section.component_instantiation.vhdl"
221
236
  },
222
237
  "2": {
223
- "name": "punctuation.vhdl"
238
+ "name": "punctuation.separator.vhdl"
224
239
  },
225
240
  "3": {
226
241
  "name": "entity.name.tag.component.reference.vhdl"
@@ -229,7 +244,7 @@
229
244
  "end": ";",
230
245
  "endCaptures": {
231
246
  "0": {
232
- "name": "punctuation.vhdl"
247
+ "name": "punctuation.terminator.statement.vhdl"
233
248
  }
234
249
  },
235
250
  "name": "meta.block.component_instantiation.vhdl",
@@ -247,10 +262,10 @@
247
262
  "component_pattern": {
248
263
  "patterns": [
249
264
  {
250
- "begin": "(?x)\r\n\t\t\t\t\t\t# From the beginning of the line ...\r\n\t\t\t\t\t\t^\\s*\r\n\r\n\t\t\t\t\t\t# The word component $1\r\n\t\t\t\t\t\t\\b((?i:component))\\s+\r\n\r\n\t\t\t\t\t\t# A valid identifier $3 or invalid identifier $4\r\n\t\t\t\t\t\t(([a-zA-Z_][a-zA-Z0-9_]*)\\s*|(.+?))(?=\\b(?i:is|port)\\b|$|--)\r\n\r\n\t\t\t\t\t\t# Optional word is $6\r\n\t\t\t\t\t\t(\\b((?i:is\\b)))?\r\n\t\t\t\t\t",
265
+ "begin": "(?x)\n\t\t\t\t\t\t# From the beginning of the line ...\n\t\t\t\t\t\t^\\s*\n\n\t\t\t\t\t\t# The word component $1\n\t\t\t\t\t\t\\b((?i:component))\\s+\n\n\t\t\t\t\t\t# A valid identifier $3 or invalid identifier $4\n\t\t\t\t\t\t(([a-zA-Z_][a-zA-Z0-9_]*)\\s*|(.+?))(?=\\b(?i:is|port)\\b|$|--)\n\n\t\t\t\t\t\t# Optional word is $6\n\t\t\t\t\t\t(\\b((?i:is\\b)))?\n\t\t\t\t\t",
251
266
  "beginCaptures": {
252
267
  "1": {
253
- "name": "keyword.language.vhdl"
268
+ "name": "storage.type.component.vhdl"
254
269
  },
255
270
  "3": {
256
271
  "name": "entity.name.type.component.begin.vhdl"
@@ -259,16 +274,16 @@
259
274
  "name": "invalid.illegal.invalid.identifier.vhdl"
260
275
  },
261
276
  "6": {
262
- "name": "keyword.language.vhdl"
277
+ "name": "keyword.control.is.vhdl"
263
278
  }
264
279
  },
265
- "end": "(?x)\r\n\t\t\t\t\t\t# The word end $1\r\n\t\t\t\t\t\t\\b((?:end))\\s+\r\n\r\n\t\t\t\t\t\t# The word component $3 or illegal word $4\r\n\t\t\t\t\t\t(((?i:component\\b))|(.+?))(?=\\s*|;)\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t# Optional identifier $7 or illegal mismatched $8\r\n\t\t\t\t\t\t(\\s+((\\3)|(.+?)))?(?=\\s*;)\r\n\t\t\t\t\t",
280
+ "end": "(?x)\n\t\t\t\t\t\t# The word end $1\n\t\t\t\t\t\t\\b((?:end))\\s+\n\n\t\t\t\t\t\t# The word component $3 or illegal word $4\n\t\t\t\t\t\t(((?i:component\\b))|(.+?))(?=\\s*|;)\n\t\t\t\t\t\t\n\t\t\t\t\t\t# Optional identifier $7 or illegal mismatched $8\n\t\t\t\t\t\t(\\s+((\\3)|(.+?)))?(?=\\s*;)\n\t\t\t\t\t",
266
281
  "endCaptures": {
267
282
  "1": {
268
- "name": "keyword.language.vhdl"
283
+ "name": "keyword.control.end.vhdl"
269
284
  },
270
285
  "3": {
271
- "name": "keyword.language.vhdl"
286
+ "name": "storage.type.component.vhdl"
272
287
  },
273
288
  "4": {
274
289
  "name": "invalid.illegal.component.keyword.required.vhdl"
@@ -355,13 +370,13 @@
355
370
  "entity_instantiation_pattern": {
356
371
  "patterns": [
357
372
  {
358
- "begin": "(?x)\r\n\t\t\t\t\t\t# From the beginning of the line\r\n\t\t\t\t\t\t^\\s*\r\n\r\n\t\t\t\t\t\t# Component identifier or illegal identifier $1\r\n\t\t\t\t\t\t([a-zA-Z][a-zA-Z0-9_]*)\r\n\r\n\t\t\t\t\t\t# Colon! $2\r\n\t\t\t\t\t\t\\s*(:)\\s*\r\n\r\n\t\t\t\t\t\t# Optional word use $4\r\n\t\t\t\t\t\t(((?i:use))\\s+)?\r\n\r\n\t\t\t\t\t\t# Required word entity $5\r\n\t\t\t\t\t\t((?i:entity))\\s+\r\n\r\n\t\t\t\t\t\t# Optional library unit identifier $8 for invalid identifier $9 followed by a dot $10\r\n\t\t\t\t\t\t(\r\n\t\t\t\t\t\t\t(([a-zA-Z][a-zA-Z0-9_]*)|(.+?))\r\n\t\t\t\t\t\t\t(\\.)\r\n\t\t\t\t\t\t)?\r\n\r\n\t\t\t\t\t\t# Entity name reference $12 or illegal identifier $13\r\n\t\t\t\t\t\t(([a-zA-Z][a-zA-Z0-9_]*)|(.+?))\r\n\r\n\t\t\t\t\t\t# Check to see if we are being followed by either open paren, end of line, or port or generic words\r\n\t\t\t\t\t\t(?=\\s*(\\(|$|(?i:port|generic)))\r\n\r\n\t\t\t\t\t\t# Optional architecture elaboration\r\n\t\t\t\t\t\t(\r\n\t\t\t\t\t\t\t# Open paren $16\r\n\t\t\t\t\t\t\t\\s*(\\()\\s*\r\n\r\n\t\t\t\t\t\t\t# Arch identifier $18 or invalid identifier $19\r\n\t\t\t\t\t\t\t(([a-zA-Z][a-zA-Z0-9_]*)|(.+?))(?=\\s*\\))\r\n\r\n\t\t\t\t\t\t\t# Close paren $21\r\n\t\t\t\t\t\t\t\\s*(\\))\r\n\t\t\t\t\t\t)?\r\n\t\t\t\t\t",
373
+ "begin": "(?x)\n\t\t\t\t\t\t# From the beginning of the line\n\t\t\t\t\t\t^\\s*\n\n\t\t\t\t\t\t# Component identifier or illegal identifier $1\n\t\t\t\t\t\t([a-zA-Z][a-zA-Z0-9_]*)\n\n\t\t\t\t\t\t# Colon! $2\n\t\t\t\t\t\t\\s*(:)\\s*\n\n\t\t\t\t\t\t# Optional word use $4\n\t\t\t\t\t\t(((?i:use))\\s+)?\n\n\t\t\t\t\t\t# Required word entity $5\n\t\t\t\t\t\t((?i:entity))\\s+\n\n\t\t\t\t\t\t# Optional library unit identifier $8 for invalid identifier $9 followed by a dot $10\n\t\t\t\t\t\t(\n\t\t\t\t\t\t\t(([a-zA-Z][a-zA-Z0-9_]*)|(.+?))\n\t\t\t\t\t\t\t(\\.)\n\t\t\t\t\t\t)?\n\n\t\t\t\t\t\t# Entity name reference $12 or illegal identifier $13\n\t\t\t\t\t\t(([a-zA-Z][a-zA-Z0-9_]*)|(.+?))\n\n\t\t\t\t\t\t# Check to see if we are being followed by either open paren, end of line, or port or generic words\n\t\t\t\t\t\t(?=\\s*(\\(|$|(?i:port|generic)))\n\n\t\t\t\t\t\t# Optional architecture elaboration\n\t\t\t\t\t\t(\n\t\t\t\t\t\t\t# Open paren $16\n\t\t\t\t\t\t\t\\s*(\\()\\s*\n\n\t\t\t\t\t\t\t# Arch identifier $18 or invalid identifier $19\n\t\t\t\t\t\t\t(([a-zA-Z][a-zA-Z0-9_]*)|(.+?))(?=\\s*\\))\n\n\t\t\t\t\t\t\t# Close paren $21\n\t\t\t\t\t\t\t\\s*(\\))\n\t\t\t\t\t\t)?\n\t\t\t\t\t",
359
374
  "beginCaptures": {
360
375
  "1": {
361
376
  "name": "entity.name.section.entity_instantiation.vhdl"
362
377
  },
363
378
  "10": {
364
- "name": "punctuation.vhdl"
379
+ "name": "punctuation.separator.vhdl"
365
380
  },
366
381
  "12": {
367
382
  "name": "entity.name.tag.entity.reference.vhdl"
@@ -370,7 +385,7 @@
370
385
  "name": "invalid.illegal.invalid.identifier.vhdl"
371
386
  },
372
387
  "16": {
373
- "name": "punctuation.vhdl"
388
+ "name": "punctuation.definition.arguments.begin.vhdl"
374
389
  },
375
390
  "18": {
376
391
  "name": "entity.name.tag.architecture.reference.vhdl"
@@ -379,16 +394,16 @@
379
394
  "name": "invalid.illegal.invalid.identifier.vhdl"
380
395
  },
381
396
  "2": {
382
- "name": "punctuation.vhdl"
397
+ "name": "punctuation.separator.vhdl"
383
398
  },
384
399
  "21": {
385
- "name": "punctuation.vhdl"
400
+ "name": "punctuation.definition.arguments.end.vhdl"
386
401
  },
387
402
  "4": {
388
- "name": "keyword.language.vhdl"
403
+ "name": "keyword.control.use.vhdl"
389
404
  },
390
405
  "5": {
391
- "name": "keyword.language.vhdl"
406
+ "name": "keyword.control.entity.vhdl"
392
407
  },
393
408
  "8": {
394
409
  "name": "entity.name.tag.library.reference.vhdl"
@@ -400,7 +415,7 @@
400
415
  "end": ";",
401
416
  "endCaptures": {
402
417
  "0": {
403
- "name": "punctuation.vhdl"
418
+ "name": "punctuation.terminator.statement.vhdl"
404
419
  }
405
420
  },
406
421
  "name": "meta.block.entity_instantiation.vhdl",
@@ -418,10 +433,10 @@
418
433
  "entity_pattern": {
419
434
  "patterns": [
420
435
  {
421
- "begin": "(?x)\r\n\t\t\t\t\t\t# From the beginning of the line ...\r\n\t\t\t\t\t\t^\\s*\r\n\r\n\t\t\t\t\t\t# The word entity $1\r\n\t\t\t\t\t\t((?i:entity\\b))\\s+\r\n\r\n\t\t\t\t\t\t# The identifier $3 or an invalid identifier $4\r\n\t\t\t\t\t\t(([a-zA-Z][a-zA-Z\\d_]*)|(.+?))(?=\\s)\r\n\t\t\t\t\t",
436
+ "begin": "(?x)\n\t\t\t\t\t\t# From the beginning of the line ...\n\t\t\t\t\t\t^\\s*\n\n\t\t\t\t\t\t# The word entity $1\n\t\t\t\t\t\t((?i:entity\\b))\\s+\n\n\t\t\t\t\t\t# The identifier $3 or an invalid identifier $4\n\t\t\t\t\t\t(([a-zA-Z][a-zA-Z\\d_]*)|(.+?))(?=\\s)\n\t\t\t\t\t",
422
437
  "beginCaptures": {
423
438
  "1": {
424
- "name": "keyword.language.vhdl"
439
+ "name": "storage.type.entity.vhdl"
425
440
  },
426
441
  "3": {
427
442
  "name": "entity.name.type.entity.begin.vhdl"
@@ -430,13 +445,13 @@
430
445
  "name": "invalid.illegal.invalid.identifier.vhdl"
431
446
  }
432
447
  },
433
- "end": "(?x)\r\n\r\n\t\t\t\t\t\t# The word end $1\r\n\t\t\t\t\t\t\\b((?i:end\\b))\r\n\r\n\t\t\t\t\t\t# Optional word entity $3\r\n\t\t\t\t\t\t(\\s+((?i:entity)))?\r\n\r\n\t\t\t\t\t\t# Optional identifier match $6 or indentifier mismatch $7\r\n\t\t\t\t\t\t(\\s+((\\3)|(.+?)))?\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t# Make sure there is a semicolon following\r\n\t\t\t\t\t\t(?=\\s*;)\r\n\t\t\t\t\t",
448
+ "end": "(?x)\n\n\t\t\t\t\t\t# The word end $1\n\t\t\t\t\t\t\\b((?i:end\\b))\n\n\t\t\t\t\t\t# Optional word entity $3\n\t\t\t\t\t\t(\\s+((?i:entity)))?\n\n\t\t\t\t\t\t# Optional identifier match $6 or indentifier mismatch $7\n\t\t\t\t\t\t(\\s+((\\3)|(.+?)))?\n\t\t\t\t\t\t\n\t\t\t\t\t\t# Make sure there is a semicolon following\n\t\t\t\t\t\t(?=\\s*;)\n\t\t\t\t\t",
434
449
  "endCaptures": {
435
450
  "1": {
436
- "name": "keyword.language.vhdl"
451
+ "name": "keyword.control.end.vhdl"
437
452
  },
438
453
  "3": {
439
- "name": "keyword.language.vhdl"
454
+ "name": "storage.type.entity.vhdl"
440
455
  },
441
456
  "6": {
442
457
  "name": "entity.name.type.entity.end.vhdl"
@@ -466,25 +481,25 @@
466
481
  "for_pattern": {
467
482
  "patterns": [
468
483
  {
469
- "begin": "(?x)\r\n\t\t\t\t\t\t# From the beginning of the line\r\n\t\t\t\t\t\t^\\s*\r\n\t\t\t\t\t\t(\r\n\t\t\t\t\t\t\t# Check for an identifier $2\r\n\t\t\t\t\t\t\t([a-zA-Z][a-zA-Z0-9_]*)\r\n\r\n\t\t\t\t\t\t\t# Followed by a colon $3\r\n\t\t\t\t\t\t\t\\s*(:)\\s*\r\n\t\t\t\t\t\t)?\r\n\r\n\t\t\t\t\t\t# Make sure the next word is not wait\r\n\t\t\t\t\t\t(?!(?i:wait\\s*))\r\n\r\n\t\t\t\t\t\t# The for keyword $4\r\n\t\t\t\t\t\t\\b((?i:for))\\b\r\n\r\n\t\t\t\t\t\t# Make sure the next word is not all\r\n\t\t\t\t\t\t(?!\\s*(?i:all))\r\n\r\n\t\t\t\t\t",
484
+ "begin": "(?x)\n\t\t\t\t\t\t# From the beginning of the line\n\t\t\t\t\t\t^\\s*\n\t\t\t\t\t\t(\n\t\t\t\t\t\t\t# Check for an identifier $2\n\t\t\t\t\t\t\t([a-zA-Z][a-zA-Z0-9_]*)\n\n\t\t\t\t\t\t\t# Followed by a colon $3\n\t\t\t\t\t\t\t\\s*(:)\\s*\n\t\t\t\t\t\t)?\n\n\t\t\t\t\t\t# Make sure the next word is not wait\n\t\t\t\t\t\t(?!(?i:wait\\s*))\n\n\t\t\t\t\t\t# The for keyword $4\n\t\t\t\t\t\t\\b((?i:for))\\b\n\n\t\t\t\t\t\t# Make sure the next word is not all\n\t\t\t\t\t\t(?!\\s*(?i:all))\n\n\t\t\t\t\t",
470
485
  "beginCaptures": {
471
486
  "2": {
472
487
  "name": "entity.name.tag.for.generate.begin.vhdl"
473
488
  },
474
489
  "3": {
475
- "name": "punctuation.vhdl"
490
+ "name": "punctuation.separator.vhdl"
476
491
  },
477
492
  "4": {
478
- "name": "keyword.language.vhdl"
493
+ "name": "keyword.control.for.vhdl"
479
494
  }
480
495
  },
481
- "end": "(?x)\r\n\t\t\t\t\t\t# The word end $1\r\n\t\t\t\t\t\t\\b((?i:end))\\s+\r\n\t\t\t\t\t\t(\r\n\t\t\t\t\t\t\t# Followed by generate or loop $3\r\n\t\t\t\t\t\t\t ((?i:generate|loop))\r\n\r\n\t\t\t\t\t\t\t# But it really is required $4\r\n\t\t\t\t\t\t\t|(\\S+)\r\n\t\t\t\t\t\t)\\b\r\n\r\n\t\t\t\t\t\t# The matching identifier $7 or an invalid identifier $8\r\n\t\t\t\t\t\t(\\s+((\\2)|(.+?)))?\r\n\r\n\t\t\t\t\t\t# Only space and a semicolon left\r\n\t\t\t\t\t\t(?=\\s*;)\r\n\t\t\t\t\t",
496
+ "end": "(?x)\n\t\t\t\t\t\t# The word end $1\n\t\t\t\t\t\t\\b((?i:end))\\s+\n\t\t\t\t\t\t(\n\t\t\t\t\t\t\t# Followed by generate or loop $3\n\t\t\t\t\t\t\t ((?i:generate|loop))\n\n\t\t\t\t\t\t\t# But it really is required $4\n\t\t\t\t\t\t\t|(\\S+)\n\t\t\t\t\t\t)\\b\n\n\t\t\t\t\t\t# The matching identifier $7 or an invalid identifier $8\n\t\t\t\t\t\t(\\s+((\\2)|(.+?)))?\n\n\t\t\t\t\t\t# Only space and a semicolon left\n\t\t\t\t\t\t(?=\\s*;)\n\t\t\t\t\t",
482
497
  "endCaptures": {
483
498
  "1": {
484
- "name": "keyword.language.vhdl"
499
+ "name": "keyword.control.end.vhdl"
485
500
  },
486
501
  "3": {
487
- "name": "keyword.language.vhdl"
502
+ "name": "keyword.control.vhdl"
488
503
  },
489
504
  "4": {
490
505
  "name": "invalid.illegal.loop.or.generate.required.vhdl"
@@ -523,10 +538,10 @@
523
538
  "function_definition_pattern": {
524
539
  "patterns": [
525
540
  {
526
- "begin": "(?x)\r\n\t\t\t\t\t\t# From the beginning of the line\r\n\t\t\t\t\t\t^\\s*\r\n\r\n\t\t\t\t\t\t# The word function $1\r\n\t\t\t\t\t\t((?i:function))\\s+\r\n\r\n\t\t\t\t\t\t(\r\n\t\t\t\t\t\t\t# A valid normal identifier $3\r\n\t\t\t\t\t\t\t ([a-zA-Z][a-zA-Z\\d_]*)\r\n\t\t\t\t\t\t\t# A valid string quoted identifier $4\r\n\t\t\t\t\t\t\t|(\"\\S+\")\n\t\t\t\t\t\t\t# A valid backslash escaped identifier $5\n\t\t\t\t\t\t\t|(\\\\.+\\\\)\r\n\t\t\t\t\t\t\t# An invalid identifier $5\r\n\t\t\t\t\t\t\t|(.+?)\r\n\t\t\t\t\t\t)\r\n\r\n\t\t\t\t\t\t# Check to make sure we have a list or we return\r\n\t\t\t\t\t\t(?=\\s*\r\n\t\t\t\t\t\t\t(\r\n\t\t\t\t\t\t\t\t \\(\r\n\t\t\t\t\t\t\t\t|(?i:\\breturn\\b)\r\n\t\t\t\t\t\t\t)\r\n\t\t\t\t\t\t)\r\n\t\t\t\t\t",
541
+ "begin": "(?x)\n\t\t\t\t\t\t# From the beginning of the line\n\t\t\t\t\t\t^\\s*\n\n\t\t\t\t\t\t# The word function $1\n\t\t\t\t\t\t((?i:function))\\s+\n\n\t\t\t\t\t\t(\n\t\t\t\t\t\t\t# A valid normal identifier $3\n\t\t\t\t\t\t\t ([a-zA-Z][a-zA-Z\\d_]*)\n\t\t\t\t\t\t\t# A valid string quoted identifier $4\n\t\t\t\t\t\t\t|(\"\\S+\")\n\t\t\t\t\t\t\t# A valid backslash escaped identifier $5\n\t\t\t\t\t\t\t|(\\\\.+\\\\)\n\t\t\t\t\t\t\t# An invalid identifier $5\n\t\t\t\t\t\t\t|(.+?)\n\t\t\t\t\t\t)\n\n\t\t\t\t\t\t# Check to make sure we have a list or we return\n\t\t\t\t\t\t(?=\\s*\n\t\t\t\t\t\t\t(\n\t\t\t\t\t\t\t\t \\(\n\t\t\t\t\t\t\t\t|(?i:\\breturn\\b)\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t)\n\t\t\t\t\t",
527
542
  "beginCaptures": {
528
543
  "1": {
529
- "name": "keyword.language.vhdl"
544
+ "name": "storage.type.function.vhdl"
530
545
  },
531
546
  "3": {
532
547
  "name": "entity.name.function.function.begin.vhdl"
@@ -541,13 +556,13 @@
541
556
  "name": "invalid.illegal.invalid.identifier.vhdl"
542
557
  }
543
558
  },
544
- "end": "(?x)\r\n\t\t\t\t\t\t# From the beginning of the line\r\n\t\t\t\t\t\t^\\s*\r\n\r\n\t\t\t\t\t\t# The word end $1\r\n\t\t\t\t\t\t((?i:end))\r\n\r\n\t\t\t\t\t\t# Optional word function $3\r\n\t\t\t\t\t\t(\\s+((?i:function)))?\r\n\r\n\t\t\t\t\t\t# Optional matched identifier $6 or mismatched identifier $7\r\n\t\t\t\t\t\t(\\s+((\\3|\\4|\\5)|(.+?)))?\r\n\r\n\t\t\t\t\t\t# Ending with whitespace and semicolon\r\n\t\t\t\t\t\t(?=\\s*;)\r\n\t\t\t\t\t",
559
+ "end": "(?x)\n\t\t\t\t\t\t# From the beginning of the line\n\t\t\t\t\t\t^\\s*\n\n\t\t\t\t\t\t# The word end $1\n\t\t\t\t\t\t((?i:end))\n\n\t\t\t\t\t\t# Optional word function $3\n\t\t\t\t\t\t(\\s+((?i:function)))?\n\n\t\t\t\t\t\t# Optional matched identifier $6 or mismatched identifier $7\n\t\t\t\t\t\t(\\s+((\\3|\\4|\\5)|(.+?)))?\n\n\t\t\t\t\t\t# Ending with whitespace and semicolon\n\t\t\t\t\t\t(?=\\s*;)\n\t\t\t\t\t",
545
560
  "endCaptures": {
546
561
  "1": {
547
- "name": "keyword.language.vhdl"
562
+ "name": "keyword.control.end.vhdl"
548
563
  },
549
564
  "3": {
550
- "name": "keyword.language.vhdl"
565
+ "name": "storage.type.function.vhdl"
551
566
  },
552
567
  "6": {
553
568
  "name": "entity.name.function.function.end.vhdl"
@@ -580,10 +595,10 @@
580
595
  "function_prototype_pattern": {
581
596
  "patterns": [
582
597
  {
583
- "begin": "(?x)\r\n\t\t\t\t\t\t# From the beginning of the line\r\n\t\t\t\t\t\t^\\s*\r\n\r\n\t\t\t\t\t\t# The word function $1\r\n\t\t\t\t\t\t((?i:function))\\s+\r\n\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t(\r\n\t\t\t\t\t\t\t# A valid normal identifier $3\r\n\t\t\t\t\t\t\t ([a-zA-Z][a-zA-Z\\d_]*)\r\n\t\t\t\t\t\t\t# A valid quoted identifier $4\r\n\t\t\t\t\t\t\t|(\"\\S+\")\n\t\t\t\t\t\t\t# A valid backslash escaped identifier $5\n\t\t\t\t\t\t\t|(\\\\.+\\\\)\r\n\t\t\t\t\t\t\t# An invalid identifier $6\r\n\t\t\t\t\t\t\t|(.+?)\r\n\t\t\t\t\t\t)\r\n\r\n\t\t\t\t\t\t# Check to make sure we have a list or we return\r\n\t\t\t\t\t\t(?=\\s*\r\n\t\t\t\t\t\t\t(\r\n\t\t\t\t\t\t\t\t \\(\r\n\t\t\t\t\t\t\t\t|(?i:\\breturn\\b)\r\n\t\t\t\t\t\t\t)\r\n\t\t\t\t\t\t)\r\n\t\t\t\t\t",
598
+ "begin": "(?x)\n\t\t\t\t\t\t# From the beginning of the line\n\t\t\t\t\t\t^\\s*\n\n\t\t\t\t\t\t# The word function $1\n\t\t\t\t\t\t((?i:function))\\s+\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t(\n\t\t\t\t\t\t\t# A valid normal identifier $3\n\t\t\t\t\t\t\t ([a-zA-Z][a-zA-Z\\d_]*)\n\t\t\t\t\t\t\t# A valid quoted identifier $4\n\t\t\t\t\t\t\t|(\"\\S+\")\n\t\t\t\t\t\t\t# A valid backslash escaped identifier $5\n\t\t\t\t\t\t\t|(\\\\.+\\\\)\n\t\t\t\t\t\t\t# An invalid identifier $6\n\t\t\t\t\t\t\t|(.+?)\n\t\t\t\t\t\t)\n\n\t\t\t\t\t\t# Check to make sure we have a list or we return\n\t\t\t\t\t\t(?=\\s*\n\t\t\t\t\t\t\t(\n\t\t\t\t\t\t\t\t \\(\n\t\t\t\t\t\t\t\t|(?i:\\breturn\\b)\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t)\n\t\t\t\t\t",
584
599
  "beginCaptures": {
585
600
  "1": {
586
- "name": "keyword.language.vhdl"
601
+ "name": "storage.type.function.vhdl"
587
602
  },
588
603
  "3": {
589
604
  "name": "entity.name.function.function.prototype.vhdl"
@@ -605,7 +620,7 @@
605
620
  "begin": "\\b(?i:return)(?=\\s+[^;]+\\s*;)",
606
621
  "beginCaptures": {
607
622
  "0": {
608
- "name": "keyword.language.vhdl"
623
+ "name": "keyword.control.return.vhdl"
609
624
  }
610
625
  },
611
626
  "end": "\\;",
@@ -639,13 +654,13 @@
639
654
  "begin": "\\b(?i:generic)\\b",
640
655
  "beginCaptures": {
641
656
  "0": {
642
- "name": "keyword.language.vhdl"
657
+ "name": "keyword.control.generic.vhdl"
643
658
  }
644
659
  },
645
660
  "end": ";",
646
661
  "endCaptures": {
647
662
  "0": {
648
- "name": "punctuation.vhdl"
663
+ "name": "punctuation.terminator.statement.vhdl"
649
664
  }
650
665
  },
651
666
  "name": "meta.block.generic_list.vhdl",
@@ -660,25 +675,25 @@
660
675
  "if_pattern": {
661
676
  "patterns": [
662
677
  {
663
- "begin": "(?x)\r\n\t\t\t\t\t\t(\r\n\t\t\t\t\t\t\t# Optional identifier $2\r\n\t\t\t\t\t\t\t([a-zA-Z][a-zA-Z0-9_]*)\r\n\r\n\t\t\t\t\t\t\t# Followed by a colon $3\r\n\t\t\t\t\t\t\t\\s*(:)\\s*\r\n\t\t\t\t\t\t)?\r\n\r\n\t\t\t\t\t\t# Keyword if $4\r\n\t\t\t\t\t\t\\b((?i:if))\\b\r\n\t\t\t\t\t",
678
+ "begin": "(?x)\n\t\t\t\t\t\t(\n\t\t\t\t\t\t\t# Optional identifier $2\n\t\t\t\t\t\t\t([a-zA-Z][a-zA-Z0-9_]*)\n\n\t\t\t\t\t\t\t# Followed by a colon $3\n\t\t\t\t\t\t\t\\s*(:)\\s*\n\t\t\t\t\t\t)?\n\n\t\t\t\t\t\t# Keyword if $4\n\t\t\t\t\t\t\\b((?i:if))\\b\n\t\t\t\t\t",
664
679
  "beginCaptures": {
665
680
  "2": {
666
681
  "name": "entity.name.tag.if.generate.begin.vhdl"
667
682
  },
668
683
  "3": {
669
- "name": "punctuation.vhdl"
684
+ "name": "punctuation.separator.vhdl"
670
685
  },
671
686
  "4": {
672
- "name": "keyword.language.vhdl"
687
+ "name": "keyword.control.if.vhdl"
673
688
  }
674
689
  },
675
- "end": "(?x)\r\n\t\t\t\t\t\t# The word end $1\r\n\t\t\t\t\t\t\\b((?i:end))\\s+\r\n\r\n\t\t\t\t\t\t(\r\n\t\t\t\t\t\t\t(\r\n\t\t\t\t\t\t\t\t# Optional generate or if keyword $4\r\n\t\t\t\t\t\t\t\t ((?i:generate|if))\r\n\r\n\t\t\t\t\t\t\t\t# Keyword if or generate required $5\r\n\t\t\t\t\t\t\t\t|(\\S+)\r\n\t\t\t\t\t\t\t)\\b\r\n\t\t\t\t\t\t\t(\r\n\t\t\t\t\t\t\t\t\\s+\r\n\t\t\t\t\t\t\t\t(\r\n\t\t\t\t\t\t\t\t\t# Optional matching identifier $8\r\n\t\t\t\t\t\t\t\t\t (\\2)\r\n\r\n\t\t\t\t\t\t\t\t\t# Mismatched identifier $9\r\n\t\t\t\t\t\t\t\t\t|(.+?)\r\n\t\t\t\t\t\t\t\t)\r\n\t\t\t\t\t\t\t)?\r\n\t\t\t\t\t\t)?\r\n\r\n\t\t\t\t\t\t# Followed by a semicolon\r\n\t\t\t\t\t\t(?=\\s*;)\r\n\t\t\t\t\t",
690
+ "end": "(?x)\n\t\t\t\t\t\t# The word end $1\n\t\t\t\t\t\t\\b((?i:end))\\s+\n\n\t\t\t\t\t\t(\n\t\t\t\t\t\t\t(\n\t\t\t\t\t\t\t\t# Optional generate or if keyword $4\n\t\t\t\t\t\t\t\t ((?i:generate|if))\n\n\t\t\t\t\t\t\t\t# Keyword if or generate required $5\n\t\t\t\t\t\t\t\t|(\\S+)\n\t\t\t\t\t\t\t)\\b\n\t\t\t\t\t\t\t(\n\t\t\t\t\t\t\t\t\\s+\n\t\t\t\t\t\t\t\t(\n\t\t\t\t\t\t\t\t\t# Optional matching identifier $8\n\t\t\t\t\t\t\t\t\t (\\2)\n\n\t\t\t\t\t\t\t\t\t# Mismatched identifier $9\n\t\t\t\t\t\t\t\t\t|(.+?)\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t)?\n\t\t\t\t\t\t)?\n\n\t\t\t\t\t\t# Followed by a semicolon\n\t\t\t\t\t\t(?=\\s*;)\n\t\t\t\t\t",
676
691
  "endCaptures": {
677
692
  "1": {
678
- "name": "keyword.language.vhdl"
693
+ "name": "keyword.control.end.vhdl"
679
694
  },
680
695
  "4": {
681
- "name": "keyword.language.vhdl"
696
+ "name": "keyword.control.generate.vhdl"
682
697
  },
683
698
  "5": {
684
699
  "name": "invalid.illegal.if.or.generate.required.vhdl"
@@ -718,11 +733,11 @@
718
733
  "patterns": [
719
734
  {
720
735
  "match": "'(?i:active|ascending|base|delayed|driving|event|high|image|instance|last|left|leftof|length|low|path|pos|pred|quiet|range|reverse|right|rightof|simple|stable|succ|transaction|val|value)\\b",
721
- "name": "keyword.attributes.vhdl"
736
+ "name": "keyword.control.attributes.vhdl"
722
737
  },
723
738
  {
724
739
  "match": "\\b(?i:abs|access|after|alias|all|and|architecture|array|assert|attribute|begin|block|body|buffer|bus|case|component|configuration|constant|disconnect|downto|else|elsif|end|entity|exit|file|for|function|generate|generic|group|guarded|if|impure|in|inertial|inout|is|label|library|linkage|literal|loop|map|mod|nand|new|next|nor|not|null|of|on|open|or|others|out|package|port|postponed|procedure|process|pure|range|record|register|reject|rem|report|return|rol|ror|select|severity|shared|signal|sla|sll|sra|srl|subtype|then|to|transport|type|unaffected|units|until|use|variable|wait|when|while|with|xnor|xor)\\b",
725
- "name": "keyword.language.vhdl"
740
+ "name": "keyword.control.language.vhdl"
726
741
  },
727
742
  {
728
743
  "match": "(\\+|\\-|<=|=|=>|:=|>=|>|<|/|\\||&|(\\*{1,2}))",
@@ -733,13 +748,13 @@
733
748
  "package_body_pattern": {
734
749
  "patterns": [
735
750
  {
736
- "begin": "(?x)\r\n\t\t\t\t\t\t# The word package $1\r\n\t\t\t\t\t\t\\b((?i:package))\\s+\r\n\r\n\t\t\t\t\t\t# ... but we want to be a package body $2\r\n\t\t\t\t\t\t((?i:body))\\s+\r\n\r\n\t\t\t\t\t\t# The valid identifier $4 or the invalid one $5\r\n\t\t\t\t\t\t(([a-zA-Z][a-zA-Z\\d_]*)|(.+?))\\s+\r\n\r\n\t\t\t\t\t\t# ... and we end it with an is $6\r\n\t\t\t\t\t\t((?i:is))\\b\r\n\t\t\t\t\t",
751
+ "begin": "(?x)\n\t\t\t\t\t\t# The word package $1\n\t\t\t\t\t\t\\b((?i:package))\\s+\n\n\t\t\t\t\t\t# ... but we want to be a package body $2\n\t\t\t\t\t\t((?i:body))\\s+\n\n\t\t\t\t\t\t# The valid identifier $4 or the invalid one $5\n\t\t\t\t\t\t(([a-zA-Z][a-zA-Z\\d_]*)|(.+?))\\s+\n\n\t\t\t\t\t\t# ... and we end it with an is $6\n\t\t\t\t\t\t((?i:is))\\b\n\t\t\t\t\t",
737
752
  "beginCaptures": {
738
753
  "1": {
739
- "name": "keyword.language.vhdl"
754
+ "name": "storage.type.package.vhdl"
740
755
  },
741
756
  "2": {
742
- "name": "keyword.language.vhdl"
757
+ "name": "keyword.control.body.vhdl"
743
758
  },
744
759
  "4": {
745
760
  "name": "entity.name.section.package_body.begin.vhdl"
@@ -748,19 +763,19 @@
748
763
  "name": "invalid.illegal.invalid.identifier.vhdl"
749
764
  },
750
765
  "6": {
751
- "name": "keyword.language.vhdl"
766
+ "name": "keyword.control.is.vhdl"
752
767
  }
753
768
  },
754
- "end": "(?x)\r\n\t\t\t\t\t\t# The word end $1\r\n\t\t\t\t\t\t\\b((?i:end\\b))\r\n\r\n\t\t\t\t\t\t# Optional word package $3 body $4\r\n\t\t\t\t\t\t(\\s+((?i:package))\\s+((?i:body)))?\r\n\r\n\t\t\t\t\t\t# Optional identifier $7 or mismatched identifier $8\r\n\t\t\t\t\t\t(\\s+((\\4)|(.+?)))?(?=\\s*;)",
769
+ "end": "(?x)\n\t\t\t\t\t\t# The word end $1\n\t\t\t\t\t\t\\b((?i:end\\b))\n\n\t\t\t\t\t\t# Optional word package $3 body $4\n\t\t\t\t\t\t(\\s+((?i:package))\\s+((?i:body)))?\n\n\t\t\t\t\t\t# Optional identifier $7 or mismatched identifier $8\n\t\t\t\t\t\t(\\s+((\\4)|(.+?)))?(?=\\s*;)",
755
770
  "endCaptures": {
756
771
  "1": {
757
- "name": "keyword.language.vhdl"
772
+ "name": "keyword.control.end.vhdl"
758
773
  },
759
774
  "3": {
760
- "name": "keyword.language.vhdl"
775
+ "name": "storage.type.package.vhdl"
761
776
  },
762
777
  "4": {
763
- "name": "keyword.language.vhdl"
778
+ "name": "keyword.control.body.vhdl"
764
779
  },
765
780
  "7": {
766
781
  "name": "entity.name.section.package_body.end.vhdl"
@@ -796,10 +811,10 @@
796
811
  "package_pattern": {
797
812
  "patterns": [
798
813
  {
799
- "begin": "(?x)\r\n\t\t\t\t\t\t# The word package $1\r\n\t\t\t\t\t\t\\b((?i:package))\\s+\r\n\r\n\t\t\t\t\t\t# ... but we do not want to be a package body\r\n\t\t\t\t\t\t(?!(?i:body))\r\n\r\n\t\t\t\t\t\t# The valid identifier $3 or the invalid one $4\r\n\t\t\t\t\t\t(([a-zA-Z][a-zA-Z\\d_]*)|(.+?))\\s+\r\n\r\n\t\t\t\t\t\t# ... and we end it with an is $5\r\n\t\t\t\t\t\t((?i:is))\\b\r\n\t\t\t\t\t",
814
+ "begin": "(?x)\n\t\t\t\t\t\t# The word package $1\n\t\t\t\t\t\t\\b((?i:package))\\s+\n\n\t\t\t\t\t\t# ... but we do not want to be a package body\n\t\t\t\t\t\t(?!(?i:body))\n\n\t\t\t\t\t\t# The valid identifier $3 or the invalid one $4\n\t\t\t\t\t\t(([a-zA-Z][a-zA-Z\\d_]*)|(.+?))\\s+\n\n\t\t\t\t\t\t# ... and we end it with an is $5\n\t\t\t\t\t\t((?i:is))\\b\n\t\t\t\t\t",
800
815
  "beginCaptures": {
801
816
  "1": {
802
- "name": "keyword.language.vhdl"
817
+ "name": "storage.type.package.vhdl"
803
818
  },
804
819
  "3": {
805
820
  "name": "entity.name.section.package.begin.vhdl"
@@ -808,16 +823,16 @@
808
823
  "name": "invalid.illegal.invalid.identifier.vhdl"
809
824
  },
810
825
  "5": {
811
- "name": "keyword.language.vhdl"
826
+ "name": "keyword.control.is.vhdl"
812
827
  }
813
828
  },
814
- "end": "(?x)\r\n\t\t\t\t\t\t# The word end $1\r\n\t\t\t\t\t\t\\b((?i:end\\b))\r\n\r\n\t\t\t\t\t\t# Optional word package $3\r\n\t\t\t\t\t\t(\\s+((?i:package)))?\r\n\r\n\t\t\t\t\t\t# Optional identifier $6 or mismatched identifier $7\r\n\t\t\t\t\t\t(\\s+((\\2)|(.+?)))?(?=\\s*;)",
829
+ "end": "(?x)\n\t\t\t\t\t\t# The word end $1\n\t\t\t\t\t\t\\b((?i:end\\b))\n\n\t\t\t\t\t\t# Optional word package $3\n\t\t\t\t\t\t(\\s+((?i:package)))?\n\n\t\t\t\t\t\t# Optional identifier $6 or mismatched identifier $7\n\t\t\t\t\t\t(\\s+((\\2)|(.+?)))?(?=\\s*;)",
815
830
  "endCaptures": {
816
831
  "1": {
817
- "name": "keyword.language.vhdl"
832
+ "name": "keyword.control.end.vhdl"
818
833
  },
819
834
  "3": {
820
- "name": "keyword.language.vhdl"
835
+ "name": "storage.type.package.vhdl"
821
836
  },
822
837
  "6": {
823
838
  "name": "entity.name.section.package.end.vhdl"
@@ -859,7 +874,7 @@
859
874
  "begin": "\\(",
860
875
  "beginCaptures": {
861
876
  "0": {
862
- "name": "punctuation.vhdl"
877
+ "name": "punctuation.definition.parenthetical_list.begin.vhdl"
863
878
  }
864
879
  },
865
880
  "end": "(?<=\\))",
@@ -903,13 +918,13 @@
903
918
  "begin": "\\(",
904
919
  "beginCaptures": {
905
920
  "0": {
906
- "name": "punctuation.vhdl"
921
+ "name": "punctuation.section.scope.begin.vhdl"
907
922
  }
908
923
  },
909
924
  "end": "\\)",
910
925
  "endCaptures": {
911
926
  "0": {
912
- "name": "punctuation.vhdl"
927
+ "name": "punctuation.section.scope.end.vhdl"
913
928
  }
914
929
  },
915
930
  "name": "meta.block.parenthetical_pair.vhdl",
@@ -930,13 +945,13 @@
930
945
  "begin": "\\b(?i:port)\\b",
931
946
  "beginCaptures": {
932
947
  "0": {
933
- "name": "keyword.language.vhdl"
948
+ "name": "keyword.control.port.vhdl"
934
949
  }
935
950
  },
936
951
  "end": ";",
937
952
  "endCaptures": {
938
953
  "0": {
939
- "name": "punctuation.vhdl"
954
+ "name": "punctuation.terminator.statement.vhdl"
940
955
  }
941
956
  },
942
957
  "name": "meta.block.port_list.vhdl",
@@ -951,10 +966,10 @@
951
966
  "procedure_definition_pattern": {
952
967
  "patterns": [
953
968
  {
954
- "begin": "(?x)\r\n\t\t\t\t\t\t# From the beginning of the line\r\n\t\t\t\t\t\t^\\s*\r\n\r\n\t\t\t\t\t\t# The word function $1\r\n\t\t\t\t\t\t((?i:procedure))\\s+\r\n\r\n\t\t\t\t\t\t(\r\n\t\t\t\t\t\t\t# A valid normal identifier $3\r\n\t\t\t\t\t\t\t ([a-zA-Z][a-zA-Z\\d_]*)\r\n\t\t\t\t\t\t\t# A valid quoted identifier $4\r\n\t\t\t\t\t\t\t|(\"\\S+\")\r\n\t\t\t\t\t\t\t# An invalid identifier $5\r\n\t\t\t\t\t\t\t|(.+?)\r\n\t\t\t\t\t\t)\r\n\r\n\t\t\t\t\t\t# Check to make sure we have a list is\r\n\t\t\t\t\t\t(?=\\s*(\\(|(?i:is)))\r\n\t\t\t\t\t",
969
+ "begin": "(?x)\n\t\t\t\t\t\t# From the beginning of the line\n\t\t\t\t\t\t^\\s*\n\n\t\t\t\t\t\t# The word function $1\n\t\t\t\t\t\t((?i:procedure))\\s+\n\n\t\t\t\t\t\t(\n\t\t\t\t\t\t\t# A valid normal identifier $3\n\t\t\t\t\t\t\t ([a-zA-Z][a-zA-Z\\d_]*)\n\t\t\t\t\t\t\t# A valid quoted identifier $4\n\t\t\t\t\t\t\t|(\"\\S+\")\n\t\t\t\t\t\t\t# An invalid identifier $5\n\t\t\t\t\t\t\t|(.+?)\n\t\t\t\t\t\t)\n\n\t\t\t\t\t\t# Check to make sure we have a list is\n\t\t\t\t\t\t(?=\\s*(\\(|(?i:is)))\n\t\t\t\t\t",
955
970
  "beginCaptures": {
956
971
  "1": {
957
- "name": "keyword.language.vhdl"
972
+ "name": "storage.type.procedure.vhdl"
958
973
  },
959
974
  "3": {
960
975
  "name": "entity.name.function.procedure.begin.vhdl"
@@ -966,13 +981,13 @@
966
981
  "name": "invalid.illegal.invalid.identifier.vhdl"
967
982
  }
968
983
  },
969
- "end": "(?x)\r\n\t\t\t\t\t\t# From the beginning of the line\r\n\t\t\t\t\t\t^\\s*\r\n\r\n\t\t\t\t\t\t# The word end $1\r\n\t\t\t\t\t\t((?i:end))\r\n\r\n\t\t\t\t\t\t# Optional word function $3\r\n\t\t\t\t\t\t(\\s+((?i:procedure)))?\r\n\r\n\t\t\t\t\t\t# Optional matched identifier $6 or mismatched identifier $7\r\n\t\t\t\t\t\t(\\s+((\\3|\\4)|(.+?)))?\r\n\r\n\t\t\t\t\t\t# Ending with whitespace and semicolon\r\n\t\t\t\t\t\t(?=\\s*;)\r\n\t\t\t\t\t",
984
+ "end": "(?x)\n\t\t\t\t\t\t# From the beginning of the line\n\t\t\t\t\t\t^\\s*\n\n\t\t\t\t\t\t# The word end $1\n\t\t\t\t\t\t((?i:end))\n\n\t\t\t\t\t\t# Optional word function $3\n\t\t\t\t\t\t(\\s+((?i:procedure)))?\n\n\t\t\t\t\t\t# Optional matched identifier $6 or mismatched identifier $7\n\t\t\t\t\t\t(\\s+((\\3|\\4)|(.+?)))?\n\n\t\t\t\t\t\t# Ending with whitespace and semicolon\n\t\t\t\t\t\t(?=\\s*;)\n\t\t\t\t\t",
970
985
  "endCaptures": {
971
986
  "1": {
972
- "name": "keyword.language.vhdl"
987
+ "name": "keyword.control.end.vhdl"
973
988
  },
974
989
  "3": {
975
- "name": "keyword.language.vhdl"
990
+ "name": "storage.type.procedure.vhdl"
976
991
  },
977
992
  "6": {
978
993
  "name": "entity.name.function.procedure.end.vhdl"
@@ -1005,10 +1020,10 @@
1005
1020
  "procedure_prototype_pattern": {
1006
1021
  "patterns": [
1007
1022
  {
1008
- "begin": "(?x)\r\n\t\t\t\t\t\t\\b((?i:procedure))\\s+\r\n\t\t\t\t\t\t(([a-zA-Z][a-zA-Z0-9_]*)|(.+?))\r\n\t\t\t\t\t\t(?=\\s*(\\(|;))\r\n\t\t\t\t\t",
1023
+ "begin": "(?x)\n\t\t\t\t\t\t\\b((?i:procedure))\\s+\n\t\t\t\t\t\t(([a-zA-Z][a-zA-Z0-9_]*)|(.+?))\n\t\t\t\t\t\t(?=\\s*(\\(|;))\n\t\t\t\t\t",
1009
1024
  "beginCaptures": {
1010
1025
  "1": {
1011
- "name": "keyword.language.vhdl"
1026
+ "name": "storage.type.procedure.vhdl"
1012
1027
  },
1013
1028
  "3": {
1014
1029
  "name": "entity.name.function.procedure.begin.vhdl"
@@ -1035,25 +1050,25 @@
1035
1050
  "process_pattern": {
1036
1051
  "patterns": [
1037
1052
  {
1038
- "begin": "(?x)\r\n\t\t\t\t\t\t# From the beginning of the line\r\n\t\t\t\t\t\t^\\s*\r\n\r\n\t\t\t\t\t\t(\r\n\t\t\t\t\t\t\t# Optional identifier $2\r\n\t\t\t\t\t\t\t([a-zA-Z][a-zA-Z0-9_]*)\r\n\r\n\t\t\t\t\t\t\t# Colon $3\r\n\t\t\t\t\t\t\t\\s*(:)\\s*\r\n\t\t\t\t\t\t)?\r\n\r\n\t\t\t\t\t\t# The word process #4\r\n\t\t\t\t\t\t((?i:process))\r\n\t\t\t\t\t",
1053
+ "begin": "(?x)\n\t\t\t\t\t\t# From the beginning of the line\n\t\t\t\t\t\t^\\s*\n\n\t\t\t\t\t\t(\n\t\t\t\t\t\t\t# Optional identifier $2\n\t\t\t\t\t\t\t([a-zA-Z][a-zA-Z0-9_]*)\n\n\t\t\t\t\t\t\t# Colon $3\n\t\t\t\t\t\t\t\\s*(:)\\s*\n\t\t\t\t\t\t)?\n\n\t\t\t\t\t\t# The word process #4\n\t\t\t\t\t\t((?i:process))\n\t\t\t\t\t",
1039
1054
  "beginCaptures": {
1040
1055
  "2": {
1041
1056
  "name": "entity.name.section.process.begin.vhdl"
1042
1057
  },
1043
1058
  "3": {
1044
- "name": "punctuation.vhdl"
1059
+ "name": "punctuation.separator.vhdl"
1045
1060
  },
1046
1061
  "4": {
1047
- "name": "keyword.language.vhdl"
1062
+ "name": "keyword.control.process.vhdl"
1048
1063
  }
1049
1064
  },
1050
- "end": "(?x)\r\n\t\t\t\t\t\t# The word end $1\r\n\t\t\t\t\t\t((?i:end))\r\n\r\n\t\t\t\t\t\t# Optional word process $3\r\n\t\t\t\t\t\t(\\s+((?i:process)))\r\n\r\n\t\t\t\t\t\t# Optional identifier $6 or invalid identifier $7\r\n\t\t\t\t\t\t(\\s+((\\2)|(.+?)))?\r\n\r\n\t\t\t\t\t\t(?=\\s*;)\r\n\t\t\t\t\t",
1065
+ "end": "(?x)\n\t\t\t\t\t\t# The word end $1\n\t\t\t\t\t\t((?i:end))\n\n\t\t\t\t\t\t# Optional word process $3\n\t\t\t\t\t\t(\\s+((?i:process)))\n\n\t\t\t\t\t\t# Optional identifier $6 or invalid identifier $7\n\t\t\t\t\t\t(\\s+((\\2)|(.+?)))?\n\n\t\t\t\t\t\t(?=\\s*;)\n\t\t\t\t\t",
1051
1066
  "endCaptures": {
1052
1067
  "1": {
1053
- "name": "keyword.language.vhdl"
1068
+ "name": "keyword.control.end.vhdl"
1054
1069
  },
1055
1070
  "3": {
1056
- "name": "keyword.language.vhdl"
1071
+ "name": "keyword.control.process.vhdl"
1057
1072
  },
1058
1073
  "6": {
1059
1074
  "name": "entity.name.section.process.end.vhdl"
@@ -1078,7 +1093,7 @@
1078
1093
  "patterns": [
1079
1094
  {
1080
1095
  "match": "(\\.|,|:|;|\\(|\\))",
1081
- "name": "punctuation.vhdl"
1096
+ "name": "punctuation.definition.other.vhdl"
1082
1097
  }
1083
1098
  ]
1084
1099
  },
@@ -1088,16 +1103,16 @@
1088
1103
  "begin": "\\b(?i:record)\\b",
1089
1104
  "beginCaptures": {
1090
1105
  "0": {
1091
- "name": "keyword.language.vhdl"
1106
+ "name": "storage.type.record.vhdl"
1092
1107
  }
1093
1108
  },
1094
- "end": "(?x)\r\n\t\t\t\t\t\t# The word end $1\r\n\t\t\t\t\t\t\\b((?i:end))\r\n\r\n\t\t\t\t\t\t# The word record $2\r\n\t\t\t\t\t\t\\s+((?i:record))\r\n\r\n\t\t\t\t\t\t# Optional identifier $5 or invalid identifier $6\r\n\t\t\t\t\t\t(\\s+(([a-zA-Z][a-zA-Z\\d_]*)|(.*?)))?\r\n\r\n\t\t\t\t\t\t# Only whitespace and semicolons can be left\r\n\t\t\t\t\t\t(?=\\s*;)\r\n\t\t\t\t\t",
1109
+ "end": "(?x)\n\t\t\t\t\t\t# The word end $1\n\t\t\t\t\t\t\\b((?i:end))\n\n\t\t\t\t\t\t# The word record $2\n\t\t\t\t\t\t\\s+((?i:record))\n\n\t\t\t\t\t\t# Optional identifier $5 or invalid identifier $6\n\t\t\t\t\t\t(\\s+(([a-zA-Z][a-zA-Z\\d_]*)|(.*?)))?\n\n\t\t\t\t\t\t# Only whitespace and semicolons can be left\n\t\t\t\t\t\t(?=\\s*;)\n\t\t\t\t\t",
1095
1110
  "endCaptures": {
1096
1111
  "1": {
1097
- "name": "keyword.language.vhdl"
1112
+ "name": "keyword.control.end.vhdl"
1098
1113
  },
1099
1114
  "2": {
1100
- "name": "keyword.language.vhdl"
1115
+ "name": "storage.type.record.vhdl"
1101
1116
  },
1102
1117
  "5": {
1103
1118
  "name": "entity.name.type.record.vhdl"
@@ -1121,12 +1136,30 @@
1121
1136
  "strings": {
1122
1137
  "patterns": [
1123
1138
  {
1124
- "match": "'.'",
1139
+ "captures": {
1140
+ "1": {
1141
+ "name": "punctuation.definition.string.begin.vhdl"
1142
+ },
1143
+ "2": {
1144
+ "name": "punctuation.definition.string.end.vhdl"
1145
+ }
1146
+ },
1147
+ "match": "(').(')",
1125
1148
  "name": "string.quoted.single.vhdl"
1126
1149
  },
1127
1150
  {
1128
1151
  "begin": "\"",
1152
+ "beginCaptures": {
1153
+ "0": {
1154
+ "name": "punctuation.definition.string.begin.vhdl"
1155
+ }
1156
+ },
1129
1157
  "end": "\"",
1158
+ "endCaptures": {
1159
+ "0": {
1160
+ "name": "punctuation.definition.string.end.vhdl"
1161
+ }
1162
+ },
1130
1163
  "name": "string.quoted.double.vhdl",
1131
1164
  "patterns": [
1132
1165
  {
@@ -1145,10 +1178,10 @@
1145
1178
  "subtype_pattern": {
1146
1179
  "patterns": [
1147
1180
  {
1148
- "begin": "(?x)\r\n\t\t\t\t\t\t# The word subtype $1\r\n\t\t\t\t\t\t\\b((?i:subtype))\\s+\r\n\r\n\t\t\t\t\t\t# Valid identifier $3 or invalid identifier $4\r\n\t\t\t\t\t\t(([a-zA-Z][a-zA-Z0-9_]*)|(.+?))\\s+\r\n\r\n\t\t\t\t\t\t# The word is $5\r\n\t\t\t\t\t\t((?i:is))\\b\r\n\t\t\t\t\t",
1181
+ "begin": "(?x)\n\t\t\t\t\t\t# The word subtype $1\n\t\t\t\t\t\t\\b((?i:subtype))\\s+\n\n\t\t\t\t\t\t# Valid identifier $3 or invalid identifier $4\n\t\t\t\t\t\t(([a-zA-Z][a-zA-Z0-9_]*)|(.+?))\\s+\n\n\t\t\t\t\t\t# The word is $5\n\t\t\t\t\t\t((?i:is))\\b\n\t\t\t\t\t",
1149
1182
  "beginCaptures": {
1150
1183
  "1": {
1151
- "name": "keyword.language.vhdl"
1184
+ "name": "keyword.control.subtype.vhdl"
1152
1185
  },
1153
1186
  "3": {
1154
1187
  "name": "entity.name.type.subtype.vhdl"
@@ -1157,13 +1190,13 @@
1157
1190
  "name": "invalid.illegal.invalid.identifier.vhdl"
1158
1191
  },
1159
1192
  "5": {
1160
- "name": "keyword.language.vhdl"
1193
+ "name": "keyword.control.is.vhdl"
1161
1194
  }
1162
1195
  },
1163
1196
  "end": ";",
1164
1197
  "endCaptures": {
1165
1198
  "0": {
1166
- "name": "punctuation.vhdl"
1199
+ "name": "punctuation.terminator.statement.vhdl"
1167
1200
  }
1168
1201
  },
1169
1202
  "name": "meta.block.subtype.vhdl",
@@ -1265,10 +1298,10 @@
1265
1298
  "type_pattern": {
1266
1299
  "patterns": [
1267
1300
  {
1268
- "begin": "(?x)\r\n\t\t\t\t\t\t# The word type $1\r\n\t\t\t\t\t\t\\b((?i:type))\\s+\r\n\r\n\t\t\t\t\t\t# Valid identifier $3 or invalid identifier $4\r\n\t\t\t\t\t\t(([a-zA-Z][a-zA-Z0-9_]*)|(.+?))\r\n\r\n\t\t\t\t\t\t(\r\n\t\t\t\t\t\t\t# A semicolon is coming up if we are incomplete\r\n\t\t\t\t\t\t\t (?=\\s*;)\r\n\r\n\t\t\t\t\t\t\t# Or the word is comes up $7\r\n\t\t\t\t\t\t\t|(\\s+((?i:is)))\r\n\t\t\t\t\t\t)\\b\r\n\t\t\t\t\t",
1301
+ "begin": "(?x)\n\t\t\t\t\t\t# The word type $1\n\t\t\t\t\t\t\\b((?i:type))\\s+\n\n\t\t\t\t\t\t# Valid identifier $3 or invalid identifier $4\n\t\t\t\t\t\t(([a-zA-Z][a-zA-Z0-9_]*)|(.+?))\n\n\t\t\t\t\t\t(\n\t\t\t\t\t\t\t# A semicolon is coming up if we are incomplete\n\t\t\t\t\t\t\t (?=\\s*;)\n\n\t\t\t\t\t\t\t# Or the word is comes up $7\n\t\t\t\t\t\t\t|(\\s+((?i:is)))\n\t\t\t\t\t\t)\\b\n\t\t\t\t\t",
1269
1302
  "beginCaptures": {
1270
1303
  "1": {
1271
- "name": "keyword.language.vhdl"
1304
+ "name": "keyword.control.type.vhdl"
1272
1305
  },
1273
1306
  "3": {
1274
1307
  "name": "entity.name.type.type.vhdl"
@@ -1277,13 +1310,13 @@
1277
1310
  "name": "invalid.illegal.invalid.identifier.vhdl"
1278
1311
  },
1279
1312
  "7": {
1280
- "name": "keyword.language.vhdl"
1313
+ "name": "keyword.control.is.vhdl"
1281
1314
  }
1282
1315
  },
1283
1316
  "end": ";",
1284
1317
  "endCaptures": {
1285
1318
  "0": {
1286
- "name": "punctuation.vhdl"
1319
+ "name": "punctuation.terminator.statement.vhdl"
1287
1320
  }
1288
1321
  },
1289
1322
  "name": "meta.block.type.vhdl",
@@ -1301,25 +1334,25 @@
1301
1334
  "while_pattern": {
1302
1335
  "patterns": [
1303
1336
  {
1304
- "begin": "(?x)\r\n\t\t\t\t\t\t# From the beginning of the line\r\n\t\t\t\t\t\t^\\s*\r\n\t\t\t\t\t\t(\r\n\t\t\t\t\t\t\t# Check for an identifier $2\r\n\t\t\t\t\t\t\t([a-zA-Z][a-zA-Z0-9_]*)\r\n\r\n\t\t\t\t\t\t\t# Followed by a colon $3\r\n\t\t\t\t\t\t\t\\s*(:)\\s*\r\n\t\t\t\t\t\t)?\r\n\r\n\t\t\t\t\t\t# The for keyword $4\r\n\t\t\t\t\t\t\\b((?i:while))\\b\r\n\t\t\t\t\t",
1337
+ "begin": "(?x)\n\t\t\t\t\t\t# From the beginning of the line\n\t\t\t\t\t\t^\\s*\n\t\t\t\t\t\t(\n\t\t\t\t\t\t\t# Check for an identifier $2\n\t\t\t\t\t\t\t([a-zA-Z][a-zA-Z0-9_]*)\n\n\t\t\t\t\t\t\t# Followed by a colon $3\n\t\t\t\t\t\t\t\\s*(:)\\s*\n\t\t\t\t\t\t)?\n\n\t\t\t\t\t\t# The for keyword $4\n\t\t\t\t\t\t\\b((?i:while))\\b\n\t\t\t\t\t",
1305
1338
  "beginCaptures": {
1306
1339
  "2": {
1307
- "name": ""
1340
+ "name": "entity.name.type.vhdl"
1308
1341
  },
1309
1342
  "3": {
1310
- "name": "punctuation.vhdl"
1343
+ "name": "punctuation.separator.vhdl"
1311
1344
  },
1312
1345
  "4": {
1313
- "name": "keyword.language.vhdl"
1346
+ "name": "keyword.control.while.vhdl"
1314
1347
  }
1315
1348
  },
1316
- "end": "(?x)\r\n\t\t\t\t\t\t# The word end $1\r\n\t\t\t\t\t\t\\b((?i:end))\\s+\r\n\t\t\t\t\t\t(\r\n\t\t\t\t\t\t\t# Followed by keyword loop $3\r\n\t\t\t\t\t\t\t ((?i:loop))\r\n\r\n\t\t\t\t\t\t\t# But it really is required $4\r\n\t\t\t\t\t\t\t|(\\S+)\r\n\t\t\t\t\t\t)\\b\r\n\r\n\t\t\t\t\t\t# The matching identifier $7 or an invalid identifier $8\r\n\t\t\t\t\t\t(\\s+((\\2)|(.+?)))?\r\n\r\n\t\t\t\t\t\t# Only space and a semicolon left\r\n\t\t\t\t\t\t(?=\\s*;)\r\n\t\t\t\t\t",
1349
+ "end": "(?x)\n\t\t\t\t\t\t# The word end $1\n\t\t\t\t\t\t\\b((?i:end))\\s+\n\t\t\t\t\t\t(\n\t\t\t\t\t\t\t# Followed by keyword loop $3\n\t\t\t\t\t\t\t ((?i:loop))\n\n\t\t\t\t\t\t\t# But it really is required $4\n\t\t\t\t\t\t\t|(\\S+)\n\t\t\t\t\t\t)\\b\n\n\t\t\t\t\t\t# The matching identifier $7 or an invalid identifier $8\n\t\t\t\t\t\t(\\s+((\\2)|(.+?)))?\n\n\t\t\t\t\t\t# Only space and a semicolon left\n\t\t\t\t\t\t(?=\\s*;)\n\t\t\t\t\t",
1317
1350
  "endCaptures": {
1318
1351
  "1": {
1319
- "name": "keyword.language.vhdl"
1352
+ "name": "keyword.control.end.vhdl"
1320
1353
  },
1321
1354
  "3": {
1322
- "name": "keyword.language.vhdl"
1355
+ "name": "keyword.control.loop.vhdl"
1323
1356
  },
1324
1357
  "4": {
1325
1358
  "name": "invalid.illegal.loop.keyword.required.vhdl"