abl-tmlanguage 1.3.7 → 1.3.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (39) hide show
  1. package/CHANGELOG.md +4 -0
  2. package/README.md +35 -4
  3. package/abl.tmLanguage.json +342 -366
  4. package/azure-pipelines.yml +2 -2
  5. package/index.js +24 -1
  6. package/package.json +1 -1
  7. package/spec/annotations/annotation.spec.js +8 -2
  8. package/spec/blocks/block-labels.spec.js +3 -3
  9. package/spec/blocks/block-options.spec.js +18 -0
  10. package/spec/comments/comment-in-block-statement.spec.js +1 -1
  11. package/spec/db-table-and-field/new-record.spec.js +137 -0
  12. package/spec/define/define-browse.spec.js +454 -0
  13. package/spec/define/define-button.spec.js +233 -0
  14. package/spec/define/define-query.spec.js +100 -0
  15. package/spec/define-temp-table/define-dataset.spec.js +4 -4
  16. package/spec/define-temp-table/define-temp-table.spec.js +148 -0
  17. package/spec/define-variable/define-like.spec.js +78 -0
  18. package/spec/do/do-blocks.spec.js +31 -0
  19. package/spec/function-call/misc-abl-functions.spec.js +22 -0
  20. package/spec/method-attribute-property-call/get-set-method-name.spec.js +12 -12
  21. package/spec/method-attribute-property-call/method-call.spec.js +93 -0
  22. package/spec/method-attribute-property-call/nested-property-call.spec.js +35 -0
  23. package/spec/method-definition/constructor.spec.js +4 -4
  24. package/spec/method-definition/method.spec.js +43 -6
  25. package/spec/misc-statements/array-for.spec.js +21 -0
  26. package/spec/misc-statements/class-in-var-name.spec.js +4 -4
  27. package/spec/misc-statements/guid.spec.js +97 -0
  28. package/spec/misc-statements/message-statement.spec.js +21 -0
  29. package/spec/misc-statements/system-handles.spec.js +108 -0
  30. package/spec/preprocesors/proparse-preprocessor.spec.js +66 -0
  31. package/spec/run-statement/run-statement.spec.js +128 -3
  32. package/spec/type-name/argument.spec.js +10 -11
  33. package/spec/type-name/cast.spec.js +8 -10
  34. package/spec/type-name/define-variable.spec.js +28 -146
  35. package/spec/type-name/get-class.spec.js +18 -18
  36. package/spec/type-name/new.spec.js +70 -10
  37. package/spec/type-name/parameter-as.spec.js +60 -15
  38. package/spec/type-name/type-name.spec.js +6 -7
  39. package/spec/type-name/using.spec.js +26 -13
@@ -40,7 +40,7 @@
40
40
  "include": "#string"
41
41
  },
42
42
  {
43
- "match": "([a-zA-Z][a-zA-Z0-9\\#\\$\\-\\_\\%\\&\\.]+)(?<!\\.)",
43
+ "match": "([[:alpha:]][\\w\\#\\$\\-\\%\\&\\.]+)(?<!\\.)",
44
44
  "comment": "A procedure name may contain a . but cannot end in one, unless the procedure name is in quotes",
45
45
  "captures": {
46
46
  "1": {
@@ -69,7 +69,8 @@
69
69
  }
70
70
  },
71
71
  "language-functions": {
72
- "match": "(?i)\\b(opsys|proversion)\\b",
72
+ "match": "(?i)\\b(opsys|proversion|guid|generate-uuid)\\b",
73
+ "comment": "These are functions that do not require parens when called.",
73
74
  "captures": {
74
75
  "1": {
75
76
  "name": "support.function.abl"
@@ -78,7 +79,7 @@
78
79
  },
79
80
  "function-definition": {
80
81
  "name": "meta.define.function.abl",
81
- "begin": "(?i)\\b(function)\\s+([a-z0-9][a-z0-9#$\\-_%&]+)\\b",
82
+ "begin": "(?i)\\b(function)\\s+([[:alnum:]][\\w#$\\-%&]+)\\b",
82
83
  "beginCaptures": {
83
84
  "1": {
84
85
  "name": "keyword.other.abl"
@@ -95,7 +96,7 @@
95
96
  },
96
97
  "patterns": [
97
98
  {
98
- "match": "(?i)\\b(map|to)\\s+(?!to\\s+)([a-z0-9][a-z0-9#$\\-_%&]+)\\b",
99
+ "match": "(?i)\\b(map|to)\\s+(?!to\\s+)([[:alpha:]][\\w#$\\-%&]+)\\b",
99
100
  "captures": {
100
101
  "1": {
101
102
  "name": "keyword.other.abl"
@@ -185,8 +186,16 @@
185
186
  }
186
187
  },
187
188
  {
188
- "comment": "The method name and parameters will only be correctly scoped if the method name and the opening brace/paren are on the same line.",
189
- "begin": "(?i)\\s*([a-z_]+[\\w\\-{}#$%&]*)\\s*(\\()\\s*",
189
+ "comment": "The last word on the line is assumed to me the method name. Legal ABL can have each word of the method definition on its own line, so this rule may not return the correct values",
190
+ "match": "(?i)\\b([[:alpha:]_]+[\\w\\-{}#$%&]*)\\b\\R",
191
+ "captures": {
192
+ "1": {
193
+ "name": "entity.name.function.abl"
194
+ }
195
+ }
196
+ },
197
+ {
198
+ "begin": "(?i)\\s*([[:alpha:]_]+[\\w\\-{}#$%&]*)?\\s*(\\()\\s*",
190
199
  "beginCaptures": {
191
200
  "1": {
192
201
  "name": "entity.name.function.abl"
@@ -207,6 +216,9 @@
207
216
  }
208
217
  ]
209
218
  },
219
+ {
220
+ "include": "#parameter-as"
221
+ },
210
222
  {
211
223
  "include": "#string",
212
224
  "comment": "For the return type"
@@ -224,19 +236,7 @@
224
236
  "comment": "For the return type"
225
237
  },
226
238
  {
227
- "include": "#type-name-generic-progress",
228
- "comment": "For the return type"
229
- },
230
- {
231
- "include": "#type-name-progress",
232
- "comment": "For the return type"
233
- },
234
- {
235
- "include": "#type-name-generic",
236
- "comment": "For the return type"
237
- },
238
- {
239
- "include": "#type-name",
239
+ "include": "#type-names",
240
240
  "comment": "For the return type"
241
241
  },
242
242
  {
@@ -272,16 +272,7 @@
272
272
  "include": "#primitive-type"
273
273
  },
274
274
  {
275
- "include": "#type-name-generic-progress"
276
- },
277
- {
278
- "include": "#type-name-progress"
279
- },
280
- {
281
- "include": "#type-name-generic"
282
- },
283
- {
284
- "include": "#type-name"
275
+ "include": "#type-names"
285
276
  }
286
277
  ]
287
278
  },
@@ -373,12 +364,6 @@
373
364
  {
374
365
  "include": "#constant"
375
366
  },
376
- {
377
- "include": "#type-name-generic-progress"
378
- },
379
- {
380
- "include": "#type-name-progress"
381
- },
382
367
  {
383
368
  "include": "#abl-system-handles"
384
369
  },
@@ -392,10 +377,7 @@
392
377
  "include": "#handle-methods"
393
378
  },
394
379
  {
395
- "include": "#type-name-generic"
396
- },
397
- {
398
- "include": "#type-name"
380
+ "include": "#type-names"
399
381
  },
400
382
  {
401
383
  "include": "#string"
@@ -560,6 +542,12 @@
560
542
  {
561
543
  "include": "#break-by"
562
544
  },
545
+ {
546
+ "include": "#new-record"
547
+ },
548
+ {
549
+ "include": "#type-reference"
550
+ },
563
551
  {
564
552
  "include": "#for-join"
565
553
  },
@@ -605,9 +593,6 @@
605
593
  {
606
594
  "include": "#property-accessor"
607
595
  },
608
- {
609
- "include": "#type-reference"
610
- },
611
596
  {
612
597
  "include": "#for-each-table"
613
598
  },
@@ -682,7 +667,7 @@
682
667
  }
683
668
  },
684
669
  "preprocessors": {
685
- "match": "(?i)(\\&[\\w-]*)|({\\&[\\w-]*})|(&window-system|&text-height|&line-number|&batch-mode|&file-name|&undefine|&sequence|&message|defined|&elseif|&scoped|&global|&opsys|&endif|&else|&scop|&then|&glob|&if)",
670
+ "match": "(?i)(&window-system|&text-height|&line-number|&batch-mode|&file-name|&undefine|&sequence|&message|defined|&elseif|&scoped|&global|&opsys|&endif|&else|&scop|&then|&glob|&if)|({\\&[\\w\\-\\s\\(\\)]+})|(\\&[\\w-])",
686
671
  "captures": {
687
672
  "1": {
688
673
  "name": "storage.type.function.abl"
@@ -694,12 +679,6 @@
694
679
  },
695
680
  "type-names": {
696
681
  "patterns": [
697
- {
698
- "include": "#type-name-generic-progress"
699
- },
700
- {
701
- "include": "#type-name-progress"
702
- },
703
682
  {
704
683
  "include": "#type-name-generic"
705
684
  },
@@ -746,7 +725,7 @@
746
725
  "comment": "Captures USING foo.bar.* .",
747
726
  "match": "(?i)\\s*((([\\w\\#\\$\\%]+|progress)(\\.[\\w\\#\\$\\%]+)*)\\.\\*)\\s*",
748
727
  "captures": {
749
- "1": {
728
+ "2": {
750
729
  "name": "entity.name.package.abl"
751
730
  }
752
731
  }
@@ -777,52 +756,30 @@
777
756
  }
778
757
  ]
779
758
  },
780
- "type-name-generic-progress": {
781
- "name": "entity.name.type.generic.abl",
782
- "begin": "(?i)\\s*((progress)(\\.[\\w\\#\\$\\%\\-]+)*)\\s*<",
759
+ "type-name-generic": {
760
+ "comment": "Scope names from https://www.sublimetext.com/docs/scope_naming.html",
761
+ "name": "meta.generic.abl",
762
+ "begin": "(?i)\\s*(([\\w\\#\\$\\%\\-]+)(\\.[\\w\\#\\$\\%\\-]+)*\\s*)\\s*(<)",
783
763
  "beginCaptures": {
784
764
  "1": {
785
765
  "name": "entity.name.type.abl"
766
+ },
767
+ "4": {
768
+ "name": "punctuation.definition.generic.begin.abl"
786
769
  }
787
770
  },
788
- "end": "\\>",
789
- "patterns": [
790
- {
791
- "include": "#generic-types"
792
- }
793
- ]
794
- },
795
- "type-name-generic": {
796
- "name": "entity.name.type.generic.abl",
797
- "begin": "(?i)\\s*(([\\w\\#\\$\\%\\-]+)(\\.[\\w\\#\\$\\%\\-]+)*\\s*)\\s*<",
798
- "beginCaptures": {
771
+ "end": "(>)",
772
+ "endCaptures": {
799
773
  "1": {
800
- "name": "entity.name.type.abl"
774
+ "name": "punctuation.definition.generic.end.abl"
801
775
  }
802
776
  },
803
- "end": "\\>",
804
- "patterns": [
805
- {
806
- "include": "#generic-types"
807
- }
808
- ]
809
- },
810
- "generic-types": {
811
777
  "patterns": [
812
778
  {
813
- "include": "#type-name-comma-progress"
814
- },
815
- {
816
- "include": "#type-name-comma"
817
- },
818
- {
819
- "include": "#type-name-generic-progress"
820
- },
821
- {
822
- "include": "#type-name-progress"
779
+ "include": "#type-name-generic"
823
780
  },
824
781
  {
825
- "include": "#type-name-generic"
782
+ "include": "#punctuation-comma"
826
783
  },
827
784
  {
828
785
  "include": "#type-name"
@@ -837,50 +794,6 @@
837
794
  }
838
795
  }
839
796
  },
840
- "type-name-comma": {
841
- "match": "(?i)\\s*(,*)\\s*(class)?\\s+(([\\w\\#\\$\\%]+)(\\.?[\\w\\#\\$\\%]*)*(?<!\\.))\\s*(,*)\\s*",
842
- "comment": "Capture group 3 is the <T> type name",
843
- "captures": {
844
- "1": {
845
- "name": "punctuation.separator.comma.abl"
846
- },
847
- "2": {
848
- "name": "keyword.other.abl"
849
- },
850
- "3": {
851
- "name": "entity.name.type.abl"
852
- },
853
- "6": {
854
- "name": "punctuation.separator.comma.abl"
855
- }
856
- }
857
- },
858
- "type-name-progress": {
859
- "match": "(?i)\\s*((progress\\.)([\\.\\w\\#\\$\\%]+)*)\\s*(?<!\\.)",
860
- "captures": {
861
- "1": {
862
- "name": "entity.name.type.abl"
863
- }
864
- }
865
- },
866
- "type-name-comma-progress": {
867
- "match": "(?i)\\s*(,*)\\s*(class)?\\s*((progress\\.|map|set)(\\.?[\\w\\#\\$\\%]*)*(?<!\\.))\\s*(,*)\\s*",
868
- "comment": "Capture group 3 is the <T> type name",
869
- "captures": {
870
- "1": {
871
- "name": "punctuation.separator.comma.abl"
872
- },
873
- "2": {
874
- "name": "keyword.other.abl"
875
- },
876
- "3": {
877
- "name": "entity.name.type.abl"
878
- },
879
- "6": {
880
- "name": "punctuation.separator.comma.abl"
881
- }
882
- }
883
- },
884
797
  "define-class": {
885
798
  "name": "meta.define.class.abl",
886
799
  "begin": "(?i)\\b(?<![\\#\\$\\-\\_\\%\\&])(class)\\b(?![\\#\\$\\-\\_\\%\\&])",
@@ -905,22 +818,7 @@
905
818
  }
906
819
  },
907
820
  {
908
- "include": "#type-name-generic-progress"
909
- },
910
- {
911
- "include": "#type-name-generic"
912
- },
913
- {
914
- "include": "#type-name-comma-progress"
915
- },
916
- {
917
- "include": "#type-name-progress"
918
- },
919
- {
920
- "include": "#type-name-comma"
921
- },
922
- {
923
- "include": "#type-name"
821
+ "include": "#type-names"
924
822
  },
925
823
  {
926
824
  "include": "#punctuation-comma"
@@ -959,9 +857,6 @@
959
857
  {
960
858
  "include": "#type-names"
961
859
  },
962
- {
963
- "include": "#type-name-comma"
964
- },
965
860
  {
966
861
  "include": "#punctuation-comma"
967
862
  }
@@ -986,7 +881,7 @@
986
881
  },
987
882
  "patterns": [
988
883
  {
989
- "include": "#type-name-comma"
884
+ "include": "#type-names"
990
885
  }
991
886
  ]
992
887
  },
@@ -1061,22 +956,7 @@
1061
956
  "end": "(?=\\()",
1062
957
  "patterns": [
1063
958
  {
1064
- "include": "#type-name-generic-progress"
1065
- },
1066
- {
1067
- "include": "#type-name-generic"
1068
- },
1069
- {
1070
- "include": "#type-name-comma-progress"
1071
- },
1072
- {
1073
- "include": "#type-name-progress"
1074
- },
1075
- {
1076
- "include": "#type-name-comma"
1077
- },
1078
- {
1079
- "include": "#type-name"
959
+ "include": "#type-names"
1080
960
  },
1081
961
  {
1082
962
  "include": "#string"
@@ -1212,7 +1092,7 @@
1212
1092
  },
1213
1093
  "for-join": {
1214
1094
  "comment": "Captures something like ', salesrep where' or 'salesrep where', when the latter is at the beginning of a line. 'OF' phrases handled by of-phrase",
1215
- "match": "(?i)(?<=,|^)\\s*([\\w\\-#$%]+(\\.[\\w\\-#$%]+)?)\\s+(?=where|no-lock|exclusive-lock|exclusive-loc|exclusive-lo|exclusive-l|share-lock|share-loc|share-lo|share-|share|tenant-where|use-index|table-scan|using|no-prefetch|left|outer-join|break|by|transaction)",
1095
+ "match": "(?i)(?<=,|^)\\s*([\\w\\-#$%]+(\\.[\\w\\-#$%]+)?)\\s+(?=where|no-lock|exclusive-lock|exclusive-loc|exclusive-lo|exclusive-l|share-lock|share-loc|share-lo|share-|share|tenant-where|use-index|table-scan|using|no-prefetch|left|outer-join|break|by|transaction)\\s*",
1216
1096
  "captures": {
1217
1097
  "1": {
1218
1098
  "name": "storage.data.table.abl"
@@ -1354,13 +1234,10 @@
1354
1234
  },
1355
1235
  "type-argument-function": {
1356
1236
  "name": "meta.function-call.abl",
1357
- "begin": "(?i)\\s*(cast|type-of)\\s*(\\()",
1237
+ "begin": "(?i)\\s*(cast|type-of)\\s*(?=\\()",
1358
1238
  "beginCaptures": {
1359
1239
  "1": {
1360
1240
  "name": "support.function.abl"
1361
- },
1362
- "2": {
1363
- "name": "meta.brace.round.js"
1364
1241
  }
1365
1242
  },
1366
1243
  "end": "(?<=\\))",
@@ -1371,83 +1248,39 @@
1371
1248
  },
1372
1249
  "patterns": [
1373
1250
  {
1374
- "comment": "This can only be table.field, never db.table.field, since only TT's can hold objects",
1375
- "match": "\\s*(([\\w\\-#$%]+)\\.([\\w\\-#$%]+))\\s*(,)",
1376
- "captures": {
1377
- "1": {
1378
- "name": "storage.data.table.abl"
1379
- },
1380
- "4": {
1381
- "name": "punctuation.separator.comma.abl"
1382
- }
1383
- }
1384
- },
1385
- {
1386
- "match": "\\s*([a-zA-Z][a-zA-Z0-9\\#\\$\\-\\_\\%\\&]*)\\s*((,)|(?=:))",
1387
- "captures": {
1251
+ "begin": "(?<=\\()",
1252
+ "end": "(,)",
1253
+ "endCaptures": {
1388
1254
  "1": {
1389
- "name": "variable.other.abl"
1390
- },
1391
- "3": {
1392
1255
  "name": "punctuation.separator.comma.abl"
1393
1256
  }
1394
- }
1395
- },
1396
- {
1397
- "match": "\\s*:([\\w-]+)\\s*(,)",
1398
- "captures": {
1399
- "1": {
1400
- "name": "entity.name.function.abl"
1257
+ },
1258
+ "patterns": [
1259
+ {
1260
+ "include": "#function-arguments-no-parens"
1401
1261
  },
1402
- "2": {
1403
- "name": "punctuation.separator.comma.abl"
1262
+ {
1263
+ "include": "#parens"
1404
1264
  }
1405
- }
1406
- },
1407
- {
1408
- "include": "#type-argument-function"
1409
- },
1410
- {
1411
- "include": "#expression"
1412
- },
1413
- {
1414
- "include": "#property-call"
1415
- },
1416
- {
1417
- "include": "#static-object-property-call"
1418
- },
1419
- {
1420
- "include": "#doublequotedstring"
1421
- },
1422
- {
1423
- "include": "#singlequotedstring"
1424
- },
1425
- {
1426
- "include": "#translation-attribute"
1427
- },
1428
- {
1429
- "include": "#type-name-generic-progress"
1430
- },
1431
- {
1432
- "include": "#type-name-generic"
1433
- },
1434
- {
1435
- "include": "#type-name-comma-progress"
1265
+ ]
1436
1266
  },
1437
1267
  {
1438
- "include": "#type-name-progress"
1268
+ "include": "#type-names"
1439
1269
  },
1440
1270
  {
1441
- "include": "#type-name-comma"
1271
+ "include": "#comment"
1442
1272
  },
1443
1273
  {
1444
- "include": "#type-name"
1274
+ "include": "#string"
1445
1275
  },
1446
1276
  {
1447
1277
  "include": "#parens"
1448
1278
  },
1449
1279
  {
1450
1280
  "include": "#punctuation-comma"
1281
+ },
1282
+ {
1283
+ "include": "#preprocessors"
1451
1284
  }
1452
1285
  ]
1453
1286
  },
@@ -1504,6 +1337,9 @@
1504
1337
  {
1505
1338
  "include": "#property-call"
1506
1339
  },
1340
+ {
1341
+ "include": "#new-record"
1342
+ },
1507
1343
  {
1508
1344
  "include": "#type-reference"
1509
1345
  },
@@ -1609,7 +1445,7 @@
1609
1445
  "name": "keyword.other.abl"
1610
1446
  }
1611
1447
  },
1612
- "end": "(?=\\s|\\)|\\.)",
1448
+ "end": "(?=\\s|\\)|\\.|,)",
1613
1449
  "patterns": [
1614
1450
  {
1615
1451
  "match": "(?i)\\s*(class)\\s*",
@@ -1626,13 +1462,7 @@
1626
1462
  "include": "#dll-type"
1627
1463
  },
1628
1464
  {
1629
- "include": "#type-name-progress"
1630
- },
1631
- {
1632
- "include": "#type-name-generic"
1633
- },
1634
- {
1635
- "include": "#type-name"
1465
+ "include": "#type-names"
1636
1466
  },
1637
1467
  {
1638
1468
  "include": "#parens"
@@ -1649,7 +1479,7 @@
1649
1479
  ]
1650
1480
  },
1651
1481
  "define-variable-name": {
1652
- "match": "(?i)(var|vari|varia|variab|variabl|variable)\\s+([a-z][a-z0-9#$-_%&])+\\s*",
1482
+ "match": "(?i)(variable|variabl|variab|varia|vari|var)\\s+([[:alpha:]][\\w#$-%&])+\\s*",
1653
1483
  "captures": {
1654
1484
  "1": {
1655
1485
  "name": "keyword.other.abl"
@@ -1670,6 +1500,14 @@
1670
1500
  }
1671
1501
  }
1672
1502
  },
1503
+ "variable-like": {
1504
+ "match": "(?i)\\s*([\\w\\-]+)\\s+(?=like)\\s*",
1505
+ "captures": {
1506
+ "1": {
1507
+ "name": "variable.other.abl"
1508
+ }
1509
+ }
1510
+ },
1673
1511
  "property-as": {
1674
1512
  "match": "(?i)\\s*([\\w\\-]+)\\s+(as)\\s*",
1675
1513
  "captures": {
@@ -1702,7 +1540,7 @@
1702
1540
  },
1703
1541
  "annotation-simple": {
1704
1542
  "name": "meta.declaration.annotation.abl",
1705
- "match": "(?i)(^|\\s*)(\\@[a-z][a-z0-9#\\$-_%&]*)\\s*(?=\\.)",
1543
+ "match": "(^|\\s*)(\\@[[:alpha:]][\\w#\\$-%&]*)\\s*(?=\\.)",
1706
1544
  "captures": {
1707
1545
  "2": {
1708
1546
  "name": "entity.name.tag.abl"
@@ -1711,7 +1549,7 @@
1711
1549
  },
1712
1550
  "annotation-attributes": {
1713
1551
  "name": "meta.declaration.annotation.abl",
1714
- "begin": "(?i)(^|\\s+)(\\@[a-z][a-z0-9#\\$-_%&]*)\\s*(?=\\()",
1552
+ "begin": "(^|\\s+)(\\@[[:alpha:]][\\w#\\$-%&]*)\\s*(?=\\()",
1715
1553
  "beginCaptures": {
1716
1554
  "2": {
1717
1555
  "name": "entity.name.tag.abl"
@@ -1723,7 +1561,7 @@
1723
1561
  "include": "#parens"
1724
1562
  },
1725
1563
  {
1726
- "match": "(?i)\\s*([a-z][a-z0-9#\\$-_%&]+)(?=[\\=\\s$])",
1564
+ "match": "\\s*([[:alpha:]][\\w#\\$-%&]+)(?=[\\=\\s$])",
1727
1565
  "captures": {
1728
1566
  "1": {
1729
1567
  "name": "entity.other.attribute-name.abl"
@@ -1779,9 +1617,21 @@
1779
1617
  {
1780
1618
  "include": "#define-parameter"
1781
1619
  },
1620
+ {
1621
+ "include": "#define-button"
1622
+ },
1782
1623
  {
1783
1624
  "include": "#define-dataset"
1784
1625
  },
1626
+ {
1627
+ "include": "#define-query"
1628
+ },
1629
+ {
1630
+ "include": "#define-browse"
1631
+ },
1632
+ {
1633
+ "include": "#fields-except-list"
1634
+ },
1785
1635
  {
1786
1636
  "include": "#define-event"
1787
1637
  },
@@ -1857,9 +1707,6 @@
1857
1707
  {
1858
1708
  "include": "#dll-type"
1859
1709
  },
1860
- {
1861
- "include": "#type-name-progress"
1862
- },
1863
1710
  {
1864
1711
  "include": "#abl-system-handles"
1865
1712
  },
@@ -1888,10 +1735,7 @@
1888
1735
  "include": "#label-variable"
1889
1736
  },
1890
1737
  {
1891
- "include": "#type-name-generic"
1892
- },
1893
- {
1894
- "include": "#type-name"
1738
+ "include": "#type-names"
1895
1739
  }
1896
1740
  ]
1897
1741
  },
@@ -1906,6 +1750,30 @@
1906
1750
  }
1907
1751
  }
1908
1752
  },
1753
+ "define-query": {
1754
+ "begin": "(?i)\\b(query)\\s+([[:alpha:]][\\w\\#\\$\\-\\%\\&]*)\\s*",
1755
+ "beginCaptures": {
1756
+ "1": {
1757
+ "name": "keyword.other.abl"
1758
+ },
1759
+ "2": {
1760
+ "name": "variable.other.abl"
1761
+ }
1762
+ },
1763
+ "end": "(?i)\\b(?=for|display|share-lock|no-lock|exclusive-lock)\\b"
1764
+ },
1765
+ "define-browse": {
1766
+ "begin": "(?i)\\b(browse)\\s+([[:alpha:]][\\w\\#\\$\\-\\%\\&]*)\\s*",
1767
+ "beginCaptures": {
1768
+ "1": {
1769
+ "name": "keyword.other.abl"
1770
+ },
1771
+ "2": {
1772
+ "name": "variable.other.abl"
1773
+ }
1774
+ },
1775
+ "end": "(?i)\\b(?=query)\\b"
1776
+ },
1909
1777
  "define-parameter": {
1910
1778
  "begin": "(?i)\\b(parameter|paramete|paramet|parame|param)\\b",
1911
1779
  "beginCaptures": {
@@ -1931,7 +1799,7 @@
1931
1799
  }
1932
1800
  },
1933
1801
  {
1934
- "match": "(?i)\\b(table-handle|dataset-handle)\\s+([a-zA-Z][a-zA-Z0-9\\#\\$\\-\\_\\%\\&]*)\\b",
1802
+ "match": "(?i)\\b(table-handle|dataset-handle)\\s+([[:alpha:]][\\w\\#\\$\\-\\%\\&]*)\\b",
1935
1803
  "captures": {
1936
1804
  "1": {
1937
1805
  "name": "keyword.other.abl"
@@ -2000,14 +1868,6 @@
2000
1868
  {
2001
1869
  "include": "#numeric"
2002
1870
  },
2003
- {
2004
- "comment": "needs to be before the #keywords include",
2005
- "include": "#type-name-generic-progress"
2006
- },
2007
- {
2008
- "comment": "needs to be before the #keywords include",
2009
- "include": "#type-name-progress"
2010
- },
2011
1871
  {
2012
1872
  "include": "#keywords"
2013
1873
  },
@@ -2015,10 +1875,7 @@
2015
1875
  "include": "#string"
2016
1876
  },
2017
1877
  {
2018
- "include": "#type-name-generic"
2019
- },
2020
- {
2021
- "include": "#type-name"
1878
+ "include": "#type-names"
2022
1879
  }
2023
1880
  ]
2024
1881
  },
@@ -2100,7 +1957,7 @@
2100
1957
  ]
2101
1958
  },
2102
1959
  "define-index": {
2103
- "begin": "(?i)\\s*(index)\\s+([a-zA-Z][a-zA-Z0-9\\#\\$\\-\\_\\%\\&]*)",
1960
+ "begin": "(?i)\\s*(index)\\s+([[:alpha:]][\\w\\#\\$\\-\\%\\&]*)",
2104
1961
  "beginCaptures": {
2105
1962
  "1": {
2106
1963
  "name": "keyword.other.abl"
@@ -2120,7 +1977,7 @@
2120
1977
  }
2121
1978
  },
2122
1979
  {
2123
- "match": "\\b([a-zA-Z][a-zA-Z0-9\\#\\$\\-\\_\\%\\&]*)\\b",
1980
+ "match": "\\b([[:alpha:]][\\w\\#\\$\\-\\%\\&]*)\\b",
2124
1981
  "captures": {
2125
1982
  "1": {
2126
1983
  "name": "storage.data.table.abl"
@@ -2130,7 +1987,7 @@
2130
1987
  ]
2131
1988
  },
2132
1989
  "define-dataset": {
2133
- "begin": "(?i)\\b(dataset)\\s+([a-zA-Z][a-zA-Z0-9\\#\\$\\-\\_\\%\\&]*)\\b",
1990
+ "begin": "(?i)\\b(dataset)\\s+([[:alpha:]][\\w\\#\\$\\-\\%\\&]*)\\b",
2134
1991
  "beginCaptures": {
2135
1992
  "1": {
2136
1993
  "name": "keyword.other.abl"
@@ -2149,7 +2006,7 @@
2149
2006
  "include": "#punctuation-comma"
2150
2007
  },
2151
2008
  {
2152
- "match": "(?i)\\b(data-relation|parent-id-relation)\\s*([a-z][a-z0-9#$\\-\\_\\%\\&]+)",
2009
+ "match": "(?i)\\b(data-relation|parent-id-relation)\\s*([[:alpha:]][\\w#$\\-\\%\\&]+)",
2153
2010
  "comment": "Manually capture these so that we can name the relation name properly",
2154
2011
  "captures": {
2155
2012
  "1": {
@@ -2187,7 +2044,7 @@
2187
2044
  ]
2188
2045
  },
2189
2046
  "define-event": {
2190
- "match": "(?i)\\b(event)\\s+([a-zA-Z][a-zA-Z0-9\\#\\$\\-\\_\\%\\&]*)\\b",
2047
+ "match": "(?i)\\b(event)\\s+([[:alpha:]][\\w\\#\\$\\-\\%\\&]*)\\b",
2191
2048
  "captures": {
2192
2049
  "1": {
2193
2050
  "name": "keyword.other.abl"
@@ -2197,8 +2054,60 @@
2197
2054
  }
2198
2055
  }
2199
2056
  },
2057
+ "define-button": {
2058
+ "begin": "(?i)\\s*(button)\\s+([[:alpha:]][\\w#$\\-%&]*)",
2059
+ "beginCaptures": {
2060
+ "1": {
2061
+ "name": "keyword.other.abl"
2062
+ },
2063
+ "2": {
2064
+ "name": "variable.other.abl"
2065
+ }
2066
+ },
2067
+ "end": "(?=\\.)",
2068
+ "patterns": [
2069
+ {
2070
+ "include": "#comment"
2071
+ },
2072
+ {
2073
+ "include": "#string"
2074
+ },
2075
+ {
2076
+ "include": "#from-x-and-y"
2077
+ },
2078
+ {
2079
+ "include": "#numeric"
2080
+ },
2081
+ {
2082
+ "include": "#keywords"
2083
+ },
2084
+ {
2085
+ "include": "#expression"
2086
+ }
2087
+ ]
2088
+ },
2089
+ "from-x-and-y": {
2090
+ "match": "(?i)\\b(from)\\s+(X)\\s+((0(x)[[[:xdigit:]]]+)|(\\-?[[[:digit:]]]+(\\.[[[:digit:]]]+)?))\\s+(y)\\s+((0(x)[[[:xdigit:]]]+)|(\\-?[[[:digit:]]]+(\\.[[[:digit:]]]+)?))\\s+ ",
2091
+ "captures": {
2092
+ "1": {
2093
+ "name": "keyword.other.abl"
2094
+ },
2095
+ "2": {
2096
+ "name": "keyword.other.abl"
2097
+ },
2098
+ "6": {
2099
+ "name": "constant.numeric.source.abl"
2100
+ },
2101
+ "8": {
2102
+ "name": "keyword.other.abl"
2103
+ },
2104
+ "12": {
2105
+ "name": "constant.numeric.source.abl"
2106
+ }
2107
+ }
2108
+ },
2200
2109
  "define-buffer": {
2201
- "begin": "(?i)\\s*(buffer)\\s*",
2110
+ "begin": "(?i)\\s*(buffer)\\b(?![\\#\\$\\-\\_\\%\\&])",
2202
2111
  "beginCaptures": {
2203
2112
  "1": {
2204
2113
  "name": "keyword.other.abl"
@@ -2224,7 +2133,7 @@
2224
2133
  ]
2225
2134
  },
2226
2135
  "define-frame": {
2227
- "match": "(?i)\\s*(frame)\\s*([a-z][a-z0-9#$\\-_%&]*)",
2136
+ "match": "(?i)\\s*(frame)\\s*([[:alpha:]][\\w#$\\-%&]*)",
2228
2137
  "captures": {
2229
2138
  "1": {
2230
2139
  "name": "keyword.other.abl"
@@ -2261,28 +2170,20 @@
2261
2170
  "include": "#variable-as"
2262
2171
  },
2263
2172
  {
2264
- "include": "#primitive-type"
2173
+ "include": "#variable-like"
2265
2174
  },
2266
2175
  {
2267
- "comment": "needs to be before the #keywords include",
2268
- "include": "#type-names"
2176
+ "include": "#primitive-type"
2269
2177
  },
2270
2178
  {
2271
- "comment": "needs to be before the #keywords include",
2272
- "include": "#type-name-generic-progress"
2179
+ "include": "#define-like"
2273
2180
  },
2274
2181
  {
2275
2182
  "comment": "needs to be before the #keywords include",
2276
- "include": "#type-name-progress"
2183
+ "include": "#type-names"
2277
2184
  },
2278
2185
  {
2279
2186
  "include": "#string"
2280
- },
2281
- {
2282
- "include": "#type-name-generic"
2283
- },
2284
- {
2285
- "include": "#type-name"
2286
2187
  }
2287
2188
  ]
2288
2189
  },
@@ -2310,7 +2211,7 @@
2310
2211
  }
2311
2212
  },
2312
2213
  "define-table": {
2313
- "match": "(?i)(?<=\\b)(temp-table|like|before-table)\\s*([\\w\\-#$%]+)\\s*",
2214
+ "match": "(?i)(?<=\\b)(temp-table|before-table)\\s*([\\w\\-#$%]+)\\s*",
2314
2215
  "captures": {
2315
2216
  "1": {
2316
2217
  "name": "keyword.other.abl"
@@ -2407,7 +2308,7 @@
2407
2308
  ]
2408
2309
  },
2409
2310
  "use-index": {
2410
- "match": "(?i)\\b(use-index)\\s+([a-z][a-z0-9\\-\\_\\$]*)\\b",
2311
+ "match": "(?i)\\b(use-index)\\s+([[:alpha:]][\\w\\-\\$]*)\\b",
2411
2312
  "captures": {
2412
2313
  "1": {
2413
2314
  "name": "keyword.other.abl"
@@ -2451,7 +2352,7 @@
2451
2352
  }
2452
2353
  },
2453
2354
  "define-like": {
2454
- "match": "(?i)\\s*(like|like-sequential)\\s+([\\w\\-#$%]+)\\s*",
2355
+ "match": "(?i)\\s*(like|like-sequential)\\s+(([\\w\\-#$%]+\\.)?([\\w\\-#$%]+\\.)?([\\w\\-#$%]+))",
2455
2356
  "captures": {
2456
2357
  "1": {
2457
2358
  "name": "keyword.other.abl"
@@ -2462,11 +2363,11 @@
2462
2363
  }
2463
2364
  },
2464
2365
  "block-label": {
2465
- "match": "(?i)^\\s*(?!(transaction|no-lock|exclusive-lock|exclusive-loc|exclusive-lo|exclusive-l|share-lock|share-loc|share-lo|share-|share):)([a-z][a-z0-9\\-\\$\\#]*)(:)\\s",
2466
- "comment": "A colon followed by a space is only legal is for block labels. Block labels must also be at the beginning of a line",
2366
+ "match": "(?i)^\\s*(?!(transaction|no-lock|exclusive-lock|exclusive-loc|exclusive-lo|exclusive-l|share-lock|share-loc|share-lo|share-|share):)([\\w\\-\\$\\#]+)(:)\\s",
2367
+ "comment": "A colon followed by a space is only legal is for block labels. Block labels must also be at the beginning of a line. Scope name is per https://www.sublimetext.com/docs/scope_naming.html",
2467
2368
  "captures": {
2468
2369
  "2": {
2469
- "name": "meta.block.label.abl"
2370
+ "name": "entity.name.label.abl"
2470
2371
  },
2471
2372
  "3": {
2472
2373
  "name": "punctuation.terminator.abl"
@@ -2521,6 +2422,9 @@
2521
2422
  {
2522
2423
  "include": "#type-member-call"
2523
2424
  },
2425
+ {
2426
+ "include": "#language-functions"
2427
+ },
2524
2428
  {
2525
2429
  "include": "#abl-functions"
2526
2430
  },
@@ -2533,6 +2437,9 @@
2533
2437
  {
2534
2438
  "include": "#branch-options"
2535
2439
  },
2440
+ {
2441
+ "include":"#keywords"
2442
+ },
2536
2443
  {
2537
2444
  "include": "#expression"
2538
2445
  },
@@ -2570,6 +2477,9 @@
2570
2477
  {
2571
2478
  "include": "#abl-functions"
2572
2479
  },
2480
+ {
2481
+ "include": "#db-dot-table-dot-field"
2482
+ },
2573
2483
  {
2574
2484
  "include": "#expression"
2575
2485
  }
@@ -2609,7 +2519,7 @@
2609
2519
  },
2610
2520
  {
2611
2521
  "comment": "Captures the variable before the : or , of Subscribe( [ subscriber-handle , ] handler-procedure ) or Subscribe ( [ subscriber : ] handler-method )",
2612
- "match": "\\s*([a-zA-Z][a-zA-Z0-9\\#\\$\\-\\_\\%\\&]*)\\s*((,)|(:))\\s*",
2522
+ "match": "\\s*([[:alpha:]][\\w\\#\\$\\-\\%\\&]*)\\s*((,)|(:))\\s*",
2613
2523
  "captures": {
2614
2524
  "1": {
2615
2525
  "name": "variable.other.abl"
@@ -2624,7 +2534,7 @@
2624
2534
  },
2625
2535
  {
2626
2536
  "comment": "Subscribe( handler-procedure or handler-method)",
2627
- "match": "\\s*([a-zA-Z][a-zA-Z0-9\\#\\$\\-\\_\\%\\&]*)\\s*",
2537
+ "match": "\\s*([[:alpha:]][\\w\\#\\$\\-\\%\\&]*)\\s*",
2628
2538
  "captures": {
2629
2539
  "1": {
2630
2540
  "name": "entity.name.function.abl"
@@ -2713,7 +2623,7 @@
2713
2623
  }
2714
2624
  },
2715
2625
  "on-error-endkey-stop": {
2716
- "match": "(?i)\\s*(on)\\s+(endkey|error|stop|quit)\\s+(undo)\\s*(?!leave|next|retry|return|throw)([a-z0-9\\-\\_\\$]*)?\\s*",
2626
+ "match": "(?i)\\s*(on)\\s+(endkey|error|stop|quit)\\s+(undo)\\s*(?!leave|next|retry|return|throw)([\\w\\-\\$]*)?\\s*",
2717
2627
  "captures": {
2718
2628
  "1": {
2719
2629
  "name": "keyword.other.abl"
@@ -2725,30 +2635,30 @@
2725
2635
  "name": "keyword.other.abl"
2726
2636
  },
2727
2637
  "4": {
2728
- "name": "meta.block.label.abl"
2638
+ "name": "entity.name.label.abl"
2729
2639
  }
2730
2640
  }
2731
2641
  },
2732
2642
  "block-undo-leave-next-retry": {
2733
2643
  "comment": "Covers NEXT, LEAVE, RETRY and UNDO with block labels that are not preceded by UNDO, ",
2734
- "match": "(?i)\\s*(?<!,)\\s*(leave|next|retry|undo)\\s*(?!on)([a-z0-9\\-\\_\\$]*)?\\s*",
2644
+ "match": "(?i)\\s*(?<!,)\\s*(leave|next|retry|undo)\\s*(?!on)([\\w\\-\\$]*)?\\s*",
2735
2645
  "captures": {
2736
2646
  "1": {
2737
2647
  "name": "keyword.other.abl"
2738
2648
  },
2739
2649
  "2": {
2740
- "name": "meta.block.label.abl"
2650
+ "name": "entity.name.label.abl"
2741
2651
  }
2742
2652
  }
2743
2653
  },
2744
2654
  "branch-leave-next-retry-throw": {
2745
- "match": "(?i)\\s*(?<=,)\\s*(leave|next|retry|throw)\\s*(?!on)([a-z0-9\\-\\_\\$]*)?\\s*",
2655
+ "match": "(?i)\\s*(?<=,)\\s*(leave|next|retry|throw)\\s*(?!on)([\\w\\-\\$]*)?\\s*",
2746
2656
  "captures": {
2747
2657
  "1": {
2748
2658
  "name": "keyword.other.abl"
2749
2659
  },
2750
2660
  "2": {
2751
- "name": "meta.block.label.abl"
2661
+ "name": "entity.name.label.abl"
2752
2662
  }
2753
2663
  }
2754
2664
  },
@@ -2856,13 +2766,13 @@
2856
2766
  },
2857
2767
  "undo-statement": {
2858
2768
  "comment": "https://docs.progress.com/bundle/abl-reference/page/UNDO-statement.html",
2859
- "begin": "(?i)\\s*(undo)\\s*([a-z0-9\\-\\_\\$]*)?\\s*(,)",
2769
+ "begin": "(?i)\\s*(undo)\\s*([\\w\\-\\$]*)?\\s*(,)",
2860
2770
  "beginCaptures": {
2861
2771
  "1": {
2862
2772
  "name": "keyword.other.abl"
2863
2773
  },
2864
2774
  "2": {
2865
- "name": "meta.block.label.abl"
2775
+ "name": "entity.name.label.abl"
2866
2776
  },
2867
2777
  "3": {
2868
2778
  "name": "punctuation.separator.comma.abl"
@@ -2874,13 +2784,13 @@
2874
2784
  "include": "#string"
2875
2785
  },
2876
2786
  {
2877
- "match": "(?i)\\s*(leave|next|retry)\\s([a-z0-9\\-\\_\\$]*)?",
2787
+ "match": "(?i)\\s*(leave|next|retry)\\s([\\w\\-\\$]*)?",
2878
2788
  "captures": {
2879
2789
  "1": {
2880
2790
  "name": "keyword.other.abl"
2881
2791
  },
2882
2792
  "2": {
2883
- "name": "meta.block.label.abl"
2793
+ "name": "entity.name.label.abl"
2884
2794
  }
2885
2795
  }
2886
2796
  },
@@ -2956,9 +2866,6 @@
2956
2866
  },
2957
2867
  {
2958
2868
  "include": "#expression"
2959
- },
2960
- {
2961
- "include": "X-#statements"
2962
2869
  }
2963
2870
  ]
2964
2871
  },
@@ -3007,6 +2914,12 @@
3007
2914
  {
3008
2915
  "include": "#function-arguments"
3009
2916
  },
2917
+ {
2918
+ "include": "#property-call"
2919
+ },
2920
+ {
2921
+ "include": "#static-object-property-call"
2922
+ },
3010
2923
  {
3011
2924
  "include": "#db-dot-table-dot-field"
3012
2925
  },
@@ -3019,9 +2932,6 @@
3019
2932
  {
3020
2933
  "include": "#code-block"
3021
2934
  },
3022
- {
3023
- "include": "#property-call"
3024
- },
3025
2935
  {
3026
2936
  "include": "#handle-attributes"
3027
2937
  },
@@ -3054,7 +2964,15 @@
3054
2964
  "include": "#parens"
3055
2965
  },
3056
2966
  {
3057
- "match": "(?i)\\s*(input-output|input-outpu|input-outp|input-out|input-ou|input-o|output|input|table-handle|dataset-handle|APPEND|BY-VALUE|BY-REFERENCE|BIND)\\s*",
2967
+ "include": "#function-arguments-no-parens"
2968
+ }
2969
+ ]
2970
+ },
2971
+ "function-arguments-no-parens": {
2972
+ "name": "meta.function.arguments.abl",
2973
+ "patterns": [
2974
+ {
2975
+ "match": "(?i)\\s*(input-output|input-outpu|input-outp|input-out|input-ou|input-o|output|input|table-handle|dataset-handle|APPEND|BY-VALUE|BY-REFERENCE|BIND)\\b(?![\\#\\$\\-\\_\\%\\&])",
3058
2976
  "captures": {
3059
2977
  "1": {
3060
2978
  "name": "keyword.other.abl"
@@ -3098,6 +3016,9 @@
3098
3016
  {
3099
3017
  "include": "#can-find"
3100
3018
  },
3019
+ {
3020
+ "include": "#language-functions"
3021
+ },
3101
3022
  {
3102
3023
  "include": "#abl-functions"
3103
3024
  },
@@ -3108,7 +3029,7 @@
3108
3029
  "include": "#handle-methods"
3109
3030
  },
3110
3031
  {
3111
- "include": "#unqualified-method-call"
3032
+ "include": "#type-member-call"
3112
3033
  },
3113
3034
  {
3114
3035
  "include": "#expression"
@@ -3116,15 +3037,9 @@
3116
3037
  {
3117
3038
  "include": "#comment"
3118
3039
  },
3119
- {
3120
- "include": "#property-call"
3121
- },
3122
3040
  {
3123
3041
  "include": "#punctuation-comma"
3124
3042
  },
3125
- {
3126
- "include": "#static-object-property-call"
3127
- },
3128
3043
  {
3129
3044
  "include": "#preprocessors"
3130
3045
  }
@@ -3146,7 +3061,7 @@
3146
3061
  }
3147
3062
  },
3148
3063
  "unqualified-method-call": {
3149
- "match": "\\b([a-zA-Z][a-zA-Z0-9\\#\\$\\-\\_\\%\\&]*)\\b(?=\\()",
3064
+ "match": "\\b([[:alpha:]][\\w\\#\\$\\-\\%\\&]*)\\b(?=\\()",
3150
3065
  "captures": {
3151
3066
  "1": {
3152
3067
  "name": "entity.name.function.abl"
@@ -3154,7 +3069,7 @@
3154
3069
  }
3155
3070
  },
3156
3071
  "property-call": {
3157
- "match": "(:)([a-zA-Z][a-zA-Z0-9\\#\\$\\-\\_\\%\\&]*)\\b",
3072
+ "match": "(:)([[:alpha:]][\\w\\#\\$\\-\\%\\&]*)\\b",
3158
3073
  "captures": {
3159
3074
  "1": {
3160
3075
  "name": "punctuation.separator.colon.abl"
@@ -3179,11 +3094,11 @@
3179
3094
  },
3180
3095
  "variable-name": {
3181
3096
  "comment": "1 to 128 characters; can consist of any combination of letters (a-z or A-Z), numbers (0-9), and these special characters: #$-_%& Names must begin with a letter (from https://docs.progress.com/bundle/openedge-abl-manage-applications/page/Name-limits.html)",
3182
- "match": "(?<=^|\\s|\\[|\\(|,)([a-zA-Z][a-zA-Z0-9\\#\\$\\-\\_\\%\\&]*)(?=\\.\\s|\\.$|,|:|\\s|\\)|\\]|\\[|$)",
3097
+ "match": "(?<=^|\\s|\\[|\\(|,)([[:alpha:]][\\w\\#\\$\\-\\%\\&]*)(?=\\.\\s|\\.$|,|:|\\s|\\)|\\]|\\[|$)",
3183
3098
  "name": "variable.other.abl"
3184
3099
  },
3185
3100
  "extent": {
3186
- "match": "(?i)\\s*(extent)\\s*((0x[0-9a-f]+)|([0-9]+)?)",
3101
+ "match": "(?i)\\s*(extent)\\s*((0x)?[[:xdigit:]]+)?",
3187
3102
  "captures": {
3188
3103
  "1": {
3189
3104
  "name": "keyword.other.abl"
@@ -3194,7 +3109,7 @@
3194
3109
  }
3195
3110
  },
3196
3111
  "decimals": {
3197
- "match": "(?i)\\s*(decimals)\\s((0x[0-9a-f]+)|([0-9]+)?)",
3112
+ "match": "(?i)\\s*(decimals)\\s((0x)?[[:xdigit:]]+)?",
3198
3113
  "captures": {
3199
3114
  "1": {
3200
3115
  "name": "keyword.other.abl"
@@ -3205,7 +3120,7 @@
3205
3120
  }
3206
3121
  },
3207
3122
  "ordinal": {
3208
- "match": "(?i)\\s*(ordinal)\\s((0x[0-9a-f]+)|([0-9]+)?)",
3123
+ "match": "(?i)\\s*(ordinal)\\s((0x)?[[:xdigit:]]+)?",
3209
3124
  "captures": {
3210
3125
  "1": {
3211
3126
  "name": "keyword.other.abl"
@@ -3230,6 +3145,15 @@
3230
3145
  }
3231
3146
  },
3232
3147
  "patterns": [
3148
+ {
3149
+ "comment": "See https://docs.progress.com/bundle/abl-reference/page/Array-reference.html for array ranges",
3150
+ "match":"(?i)\\s+(for)\\s+",
3151
+ "captures": {
3152
+ "1": {
3153
+ "name": "keyword.other.abl"
3154
+ }
3155
+ }
3156
+ },
3233
3157
  {
3234
3158
  "include": "#expression"
3235
3159
  },
@@ -3288,7 +3212,24 @@
3288
3212
  "name": "variable.parameter.abl"
3289
3213
  },
3290
3214
  "run-statement": {
3291
- "match": "(?i)\\s*(run)\\s+(?!value)(([a-z][a-z0-9\\/\\-\\_\\\\]+)(\\.[a-z]+)?)",
3215
+ "patterns": [
3216
+ {"include": "#run-unquoted"},
3217
+ {"include": "#run-quoted"}
3218
+ ]
3219
+ },
3220
+ "run-quoted": {
3221
+ "match": "(?i)\\s*(run)\\s+(?!value)\\s*(['\"].*['\"])",
3222
+ "captures": {
3223
+ "1": {
3224
+ "name": "keyword.other.abl"
3225
+ },
3226
+ "2": {
3227
+ "name": "entity.name.procedure.abl"
3228
+ }
3229
+ }
3230
+ },
3231
+ "run-unquoted": {
3232
+ "match": "(?i)\\s*(run)\\s+(?!value)\\s*([\\w\\-\\$\\@\\/\\\\]{1,253}(\\.[\\w@\\$\\-]{1,2})?)",
3292
3233
  "captures": {
3293
3234
  "1": {
3294
3235
  "name": "keyword.other.abl"
@@ -3301,7 +3242,7 @@
3301
3242
  "include-file": {
3302
3243
  "name": "meta.include.abl",
3303
3244
  "comment": "https://docs.progress.com/bundle/openedge-abl-reference-122/page/Include-file-reference.html",
3304
- "begin": "(?i)({)\\s*(([a-z][a-z0-9\\/\\-\\_\\\\]+)(\\.[a-z]+)?)",
3245
+ "begin": "({)\\s*(([[:alpha:]][\\w\\/\\-\\\\]+)(\\.[[:alpha:]]+)?)",
3305
3246
  "beginCaptures": {
3306
3247
  "1": {
3307
3248
  "name": "punctuation.section.abl"
@@ -3321,7 +3262,7 @@
3321
3262
  "include": "#argument-reference"
3322
3263
  },
3323
3264
  {
3324
- "match": "(?<=\\s)(&[a-zA-Z][a-zA-Z0-9\\#\\$\\-\\_\\%\\.]+)\\s*(=?)",
3265
+ "match": "(?<=\\s)(&[[:alpha:]][\\w\\#\\$\\-\\%\\.]+)\\s*(=?)",
3325
3266
  "name": "meta.include.argument.abl",
3326
3267
  "comment": "This is intended to catch '&arg' and '&arg=' ",
3327
3268
  "captures": {
@@ -3338,9 +3279,9 @@
3338
3279
  "include": "#string"
3339
3280
  },
3340
3281
  {
3341
- "match": "(?<=\\s)(&[a-zA-Z][a-zA-Z0-9\\#\\$\\-\\_\\%\\.]+)\\s*(=?)",
3282
+ "match": "(?<=\\s)(&[[:alpha:]][\\w\\#\\$\\-\\%\\.]+)\\s*(=?)",
3342
3283
  "comment": "non-string argument values after the &arg = ",
3343
- "name": "meta.include-named-argument",
3284
+ "name": "meta.include.argument.abl",
3344
3285
  "captures": {
3345
3286
  "1": {
3346
3287
  "name": "support.other.argument.abl",
@@ -3355,9 +3296,9 @@
3355
3296
  "include": "#string"
3356
3297
  },
3357
3298
  {
3358
- "match": "(?<=\\s)(&[a-zA-Z][a-zA-Z0-9\\#\\$\\-\\_\\%\\.]+)\\s*(=?)",
3299
+ "match": "(?<=\\s)(&[[:alpha:]][\\w\\#\\$\\-\\%\\.]+)\\s*(=?)",
3359
3300
  "comment": "non-string argument values after the &arg = ",
3360
- "name": "meta.include-named-argument",
3301
+ "name": "meta.include.argument.abl",
3361
3302
  "captures": {
3362
3303
  "1": {
3363
3304
  "name": "support.other.argument.abl",
@@ -3369,7 +3310,7 @@
3369
3310
  }
3370
3311
  },
3371
3312
  {
3372
- "match": "(?<=\\s)([a-zA-Z][a-zA-Z0-9\\#\\$\\-\\_\\%\\.\\:]+)\\b",
3313
+ "match": "(?<=\\s)([[:alpha:]][\\w\\#\\$\\-\\%\\.\\:]+)\\b",
3373
3314
  "comment": "non-string unnamed argument values",
3374
3315
  "captures": {
3375
3316
  "1": {
@@ -3494,11 +3435,11 @@
3494
3435
  "comment": "https://docs.progress.com/bundle/openedge-abl-reference-122/page/Data-types.html"
3495
3436
  },
3496
3437
  "numeric": {
3497
- "match": "(?<![\\w-])((0(x|X)[0-9a-fA-F]+)|(\\-?[0-9]+(\\.[0-9]+)?))",
3438
+ "match": "(?<![\\w-])(0[xX][[:xdigit:]]+)|(\\-?[[:digit:]]+(\\.[[:digit:]]+)?)",
3498
3439
  "name": "constant.numeric.source.abl"
3499
3440
  },
3500
3441
  "abl-system-handles": {
3501
- "match": "(?i)\\s*(this-object|super|self|this-procedure|target-procedure|source-procedure|session|error-status|compiler|audit-control|audit-policy|clipboard|codebase-locator|color-table|debugger|dslog-manager|file-information|file-info|font-table|last-event|log-manager|profiler|rcode-information|rcode-info|security-policy|session|web-context)\\s*(?=:)",
3442
+ "match": "(?i)\\b(this-object|super|self|this-procedure|target-procedure|source-procedure|session|error-status|compiler|audit-control|audit-policy|clipboard|codebase-locator|color-table|debugger|dslog-manager|file-information|file-info|font-table|last-event|log-manager|profiler|rcode-information|rcode-info|security-policy|session|web-context)\\b(?![\\#\\$\\-\\_\\%\\&])",
3502
3443
  "captures": {
3503
3444
  "1": {
3504
3445
  "name": "variable.language.abl"
@@ -3595,6 +3536,41 @@
3595
3536
  }
3596
3537
  }
3597
3538
  },
3539
+ "new-record": {
3540
+ "comment": "This scope MUST be called after before type-reference (especially new-class) to avoid types being captured as tables",
3541
+ "patterns": [
3542
+ {
3543
+ "comment": " NEW\\s+( <buffer> )",
3544
+ "match": "(?i)\\s*(new)\\s+(\\()\\s*([\\w\\-#$%]+(\\.[\\w\\-#$%]+)?)\\s*(\\))",
3545
+ "captures": {
3546
+ "1": {
3547
+ "name": "support.function.abl"
3548
+ },
3549
+ "2": {
3550
+ "name": "meta.brace.round.js"
3551
+ },
3552
+ "3": {
3553
+ "name": "storage.data.table.abl"
3554
+ },
3555
+ "5": {
3556
+ "name": "meta.brace.round.js"
3557
+ }
3558
+ }
3559
+ },
3560
+ {
3561
+ "comment": " NEW <buffer>. The position of the negative lookahead (?!...) is very important",
3562
+ "match": "(?i)\\s*((new)\\s+(?!.*\\()([\\w\\-#$%\\.]+))",
3563
+ "captures": {
3564
+ "2": {
3565
+ "name": "support.function.abl"
3566
+ },
3567
+ "3": {
3568
+ "name": "storage.data.table.abl"
3569
+ }
3570
+ }
3571
+ }
3572
+ ]
3573
+ },
3598
3574
  "keywords": {
3599
3575
  "patterns": [
3600
3576
  {
@@ -3676,7 +3652,7 @@
3676
3652
  },
3677
3653
  "keywords-A": {
3678
3654
  "comment": "The keyword must not have a trailing variable character (one of #$-_%&)",
3679
- "match": "(?i)\\b(avg|average|averag|avera|aver|ave|available|automatic|auto-endkey|authorization|audit-policy|audit-control|attribute-type|attachment|attach|at|assign|assembly|ask-overwrite|ascending|ascendin|ascendi|ascend|ascen|asce|asc|as-cursor|as|array-message|array-messag|array-messa|array-mess|array-mes|array-me|array-m|apply|application|append-line|append|anywhere|any-printable|any-key|any|ansi-only|and|ambiguous|alternate-key|alter|allow-replication|all|alert-box|aggregate|advise|add|active-window|active-form|across|accumulate|accumulat|accumula|accumul|accumu|accum|abstract|abort)\\b(?![\\#\\$\\-\\_\\%\\&])",
3655
+ "match": "(?i)\\b(avg|average|averag|avera|aver|ave|available|automatic|auto-go|auto-endkey|authorization|audit-policy|audit-control|attribute-type|attachment|attach|at|assign|assembly|ask-overwrite|ascending|ascendin|ascendi|ascend|ascen|asce|asc|as-cursor|as|array-message|array-messag|array-messa|array-mess|array-mes|array-me|array-m|apply|application|append-line|append|anywhere|any-printable|any-key|any|ansi-only|and|ambiguous|alternate-key|alter|allow-replication|all|alert-box|aggregate|advise|add|active-window|active-form|across|accumulate|accumulat|accumula|accumul|accumu|accum|abstract|abort)\\b(?![\\#\\$\\-\\_\\%\\&])",
3680
3656
  "captures": {
3681
3657
  "1": {
3682
3658
  "name": "keyword.other.abl"
@@ -3685,7 +3661,7 @@
3685
3661
  },
3686
3662
  "keywords-B": {
3687
3663
  "comment": "The keyword must not have a trailing variable character (one of #$-_%&)",
3688
- "match": "(?i)\\b(byte|by-variant-pointer|by-variant-pointe|by-variant-point|by-value|by-reference|by-pointer|by|buttons|button|buffer-copy|buffer-compare|buffer|btos|browse-header|browse-column-labels|browse-column-formats|browse-column-data-types|browse|break-line|break|bottom-column|bottom|both|border-top|border-to|border-t|border-right|border-righ|border-rig|border-ri|border-r|border-left|border-lef|border-le|border-l|border-bottom|border-botto|border-bott|border-bot|border-bo|border-b|block-level|block-leve|block-lev|block|blob|bind-where|bind|binary|big-endian|between|bell|begins|before-hide|before-hid|before-hi|before-h|batch|base64|base-key|backwards|backward|backspace|back-tab)\\b(?![\\#\\$\\-\\_\\%\\&])",
3664
+ "match": "(?i)\\b(byte|by-variant-pointer|by-variant-pointe|by-variant-point|by-value|by-reference|by-pointer|by|buttons|button|buffer-copy|buffer-compare|buffer|btos|browse-header|browse-column-labels|browse-column-formats|browse-column-data-types|browse|break-line|break|bottom-column|bottom|both|border-top|border-to|border-t|border-right|border-righ|border-rig|border-ri|border-r|border-left|border-lef|border-le|border-l|border-bottom|border-botto|border-bott|border-bot|border-bo|border-b|block-level|block-leve|block-lev|block|blob|bind-where|bind|binary|big-endian|bgcolor|between|bell|begins|before-hide|before-hid|before-hi|before-h|batch|base64|base-key|backwards|backward|backspace|back-tab)\\b(?![\\#\\$\\-\\_\\%\\&])",
3689
3665
  "captures": {
3690
3666
  "1": {
3691
3667
  "name": "keyword.other.abl"
@@ -3694,7 +3670,7 @@
3694
3670
  },
3695
3671
  "keywords-C": {
3696
3672
  "comment": "The keyword must not have a trailing variable character (one of #$-_%&)",
3697
- "match": "(?i)\\b(cut|cursor-up|cursor-right|cursor-left|cursor-down|cursor|curso|curs|current_date|current-value|current-language|current|ctos|create-test-file|create-on-add|create|count|copy-lob|copy|convert|control-frame|control-fram|control-container|control-containe|control-contain|control-contai|control-conta|control-cont|control|context-popup|context-popu|context-pop|context|contents|contains|container-event|constructor|constrained|connect|component-self|component-handle|compiler|compile|compares|compare|command|combo-box|com-self|columns|column-of|column-label-height-pixels|column-label-height-pixel|column-label-height-pixe|column-label-height-pix|column-label-height-pi|column-label-height-p|column-label-height-chars|column-label-height-char|column-label-height-cha|column-label-height-ch|column-label-height-c|column-label-font|column-label-fgcolor|column-label-fgcolo|column-label-fgcol|column-label-fgco|column-label-fgc|column-label-dcolor|column-label-bgcolor|column-label-bgcolo|column-label-bgcol|column-label-bgco|column-label-bgc|column-codepage|column|color-table|color|colon-aligned|colon-aligne|colon-align|colon|collate|col-of|col|codebase-locator|close|clob|clipboard|client-principal|clear|class|choose|choices|check-mem-stomp|check|character_length|character|characte|charact|charac|chara|char|chained|centered|cdecl|catch|case|cancel-pick|call|cache-size|cache)\\b(?![\\#\\$\\-\\_\\%\\&])",
3673
+ "match": "(?i)\\b(cut|cursor-up|cursor-right|cursor-left|cursor-down|cursor|curso|curs|current_date|current-value|current-language|current|ctos|create-test-file|create-on-add|create|count|copy-lob|copy|convert|control-frame|control-fram|control-container|control-containe|control-contain|control-contai|control-conta|control-cont|control|context-popup|context-popu|context-pop|context-help-id|context|contents|contains|container-event|constructor|constrained|connect|component-self|component-handle|compiler|compile|compares|compare|command|combo-box|com-self|columns|column-of|column-label-height-pixels|column-label-height-pixel|column-label-height-pixe|column-label-height-pix|column-label-height-pi|column-label-height-p|column-label-height-chars|column-label-height-char|column-label-height-cha|column-label-height-ch|column-label-height-c|column-label-font|column-label-fgcolor|column-label-fgcolo|column-label-fgcol|column-label-fgco|column-label-fgc|column-label-dcolor|column-label-bgcolor|column-label-bgcolo|column-label-bgcol|column-label-bgco|column-label-bgc|column-codepage|column|color-table|color|colon-aligned|colon-aligne|colon-align|colon|collate|col-of|col|codebase-locator|close|clob|clipboard|client-principal|clear|class|choose|choices|check-mem-stomp|check|character_length|character|characte|charact|charac|chara|char|chained|centered|cdecl|catch|case|cancel-pick|call|cache-size|cache)\\b(?![\\#\\$\\-\\_\\%\\&])",
3698
3674
  "captures": {
3699
3675
  "1": {
3700
3676
  "name": "keyword.other.abl"
@@ -3703,7 +3679,7 @@
3703
3679
  },
3704
3680
  "keywords-D": {
3705
3681
  "comment": "The keyword must not have a trailing variable character (one of #$-_%&)",
3706
- "match": "(?i)\\b(dynamic-property|dynamic-new|dynamic-current-value|dump|dslog-manager|drop-file-notify|drop-down-list|drop-down|drop|down|double|dotnet-clr-loaded|dos-end|dos|do|dll-call-type|distinct|display|displa|displ|disp|dismiss-menu|disconnect|disabled|disable|dir|dictionary|dictionar|dictiona|diction|dictio|dicti|dict|dialog-help|dialog-box|detach|destructor|deselection-extend|deselection|deselect-extend|deselect|descending|descendin|descendi|descend|descen|desce|desc|delimiter|delete-word|delete-field|delete-end-line|delete-column|delete-character|delete|delegate|del|define-user-event-manager|define|defin|defi|defer-lob-fetch|default-window|default-untranslatable|default-pop-up|default-extension|default-extensio|default-extensi|default-extens|default-exten|default-exte|default-ext|default-ex|default-action|def|declare|debugger|debug-set-tenant|debug-list|dde-notify|dde|dataset-handle|dataset|database|data-source|data-relation|data-relatio|data-relati|data-relat|data-rela|data-rel|data-refresh-page|data-refresh-line|data-bind|data-bin|data-bi|data-b)\\b(?![\\#\\$\\-\\_\\%\\&])",
3682
+ "match": "(?i)\\b(dynamic-property|dynamic-new|dynamic-current-value|dump|dslog-manager|drop-target|drop-file-notify|drop-down-list|drop-down|drop|down|double|dotnet-clr-loaded|dos-end|dos|do|dll-call-type|distinct|display|displa|displ|disp|dismiss-menu|disconnect|disabled|disable|dir|dictionary|dictionar|dictiona|diction|dictio|dicti|dict|dialog-help|dialog-box|detach|destructor|deselection-extend|deselection|deselect-extend|deselect|descending|descendin|descendi|descend|descen|desce|desc|delimiter|delete-word|delete-field|delete-end-line|delete-column|delete-character|delete|delegate|del|define-user-event-manager|define|defin|defi|defer-lob-fetch|default-window|default-untranslatable|default-pop-up|default-extension|default-extensio|default-extensi|default-extens|default-exten|default-exte|default-ext|default-ex|default-action|default|def|declare|debugger|debug-set-tenant|debug-list|dde-notify|dde|dcolor|dataset-handle|dataset|database|data-source|data-relation|data-relatio|data-relati|data-relat|data-rela|data-rel|data-refresh-page|data-refresh-line|data-bind|data-bin|data-bi|data-b)\\b(?![\\#\\$\\-\\_\\%\\&])",
3707
3683
  "captures": {
3708
3684
  "1": {
3709
3685
  "name": "keyword.other.abl"
@@ -3721,7 +3697,7 @@
3721
3697
  },
3722
3698
  "keywords-F": {
3723
3699
  "comment": "The keyword must not have a trailing variable character (one of #$-_%&)",
3724
- "match": "(?i)\\b(function-call-type|function|full-height|fromnoreorder|from-pixels|from-pixel|from-pixe|from-pix|from-pi|from-p|from-current|from-curren|from-curre|from-curr|from-cur|from-chars|from-char|from-cha|from-ch|from-c|from|frame-value|frame|forwards|forward|format|form|force-file|for|font-table|font|focus-in|focus|float|flags|fixed-only|fix-codepage|first|firehose-cursor|finder|find-wrap-around|find-select|find-previous|find-prev-occurrence|find-next-occurrence|find-next|find-global|find-case-sensitive|find|finally|final|filters|fill-in|filename|file-information|file-informatio|file-informati|file-informat|file-informa|file-inform|file-infor|file-info|file-access-time|file-access-tim|file-access-ti|file-access-t|file-access-date|file-access-dat|file-access-da|file-access-d|file|fields|field|fetch|false-leaks|false)\\b(?![\\#\\$\\-\\_\\%\\&])",
3700
+ "match": "(?i)\\b(function-call-type|function|full-height|fromnoreorder|from-pixels|from-pixel|from-pixe|from-pix|from-pi|from-p|from-current|from-curren|from-curre|from-curr|from-cur|from-chars|from-char|from-cha|from-ch|from-c|from|frame-value|frame|forwards|forward|format|form|foreign-key-hidden|force-file|for|font-table|font|focus-in|focus|float|flat-button|flags|fixed-only|fix-codepage|first|firehose-cursor|finder|find-wrap-around|find-select|find-previous|find-prev-occurrence|find-next-occurrence|find-next|find-global|find-case-sensitive|find|finally|final|filters|fill-in|filename|file-information|file-informatio|file-informati|file-informat|file-informa|file-inform|file-infor|file-info|file-access-time|file-access-tim|file-access-ti|file-access-t|file-access-date|file-access-dat|file-access-da|file-access-d|file|fields|field|fgcolor|fetch|false-leaks|false)\\b(?![\\#\\$\\-\\_\\%\\&])",
3725
3701
  "captures": {
3726
3702
  "1": {
3727
3703
  "name": "keyword.other.abl"
@@ -3748,7 +3724,7 @@
3748
3724
  },
3749
3725
  "keywords-I": {
3750
3726
  "comment": "The keyword must not have a trailing variable character (one of #$-_%&)",
3751
- "match": "(?i)\\b(iteration-changed|item|is|into|interface|insert-mode|insert-field-label|insert-field-data|insert-field|insert-column|insert|input-output|input-outpu|input-outp|input-out|input-ou|input-o|input|inner|initiate|initial-filter|initial-dir|initial|init|inherits|inherit-color-mode|information|informatio|informati|informat|informa|inform|infor|info|indicator|indexed-reposition|index-hint|in|import|implements|image-size-pixels|image-size-pixel|image-size-pixe|image-size-pix|image-size-pi|image-size-p|image-size-chars|image-size-char|image-size-cha|image-size-ch|image-size-c|image-size|image|if)\\b(?![\\#\\$\\-\\_\\%\\&])",
3727
+ "match": "(?i)\\b(iteration-changed|item|is|into|interface|insert-mode|insert-field-label|insert-field-data|insert-field|insert-column|insert|input-output|input-outpu|input-outp|input-out|input-ou|input-o|input|inner|initiate|initial-filter|initial-dir|initial|init|inherits|inherit-color-mode|information|informatio|informati|informat|informa|inform|infor|info|indicator|indexed-reposition|index-hint|in|import|implements|image-up|image-size-pixels|image-size-pixel|image-size-pixe|image-size-pix|image-size-pi|image-size-p|image-size-chars|image-size-char|image-size-cha|image-size-ch|image-size-c|image-size|image-insensitive|image-down|image|if)\\b(?![\\#\\$\\-\\_\\%\\&])",
3752
3728
  "captures": {
3753
3729
  "1": {
3754
3730
  "name": "keyword.other.abl"
@@ -3784,7 +3760,7 @@
3784
3760
  },
3785
3761
  "keywords-M": {
3786
3762
  "comment": "The keyword must not have a trailing variable character (one of #$-_%&)",
3787
- "match": "(?i)\\b(must-exist|multiple-key|mpe|move|mouse|modulo|mod|min-width|min-size|min-schema-marshall|min-schema-marshal|min-height|method|message-line|message-area-msg|message|menubar|menu-item|menu-drop|menu|memptr|md5-value|maximize|max-width|max-size|max-rows|max-height|max|matches|margin-width-pixels|margin-width-pixel|margin-width-pixe|margin-width-pix|margin-width-pi|margin-width-p|margin-width-chars|margin-width-char|margin-width-cha|margin-width-ch|margin-width-c|margin-width|margin-height-pixels|margin-height-pixel|margin-height-pixe|margin-height-pix|margin-height-pi|margin-height-p|margin-height-chars|margin-height-char|margin-height-cha|margin-height-ch|margin-height-c|margin-height|margin-extra|map|main-menu|machine-class)\\b(?![\\#\\$\\-\\_\\%\\&])",
3763
+ "match": "(?i)\\b(must-exist|multiple-key|mpe|move|mouse-pointer|mouse|modulo|mod|min-width|min-size|min-schema-marshall|min-schema-marshal|min-height|method|message-line|message-area-msg|message|menubar|menu-item|menu-drop|menu|memptr|md5-value|maximize|max-width|max-size|max-rows|max-height|max|matches|margin-width-pixels|margin-width-pixel|margin-width-pixe|margin-width-pix|margin-width-pi|margin-width-p|margin-width-chars|margin-width-char|margin-width-cha|margin-width-ch|margin-width-c|margin-width|margin-height-pixels|margin-height-pixel|margin-height-pixe|margin-height-pix|margin-height-pi|margin-height-p|margin-height-chars|margin-height-char|margin-height-cha|margin-height-ch|margin-height-c|margin-height|margin-extra|map|main-menu|machine-class)\\b(?![\\#\\$\\-\\_\\%\\&])",
3788
3764
  "captures": {
3789
3765
  "1": {
3790
3766
  "name": "keyword.other.abl"
@@ -3793,7 +3769,7 @@
3793
3769
  },
3794
3770
  "keywords-N": {
3795
3771
  "comment": "The keyword must not have a trailing variable character (one of #$-_%&)",
3796
- "match": "(?i)\\b(numeric|num-selected|num-copies|null|not-active|not|none|non-serializable|node-type|no-word-wrap|no-wait|no-undo|no-underline|no-underlin|no-underli|no-underl|no-under|no-unde|no-und|no-tab-stop|no-tab-sto|no-tab-st|no-tab-s|no-tab-|no-tab|no-separators|no-separate-connection|no-scrolling|no-scrollbar-vertical|no-scrollbar-vertica|no-scrollbar-vertic|no-scrollbar-verti|no-scrollbar-vert|no-scrollbar-ver|no-scrollbar-ve|no-scrollbar-v|no-schema-marshall|no-schema-marshal|no-row-markers|no-return-value|no-return-valu|no-return-val|no-query-unique-added|no-query-unique-adde|no-query-unique-add|no-query-unique-ad|no-query-unique-a|no-query-unique-|no-query-unique|no-query-uniqu|no-query-uniq|no-query-uni|no-query-un|no-query-u|no-query-order-added|no-query-order-adde|no-query-order-add|no-query-order-ad|no-query-order-a|no-query-order-|no-query-order|no-query-orde|no-query-ord|no-query-or|no-query-o|no-prefetch|no-prefetc|no-prefet|no-prefe|no-pause|no-message|no-messag|no-messa|no-mess|no-mes|no-map|no-lookahead|no-lock|no-lobs|no-labels|no-label|no-keycache-join|no-join-by-sqldb|no-inherit-fgcolor|no-inherit-fgcolo|no-inherit-fgcol|no-inherit-fgco|no-inherit-fgc|no-inherit-bgcolor|no-inherit-bgcolo|no-inherit-bgcol|no-inherit-bgco|no-inherit-bgc|no-index-hint|no-hide|no-help|no-firehose-cursor|no-fill|no-fil|no-fi|no-f|no-error|no-echo|no-drag|no-debug|no-convert-3d-colors|no-convert-3d-color|no-convert-3d-colo|no-convert-3d-col|no-convert-3d-co|no-convert-3d-c|no-convert-3d-|no-convert-3d|no-convert|no-console|no-column-scrolling|no-column-scrollin|no-column-scrolli|no-column-scroll|no-column-scrol|no-column-scro|no-column-scr|no-column-sc|no-box|no-bind-where|no-auto-validate|no-auto-trim|no-auto-tri|no-attr-space|no-attr-spac|no-attr-spa|no-attr-sp|no-attr-s|no-attr-list|no-attr-lis|no-attr-li|no-attr-l|no-attr|no-assign|no-array-message|no-array-messag|no-array-messa|no-array-mess|no-array-mes|no-array-me|no-array-m|no-apply|no|next-word|next-prompt|next-frame|next-error|next|new-line|new-instance|new|nested|ne|native|namespace-uri|namespace-prefix)\\b(?![\\#\\$\\-\\_\\%\\&])",
3772
+ "match": "(?i)\\b(numeric|num-selected|num-copies|null|not-active|not|none|non-serializable|node-type|no-word-wrap|no-wait|no-undo|no-underline|no-underlin|no-underli|no-underl|no-under|no-unde|no-und|no-tab-stop|no-tab-sto|no-tab-st|no-tab-s|no-tab-|no-tab|no-separators|no-separate-connection|no-scrolling|no-scrollbar-vertical|no-scrollbar-vertica|no-scrollbar-vertic|no-scrollbar-verti|no-scrollbar-vert|no-scrollbar-ver|no-scrollbar-ve|no-scrollbar-v|no-schema-marshall|no-schema-marshal|no-row-markers|no-return-value|no-return-valu|no-return-val|no-query-unique-added|no-query-unique-adde|no-query-unique-add|no-query-unique-ad|no-query-unique-a|no-query-unique-|no-query-unique|no-query-uniqu|no-query-uniq|no-query-uni|no-query-un|no-query-u|no-query-order-added|no-query-order-adde|no-query-order-add|no-query-order-ad|no-query-order-a|no-query-order-|no-query-order|no-query-orde|no-query-ord|no-query-or|no-query-o|no-prefetch|no-prefetc|no-prefet|no-prefe|no-pause|no-message|no-messag|no-messa|no-mess|no-mes|no-map|no-lookahead|no-lock|no-lobs|no-labels|no-label|no-keycache-join|no-join-by-sqldb|no-inherit-fgcolor|no-inherit-fgcolo|no-inherit-fgcol|no-inherit-fgco|no-inherit-fgc|no-inherit-bgcolor|no-inherit-bgcolo|no-inherit-bgcol|no-inherit-bgco|no-inherit-bgc|no-index-hint|no-hide|no-help|no-focus|no-firehose-cursor|no-fill|no-fil|no-fi|no-f|no-error|no-echo|no-drag|no-debug|no-convert-3d-colors|no-convert-3d-color|no-convert-3d-colo|no-convert-3d-col|no-convert-3d-co|no-convert-3d-c|no-convert-3d-|no-convert-3d|no-convert|no-console|no-column-scrolling|no-column-scrollin|no-column-scrolli|no-column-scroll|no-column-scrol|no-column-scro|no-column-scr|no-column-sc|no-box|no-bind-where|no-auto-validate|no-auto-trim|no-auto-tri|no-attr-space|no-attr-spac|no-attr-spa|no-attr-sp|no-attr-s|no-attr-list|no-attr-lis|no-attr-li|no-attr-l|no-attr|no-assign|no-array-message|no-array-messag|no-array-messa|no-array-mess|no-array-mes|no-array-me|no-array-m|no-apply|no|next-word|next-prompt|next-frame|next-error|next|new-line|new-instance|new|nested|ne|native|namespace-uri|namespace-prefix)\\b(?![\\#\\$\\-\\_\\%\\&])",
3797
3773
  "captures": {
3798
3774
  "1": {
3799
3775
  "name": "keyword.other.abl"
@@ -3811,7 +3787,7 @@
3811
3787
  },
3812
3788
  "keywords-P": {
3813
3789
  "comment": "The keyword must not have a trailing variable character (one of #$-_%&)",
3814
- "match": "(?i)\\b(putbyte|put-unsigned-short|put-unsigned-long|put-string|put-short|put-long|put-key-value|put-key-valu|put-key-val|put-int64|put-float|put-double|put-bytes|put-byte|put-bits|put|publish|public|protected|property|propath|promsgs|prompt-for|prompt-fo|prompt-f|prompt|profiler|profile-file|process|procedure-complete|procedure-call-type|procedure|procedur|procedu|proced|proce|privileges|private|printer-setup|printer|prev-word|prev-frame|prev|preselect|preselec|presele|presel|preprocess|preproces|preproce|preproc|precision|portrait|pixels|pick-both|pick-area|pick|performance|performanc|performan|performa|perform|perfor|perfo|perf|pause|paste|pascal|partial-key|parent-window-close|parent-id-field|parameter|paged|page-width|page-widt|page-wid|page-up|page-right-text|page-right|page-left|page-down|page|package-protected|package-private)\\b(?![\\#\\$\\-\\_\\%\\&])",
3790
+ "match": "(?i)\\b(putbyte|put-unsigned-short|put-unsigned-long|put-string|put-short|put-long|put-key-value|put-key-valu|put-key-val|put-int64|put-float|put-double|put-bytes|put-byte|put-bits|put|publish|public|protected|property|propath|promsgs|prompt-for|prompt-fo|prompt-f|prompt|profiler|profile-file|process|procedure-complete|procedure-call-type|procedure|procedur|procedu|proced|proce|privileges|private|printer-setup|printer|prev-word|prev-frame|prev|preselect|preselec|presele|presel|preprocess|preproces|preproce|preproc|precision|portrait|pixels|pick-both|pick-area|pick|pfcolor|performance|performanc|performan|performa|perform|perfor|perfo|perf|pause|paste|pascal|partial-key|parent-window-close|parent-id-field|parameter|paged|page-width|page-widt|page-wid|page-up|page-right-text|page-right|page-left|page-down|page|package-protected|package-private)\\b(?![\\#\\$\\-\\_\\%\\&])",
3815
3791
  "captures": {
3816
3792
  "1": {
3817
3793
  "name": "keyword.other.abl"
@@ -3829,7 +3805,7 @@
3829
3805
  },
3830
3806
  "keywords-R": {
3831
3807
  "comment": "The keyword must not have a trailing variable character (one of #$-_%&)",
3832
- "match": "(?i)\\b(run-procedure|run-procedur|run-procedu|run-proced|run-proce|run-proc|run|rule-y|rule-row|rule|row-unmodified|row-of|row-modified|row-leave|row-height|row-entry|row-display|row-deleted|row-created|row|routine-level|right-end|right-aligned|right-aligne|right-align|right|revoke|revert|reverse-from|returns|return-value|return-to-start-dir|return-to-start-di|return|retry-cancel|retain|resume-display|result|request|reposition-parent-relation|reposition-parent-relatio|reposition-parent-relati|reposition-parent-relat|reposition-parent-rela|reposition-parent-rel|reposition-forwards|reposition-forward|reposition-forwar|reposition-forwa|reposition-forw|reposition-backwards|reposition-backward|reposition-backwar|reposition-backwa|reposition-backw|reposition-back|reposition|reports|replication-write|replication-delete|replication-create|repeat|release|reinstate|reference-only|rectangle|rectangl|rectang|rectan|recta|rect|recall|real|readkey|read-response|read-exact-num|read-available|rcode-information|rcode-informatio|rcode-informati|rcode-informat|rcode-informa|rcode-inform|rcode-infor|rcode-info|raw-transfer|raw|radio-set)\\b(?![\\#\\$\\-\\_\\%\\&])",
3808
+ "match": "(?i)\\b(run-procedure|run-procedur|run-procedu|run-proced|run-proce|run-proc|run|rule-y|rule-row|rule|row-unmodified|row-of|row-modified|row-leave|row-height|row-entry|row-display|row-deleted|row-created|row|routine-level|right-end|right-aligned|right-aligne|right-align|right|revoke|revert|reverse-from|returns|return-value|return-to-start-dir|return-to-start-di|return|retry-cancel|retain|resume-display|result|request|reposition-parent-relation|reposition-parent-relatio|reposition-parent-relati|reposition-parent-relat|reposition-parent-rela|reposition-parent-rel|reposition-forwards|reposition-forward|reposition-forwar|reposition-forwa|reposition-forw|reposition-backwards|reposition-backward|reposition-backwar|reposition-backwa|reposition-backw|reposition-back|reposition|reports|replication-write|replication-delete|replication-create|repeat|release|reinstate|reference-only|recursive|rectangle|rectangl|rectang|rectan|recta|rect|recall|real|readkey|read-response|read-exact-num|read-available|rcode-information|rcode-informatio|rcode-informati|rcode-informat|rcode-informa|rcode-inform|rcode-infor|rcode-info|raw-transfer|raw|radio-set)\\b(?![\\#\\$\\-\\_\\%\\&])",
3833
3809
  "captures": {
3834
3810
  "1": {
3835
3811
  "name": "keyword.other.abl"
@@ -3838,7 +3814,7 @@
3838
3814
  },
3839
3815
  "keywords-S": {
3840
3816
  "comment": "The keyword must not have a trailing variable character (one of #$-_%&)",
3841
- "match": "(?i)\\b(system-help|system-dialog|suspend|super|summary|sum|substring|subscribe|sub-total|sub-minimum|sub-minimu|sub-minim|sub-mini|sub-min|sub-menu-help|sub-menu|sub-maximum|sub-maximu|sub-maxim|sub-maxi|sub-max|sub-count|sub-average|sub-averag|sub-avera|sub-aver|sub-ave|string-xref|stream-io|stream-handle|stream|stored-procedure|stored-procedur|stored-procedu|stored-proced|stored-proce|stored-proc|stop-mem-check|stop-display|stop-after|stop|stomp-frequency|stomp-detection|stdcall|status-area-msg|status|static|starting|start-search|start-row-resize|start-resize|start-move|start-mem-check|start-extend-box-selection|start-box-selection|start|sql|space|source-procedure|source|some|socket|soap-header-entryref|soap-header|soap-fault|smallint|slider|skip-schema-check|skip-group-duplicates|skip|size-pixels|size-pixel|size-pixe|size-pix|size-pi|size-p|size-chars|size-char|size-cha|size-ch|size-c|size|single-run|single-character|single|simple|silent|signature|side-label|side-labe|side-lab|show-stats|show-stat|short|shared|share-lock|share-loc|share-lo|share-l|share-|share|settings|set-state|set-pointer-value|set-pointer-valu|set-pointer-val|set-option|set-event-manager-option|set-db-logging|set-contents|set-cell-focus|set-byte-order|set-attr-call-type|set|session|server-socket|server|serialize-name|serializable|separate-connection|send|self|selection-list|selection-extend|selection|selected-items|select-repositioned-row|select-on-join|select-extend|select|seek|security-policy|section|search-target|search-self|scrolling|scrolled-row-position|scrolled-row-positio|scrolled-row-positi|scrolled-row-posit|scrolled-row-posi|scrolled-row-pos|scrollbar-drag|scroll-vertical|scroll-right|scroll-notify|scroll-mode|scroll-left|scroll-horizontal|scroll|screen-io|screen|schema|sax-xml|sax-writer|sax-write-tag|sax-write-idle|sax-write-error|sax-write-element|sax-write-content|sax-write-complete|sax-write-begin|sax-uninitialized|sax-running|sax-reader|sax-parser-error|sax-complete|sax-complet|sax-comple|sax-attributes|save-as|save)\\b(?![\\#\\$\\-\\_\\%\\&])",
3817
+ "match": "(?i)\\b(system-help|system-dialog|suspend|super|summary|sum|substring|subscribe|sub-total|sub-minimum|sub-minimu|sub-minim|sub-mini|sub-min|sub-menu-help|sub-menu|sub-maximum|sub-maximu|sub-maxim|sub-maxi|sub-max|sub-count|sub-average|sub-averag|sub-avera|sub-aver|sub-ave|string-xref|stream-io|stream-handle|stream|stored-procedure|stored-procedur|stored-procedu|stored-proced|stored-proce|stored-proc|stop-mem-check|stop-display|stop-after|stop|stomp-frequency|stomp-detection|stdcall|status-area-msg|status|static|starting|start-search|start-row-resize|start-resize|start-move|start-mem-check|start-extend-box-selection|start-box-selection|start|sql|space|source-procedure|source|some|socket|soap-header-entryref|soap-header|soap-fault|smallint|slider|skip-schema-check|skip-group-duplicates|skip|size-pixels|size-pixel|size-pixe|size-pix|size-pi|size-p|size-chars|size-char|size-cha|size-ch|size-c|size|single-run|single-character|single|simple|silent|signature|side-label|side-labe|side-lab|show-stats|show-stat|short|shared|share-lock|share-loc|share-lo|share-l|share-|share|settings|set-state|set-pointer-value|set-pointer-valu|set-pointer-val|set-option|set-event-manager-option|set-db-logging|set-contents|set-cell-focus|set-byte-order|set-attr-call-type|set|session|server-socket|server|serialize-name|serialize-hidden|serializable|separators|separate-connection|send|self|selection-list|selection-extend|selection|selected-items|select-repositioned-row|select-on-join|select-extend|select|seek|security-policy|section|search-target|search-self|scrolling|scrolled-row-position|scrolled-row-positio|scrolled-row-positi|scrolled-row-posit|scrolled-row-posi|scrolled-row-pos|scrollbar-drag|scroll-vertical|scroll-right|scroll-notify|scroll-mode|scroll-left|scroll-horizontal|scroll|screen-io|screen|schema|sax-xml|sax-writer|sax-write-tag|sax-write-idle|sax-write-error|sax-write-element|sax-write-content|sax-write-complete|sax-write-begin|sax-uninitialized|sax-running|sax-reader|sax-parser-error|sax-complete|sax-complet|sax-comple|sax-attributes|save-as|save)\\b(?![\\#\\$\\-\\_\\%\\&])",
3842
3818
  "captures": {
3843
3819
  "1": {
3844
3820
  "name": "keyword.other.abl"
@@ -3847,7 +3823,7 @@
3847
3823
  },
3848
3824
  "keywords-T": {
3849
3825
  "comment": "The keyword must not have a trailing variable character (one of #$-_%&)",
3850
- "match": "(?i)\\b(ttcodepage|true|triggers|trigger|transaction-mode|transaction|trans|trailing|total|topic|top-column|top|to|thru|throw|through|this-procedure|this-object|then|text-seg-growth|text-seg-growt|text-seg-grow|text-seg-gro|text-seg-gr|text-seg-g|text-seg-|text-seg|text-cursor|text|terminate|terminal|term|tenant-where|tenant|temp-table|target-procedure|target|table-scan|tab)\\b(?![\\#\\$\\-\\_\\%\\&])",
3826
+ "match": "(?i)\\b(ttcodepage|true|triggers|trigger|transaction-mode|transaction|trans|trailing|total|topic|top-column|top|tooltip|to|thru|throw|through|this-procedure|this-object|then|text-seg-growth|text-seg-growt|text-seg-grow|text-seg-gro|text-seg-gr|text-seg-g|text-seg-|text-seg|text-cursor|text|terminate|terminal|term|tenant-where|tenant|temp-table|target-procedure|target|table-scan|tab)\\b(?![\\#\\$\\-\\_\\%\\&])",
3851
3827
  "captures": {
3852
3828
  "1": {
3853
3829
  "name": "keyword.other.abl"
@@ -3874,7 +3850,7 @@
3874
3850
  },
3875
3851
  "keywords-W": {
3876
3852
  "comment": "The keyword must not have a trailing variable character (one of #$-_%&)",
3877
- "match": "(?i)\\b(workfile|work-table|work-tabl|work-tab|word-index|with|window-restored|window-resized|window-normal|window-name|window-minimized|window-minimize|window-minimiz|window-minimi|window-minim|window-maximized|window-maximize|window-maximiz|window-maximi|window-maxim|window-delayed-minimize|window-delayed-minimiz|window-delayed-minimi|window-delayed-minim|window-delayed-mini|window-delayed-min|window-close|width|widget-pool|widget|while|where|when|web-notify|web-context|web-contex|web-conte|web-cont|web-con|wait-for|wait)\\b(?![\\#\\$\\-\\_\\%\\&])",
3853
+ "match": "(?i)\\b(workfile|work-table|work-tabl|work-tab|word-index|with|window-restored|window-resized|window-normal|window-name|window-minimized|window-minimize|window-minimiz|window-minimi|window-minim|window-maximized|window-maximize|window-maximiz|window-maximi|window-maxim|window-delayed-minimize|window-delayed-minimiz|window-delayed-minimi|window-delayed-minim|window-delayed-mini|window-delayed-min|window-close|width|widget-pool|widget|while|where|when|web-notify|web-context|web-contex|web-conte|web-cont|web-con|warning|wait-for|wait)\\b(?![\\#\\$\\-\\_\\%\\&])",
3878
3854
  "captures": {
3879
3855
  "1": {
3880
3856
  "name": "keyword.other.abl"
@@ -3883,7 +3859,7 @@
3883
3859
  },
3884
3860
  "keywords-X": {
3885
3861
  "comment": "The keyword must not have a trailing variable character (one of #$-_%&)",
3886
- "match": "(?i)\\b(xref-xml|xref|xor|xml-node-name|xcode|x-of|x-noderef|x-document)\\b(?![\\#\\$\\-\\_\\%\\&])",
3862
+ "match": "(?i)\\b(xref-xml|xref|xor|xml-node-type|xml-node-name|xml-data-type|xcode|x-of|x-noderef|x-document)\\b(?![\\#\\$\\-\\_\\%\\&])",
3887
3863
  "captures": {
3888
3864
  "1": {
3889
3865
  "name": "keyword.other.abl"
@@ -3976,7 +3952,7 @@
3976
3952
  ]
3977
3953
  },
3978
3954
  "handle-attributes-A": {
3979
- "match": "(?i)(:)(available-formats|available|availabl|availab|availa|avail|auto-zap|auto-za|auto-z|auto-validate|auto-validat|auto-valida|auto-valid|auto-vali|auto-val|auto-synchronize|auto-return|auto-retur|auto-retu|auto-ret|auto-resize|auto-indent|auto-inden|auto-inde|auto-ind|auto-go|auto-end-key|auto-delete-xml|auto-delete|auto-completion|auto-completio|auto-completi|auto-complet|auto-comple|auto-compl|auto-comp|audit-event-context|attribute-names|attr-space|attr-spac|attr-spa|attr-sp|attr-s|attr-|attr|attached-pairlist|asynchronous|async-request-handle|async-request-count|appserver-userid|appserver-password|appserver-info|appl-context-id|appl-alert-boxes|appl-alert-boxe|appl-alert-box|appl-alert-bo|appl-alert-b|appl-alert-|appl-alert|ambiguous|ambiguou|ambiguo|ambigu|ambig|always-on-top|allow-prev-deserialization|allow-column-searching|after-table|after-rowid|after-buffer|adm-data|actor|active|accelerator)\\s*",
3955
+ "match": "(?i)(:)(available-formats|available|availabl|availab|availa|avail|auto-zap|auto-za|auto-z|auto-validate|auto-validat|auto-valida|auto-valid|auto-vali|auto-val|auto-synchronize|auto-return|auto-retur|auto-retu|auto-ret|auto-resize|auto-indent|auto-inden|auto-inde|auto-ind|auto-go|auto-end-key|auto-delete-xml|auto-delete|auto-completion|auto-completio|auto-completi|auto-complet|auto-comple|auto-compl|auto-comp|audit-event-context|attribute-names|attr-space|attr-spac|attr-spa|attr-sp|attr-s|attr-|attr|attached-pairlist|asynchronous|async-request-handle|async-request-count|appserver-userid|appserver-password|appserver-info|appl-context-id|appl-alert-boxes|appl-alert-boxe|appl-alert-box|appl-alert-bo|appl-alert-b|appl-alert-|appl-alert|ambiguous|ambiguou|ambiguo|ambigu|ambig|always-on-top|allow-prev-deserialization|allow-column-searching|after-table|after-rowid|after-buffer|adm-data|actor|active|accelerator)\\b(?![\\#\\$\\-\\_\\%\\&])",
3980
3956
  "captures": {
3981
3957
  "1": {
3982
3958
  "name": "punctuation.separator.colon.abl"
@@ -3987,7 +3963,7 @@
3987
3963
  }
3988
3964
  },
3989
3965
  "handle-attributes-B": {
3990
- "match": "(?i)(:)(bytes-written|bytes-read|buffer-tenant-name|buffer-tenant-id|buffer-partition-id|buffer-name|buffer-nam|buffer-na|buffer-n|buffer-lines|buffer-handle|buffer-group-name|buffer-group-id|buffer-field|buffer-chars|box-selectable|box-selectabl|box-selectab|box-selecta|box-select|box|border-top-pixels|border-top-pixel|border-top-pixe|border-top-pix|border-top-pi|border-top-p|border-top-chars|border-top-char|border-top-cha|border-top-ch|border-top-c|border-right-pixels|border-right-pixel|border-right-pixe|border-right-pix|border-right-pi|border-right-p|border-right-chars|border-right-char|border-right-cha|border-right-ch|border-right-c|border-left-pixels|border-left-pixel|border-left-pixe|border-left-pix|border-left-pi|border-left-p|border-left-chars|border-left-char|border-left-cha|border-left-ch|border-left-c|border-bottom-pixels|border-bottom-pixel|border-bottom-pixe|border-bottom-pix|border-bottom-pi|border-bottom-p|border-bottom-chars|border-bottom-char|border-bottom-cha|border-bottom-ch|border-bottom-c|block-iteration-display|blank|bgcolor|bgcolo|bgcol|bgco|bgc|before-table|before-rowid|before-buffer|batch-size|batch-mode|basic-logging|base-ade|background|backgroun|backgrou|backgro|backgr|backg|back)\\s*",
3966
+ "match": "(?i)(:)(bytes-written|bytes-read|buffer-tenant-name|buffer-tenant-id|buffer-partition-id|buffer-name|buffer-nam|buffer-na|buffer-n|buffer-lines|buffer-handle|buffer-group-name|buffer-group-id|buffer-field|buffer-chars|box-selectable|box-selectabl|box-selectab|box-selecta|box-select|box|border-top-pixels|border-top-pixel|border-top-pixe|border-top-pix|border-top-pi|border-top-p|border-top-chars|border-top-char|border-top-cha|border-top-ch|border-top-c|border-right-pixels|border-right-pixel|border-right-pixe|border-right-pix|border-right-pi|border-right-p|border-right-chars|border-right-char|border-right-cha|border-right-ch|border-right-c|border-left-pixels|border-left-pixel|border-left-pixe|border-left-pix|border-left-pi|border-left-p|border-left-chars|border-left-char|border-left-cha|border-left-ch|border-left-c|border-bottom-pixels|border-bottom-pixel|border-bottom-pixe|border-bottom-pix|border-bottom-pi|border-bottom-p|border-bottom-chars|border-bottom-char|border-bottom-cha|border-bottom-ch|border-bottom-c|block-iteration-display|blank|bgcolor|bgcolo|bgcol|bgco|bgc|before-table|before-rowid|before-buffer|batch-size|batch-mode|basic-logging|base-ade|background|backgroun|backgrou|backgro|backgr|backg|back)\\b(?![\\#\\$\\-\\_\\%\\&])",
3991
3967
  "captures": {
3992
3968
  "1": {
3993
3969
  "name": "punctuation.separator.colon.abl"
@@ -3998,7 +3974,7 @@
3998
3974
  }
3999
3975
  },
4000
3976
  "handle-attributes-C": {
4001
- "match": "(?i)(:)(cursor-offset|cursor-line|cursor-char|current-window|current-row-modified|current-result-row|current-response-info|current-request-info|current-iteration|current-environment|current-environmen|current-environme|current-environm|current-environ|current-enviro|current-envir|current-envi|current-env|current-column|current-changed|crc-value|crc-valu|crc-val|cpterm|cpstream|cprcodeout|cprcodein|cpprint|cplog|cpinternal|cpinterna|cpintern|cpinter|cpinte|cpint|cpcoll|cpcase|coverage|convert-3d-colors|convert-3d-color|convert-3d-colo|convert-3d-col|convert-3d-co|convert-3d-c|convert-3d-|convert-3d|control-box|context-help-id|context-help-file|context-help|config-name|complete|com-handle|column-scrolling|column-scrollin|column-scrolli|column-scroll|column-scrol|column-scro|column-scr|column-sc|column-resizable|column-read-only|column-pfcolor|column-pfcolo|column-pfcol|column-pfco|column-pfc|column-movable|column-label|column-labe|column-lab|column-font|column-fgcolor|column-fgcolo|column-fgcol|column-fgco|column-fgc|column-dcolor|column-bgcolor|column-bgcolo|column-bgcol|column-bgco|column-bgc|column|codepage|code|client-workstation|client-type|client-tty|client-connection-id|class-type|child-num|child-buffer|checked|charset|centered|centere|center|case-sensitive|case-sensitiv|case-sensiti|case-sensit|case-sensi|case-sens|case-sen|careful-paint|cancelled|cancel-button|can-write|can-writ|can-read|can-do-domain-support|can-delete|can-delet|can-dele|can-create|can-creat|can-crea|call-type|call-name|cache)\\s*",
3977
+ "match": "(?i)(:)(cursor-offset|cursor-line|cursor-char|current-window|current-row-modified|current-result-row|current-response-info|current-request-info|current-iteration|current-environment|current-environmen|current-environme|current-environm|current-environ|current-enviro|current-envir|current-envi|current-env|current-column|current-changed|crc-value|crc-valu|crc-val|cpterm|cpstream|cprcodeout|cprcodein|cpprint|cplog|cpinternal|cpinterna|cpintern|cpinter|cpinte|cpint|cpcoll|cpcase|coverage|convert-3d-colors|convert-3d-color|convert-3d-colo|convert-3d-col|convert-3d-co|convert-3d-c|convert-3d-|convert-3d|control-box|context-help-id|context-help-file|context-help|config-name|complete|com-handle|column-scrolling|column-scrollin|column-scrolli|column-scroll|column-scrol|column-scro|column-scr|column-sc|column-resizable|column-read-only|column-pfcolor|column-pfcolo|column-pfcol|column-pfco|column-pfc|column-movable|column-label|column-labe|column-lab|column-font|column-fgcolor|column-fgcolo|column-fgcol|column-fgco|column-fgc|column-dcolor|column-bgcolor|column-bgcolo|column-bgcol|column-bgco|column-bgc|column|codepage|code|client-workstation|client-type|client-tty|client-connection-id|class-type|child-num|child-buffer|checked|charset|centered|centere|center|case-sensitive|case-sensitiv|case-sensiti|case-sensit|case-sensi|case-sens|case-sen|careful-paint|cancelled|cancel-button|can-write|can-writ|can-read|can-do-domain-support|can-delete|can-delet|can-dele|can-create|can-creat|can-crea|call-type|call-name|cache)\\b(?![\\#\\$\\-\\_\\%\\&])",
4002
3978
  "captures": {
4003
3979
  "1": {
4004
3980
  "name": "punctuation.separator.colon.abl"
@@ -4009,7 +3985,7 @@
4009
3985
  }
4010
3986
  },
4011
3987
  "handle-attributes-D": {
4012
- "match": "(?i)(:)(dynamic|drop-target|drag-enabled|down|domain-type|domain-name|domain-description|display-type|display-typ|display-ty|display-timezone|display-t|disable-auto-zap|directory|description|descriptio|descripti|descript|delimiter|default-value|default-string|default-commit|default-button|default-butto|default-butt|default-but|default-buffer-handle|default|decimals|debug-alert|deblank|dde-topic|dde-name|dde-item|dde-id|dde-i|dde-error|dcolor|dbname|db-references|db-list|db-context|date-format|date-forma|date-form|date-for|date-fo|date-f|dataset|data-type|data-typ|data-ty|data-t|data-source-rowid|data-source-modified|data-source-complete-map|data-source|data-entry-return|data-entry-retur|data-entry-retu|data-entry-ret)\\s*",
3988
+ "match": "(?i)(:)(dynamic|drop-target|drag-enabled|down|domain-type|domain-name|domain-description|display-type|display-typ|display-ty|display-timezone|display-t|disable-auto-zap|directory|description|descriptio|descripti|descript|delimiter|default-value|default-string|default-commit|default-button|default-butto|default-butt|default-but|default-buffer-handle|default|decimals|debug-alert|deblank|dde-topic|dde-name|dde-item|dde-id|dde-i|dde-error|dcolor|dbname|db-references|db-list|db-context|date-format|date-forma|date-form|date-for|date-fo|date-f|dataset|data-type|data-typ|data-ty|data-t|data-source-rowid|data-source-modified|data-source-complete-map|data-source|data-entry-return|data-entry-retur|data-entry-retu|data-entry-ret)\\b(?![\\#\\$\\-\\_\\%\\&])",
4013
3989
  "captures": {
4014
3990
  "1": {
4015
3991
  "name": "punctuation.separator.colon.abl"
@@ -4020,7 +3996,7 @@
4020
3996
  }
4021
3997
  },
4022
3998
  "handle-attributes-E": {
4023
- "match": "(?i)(:)(extent|expandable|expand|exit-code|execution-log|exclusive-id|event-type|event-typ|event-ty|event-t|event-procedure-context|event-procedure|event-handler-object|event-handler|event-group-id|error-string|error-stack-trace|error-row|error-object-detail|error-object|error-column|error-colum|error-colu|error-col|error|entry-types-list|entity-expansion-limit|end-user-prompt|encryption-salt|encoding|enabled|empty|edit-can-undo|edit-can-paste|edge-pixels|edge-pixel|edge-pixe|edge-pix|edge-pi|edge-p|edge-chars|edge-char|edge-cha|edge-ch|edge-c)\\s*",
3999
+ "match": "(?i)(:)(extent|expandable|expand|exit-code|execution-log|exclusive-id|event-type|event-typ|event-ty|event-t|event-procedure-context|event-procedure|event-handler-object|event-handler|event-group-id|error-string|error-stack-trace|error-row|error-object-detail|error-object|error-column|error-colum|error-colu|error-col|error|entry-types-list|entity-expansion-limit|end-user-prompt|encryption-salt|encoding|enabled|empty|edit-can-undo|edit-can-paste|edge-pixels|edge-pixel|edge-pixe|edge-pix|edge-pi|edge-p|edge-chars|edge-char|edge-cha|edge-ch|edge-c)\\b(?![\\#\\$\\-\\_\\%\\&])",
4024
4000
  "captures": {
4025
4001
  "1": {
4026
4002
  "name": "punctuation.separator.colon.abl"
@@ -4031,7 +4007,7 @@
4031
4007
  }
4032
4008
  },
4033
4009
  "handle-attributes-F": {
4034
- "match": "(?i)(:)(function|full-width-pixels|full-width-pixel|full-width-pixe|full-width-pix|full-width-pi|full-width-p|full-width-chars|full-width-char|full-width-cha|full-width-ch|full-width-c|full-width-|full-width|full-pathname|full-pathnam|full-pathna|full-pathn|full-height-pixels|full-height-pixel|full-height-pixe|full-height-pix|full-height-pi|full-height-p|full-height-chars|full-height-char|full-height-cha|full-height-ch|full-height-c|frequency|frame-y|frame-x|frame-spacing|frame-spacin|frame-spaci|frame-spac|frame-spa|frame-row|frame-name|frame-col|frame|fram|fragment|fragmen|forward-only|formatted|formatte|format|forma|form-long-input|form-input|form|foreign-key-hidden|foreground|foregroun|foregrou|foregro|foregr|foreg|fore|font|focused-row-selected|focused-row|flat-button|fit-last-column|first-tab-item|first-tab-ite|first-tab-it|first-tab-i|first-socket|first-server-socket|first-server|first-serve|first-serv|first-query|first-procedure|first-procedur|first-procedu|first-proced|first-proce|first-proc|first-object|first-form|first-dataset|first-data-source|first-column|first-child|first-buffer|first-async-request|first-async-reques|first-async-reque|first-async-requ|first-async-req|first-async-re|first-async-r|first-async-|first-async|filled|fill-where-string|fill-mode|file-type|file-size|file-offset|file-offse|file-offs|file-off|file-name|file-mod-time|file-mod-tim|file-mod-ti|file-mod-t|file-mod-date|file-mod-dat|file-mod-da|file-mod-d|file-create-time|file-create-tim|file-create-ti|file-create-t|file-create-date|file-create-dat|file-create-da|file-create-d|fgcolor|fgcolo|fgcol|fgco|fgc)\\s*",
4010
+ "match": "(?i)(:)(function|full-width-pixels|full-width-pixel|full-width-pixe|full-width-pix|full-width-pi|full-width-p|full-width-chars|full-width-char|full-width-cha|full-width-ch|full-width-c|full-width-|full-width|full-pathname|full-pathnam|full-pathna|full-pathn|full-height-pixels|full-height-pixel|full-height-pixe|full-height-pix|full-height-pi|full-height-p|full-height-chars|full-height-char|full-height-cha|full-height-ch|full-height-c|frequency|frame-y|frame-x|frame-spacing|frame-spacin|frame-spaci|frame-spac|frame-spa|frame-row|frame-name|frame-col|frame|fram|fragment|fragmen|forward-only|formatted|formatte|format|forma|form-long-input|form-input|form|foreign-key-hidden|foreground|foregroun|foregrou|foregro|foregr|foreg|fore|font|focused-row-selected|focused-row|flat-button|fit-last-column|first-tab-item|first-tab-ite|first-tab-it|first-tab-i|first-socket|first-server-socket|first-server|first-serve|first-serv|first-query|first-procedure|first-procedur|first-procedu|first-proced|first-proce|first-proc|first-object|first-form|first-dataset|first-data-source|first-column|first-child|first-buffer|first-async-request|first-async-reques|first-async-reque|first-async-requ|first-async-req|first-async-re|first-async-r|first-async-|first-async|filled|fill-where-string|fill-mode|file-type|file-size|file-offset|file-offse|file-offs|file-off|file-name|file-mod-time|file-mod-tim|file-mod-ti|file-mod-t|file-mod-date|file-mod-dat|file-mod-da|file-mod-d|file-create-time|file-create-tim|file-create-ti|file-create-t|file-create-date|file-create-dat|file-create-da|file-create-d|fgcolor|fgcolo|fgcol|fgco|fgc)\\b(?![\\#\\$\\-\\_\\%\\&])",
4035
4011
  "captures": {
4036
4012
  "1": {
4037
4013
  "name": "punctuation.separator.colon.abl"
@@ -4042,7 +4018,7 @@
4042
4018
  }
4043
4019
  },
4044
4020
  "handle-attributes-G": {
4045
- "match": "(?i)(:)(group-box|grid-visible|grid-unit-width-pixels|grid-unit-width-pixel|grid-unit-width-pixe|grid-unit-width-pix|grid-unit-width-pi|grid-unit-width-p|grid-unit-width-chars|grid-unit-width-char|grid-unit-width-cha|grid-unit-width-ch|grid-unit-width-c|grid-unit-height-pixels|grid-unit-height-pixel|grid-unit-height-pixe|grid-unit-height-pix|grid-unit-height-pi|grid-unit-height-p|grid-unit-height-chars|grid-unit-height-char|grid-unit-height-cha|grid-unit-height-ch|grid-unit-height-c|grid-snap|grid-factor-vertical|grid-factor-vertica|grid-factor-vertic|grid-factor-verti|grid-factor-vert|grid-factor-ver|grid-factor-ve|grid-factor-v|grid-factor-horizontal|grid-factor-horizonta|grid-factor-horizont|grid-factor-horizon|grid-factor-horizo|grid-factor-horiz|grid-factor-hori|grid-factor-hor|grid-factor-ho|grid-factor-h|graphic-edge|graphic-edg|graphic-ed|graphic-e)\\s*",
4021
+ "match": "(?i)(:)(group-box|grid-visible|grid-unit-width-pixels|grid-unit-width-pixel|grid-unit-width-pixe|grid-unit-width-pix|grid-unit-width-pi|grid-unit-width-p|grid-unit-width-chars|grid-unit-width-char|grid-unit-width-cha|grid-unit-width-ch|grid-unit-width-c|grid-unit-height-pixels|grid-unit-height-pixel|grid-unit-height-pixe|grid-unit-height-pix|grid-unit-height-pi|grid-unit-height-p|grid-unit-height-chars|grid-unit-height-char|grid-unit-height-cha|grid-unit-height-ch|grid-unit-height-c|grid-snap|grid-factor-vertical|grid-factor-vertica|grid-factor-vertic|grid-factor-verti|grid-factor-vert|grid-factor-ver|grid-factor-ve|grid-factor-v|grid-factor-horizontal|grid-factor-horizonta|grid-factor-horizont|grid-factor-horizon|grid-factor-horizo|grid-factor-horiz|grid-factor-hori|grid-factor-hor|grid-factor-ho|grid-factor-h|graphic-edge|graphic-edg|graphic-ed|graphic-e)\\b(?![\\#\\$\\-\\_\\%\\&])",
4046
4022
  "captures": {
4047
4023
  "1": {
4048
4024
  "name": "punctuation.separator.colon.abl"
@@ -4053,7 +4029,7 @@
4053
4029
  }
4054
4030
  },
4055
4031
  "handle-attributes-H": {
4056
- "match": "(?i)(:)(hwnd|html-title-end|html-title-begin|html-header-end|html-header-begin|html-frame-end|html-frame-begin|html-end-of-page|html-end-of-line|html-charset|horizontal|horizonta|horizont|horizon|horizo|horiz|hori|hidden|help|height-pixels|height-pixel|height-pixe|height-pix|height-pi|height-p|height-chars|height-char|height-cha|height-ch|height-c|has-records|has-lobs|handler|handle)\\s*",
4032
+ "match": "(?i)(:)(hwnd|html-title-end|html-title-begin|html-header-end|html-header-begin|html-frame-end|html-frame-begin|html-end-of-page|html-end-of-line|html-charset|horizontal|horizonta|horizont|horizon|horizo|horiz|hori|hidden|help|height-pixels|height-pixel|height-pixe|height-pix|height-pi|height-p|height-chars|height-char|height-cha|height-ch|height-c|has-records|has-lobs|handler|handle)\\b(?![\\#\\$\\-\\_\\%\\&])",
4057
4033
  "captures": {
4058
4034
  "1": {
4059
4035
  "name": "punctuation.separator.colon.abl"
@@ -4064,7 +4040,7 @@
4064
4040
  }
4065
4041
  },
4066
4042
  "handle-attributes-I": {
4067
- "match": "(?i)(:)(items-per-row|is-xml|is-partitioned|is-partitione|is-parameter-set|is-open|is-multi-tenant|is-json|is-class|is-clas|internal-entries|instantiating-procedure|input-value|inner-lines|inner-chars|initial|inherit-fgcolor|inherit-fgcolo|inherit-fgcol|inherit-fgco|inherit-fgc|inherit-bgcolor|inherit-bgcolo|inherit-bgcol|inherit-bgco|inherit-bgc|index-information|index-informatio|index-informati|index-informat|index-informa|index-inform|index-infor|index-info|index|in-handle|immediate-display|image-up|image-insensitive|image-down|image|ignore-current-modified|ignore-current-modifie|ignore-current-modifi|ignore-current-modif|ignore-current-modi|ignore-current-mod|icon|icfparameter|icfparamete|icfparamet|icfparame|icfparam)\\s*",
4043
+ "match": "(?i)(:)(items-per-row|is-xml|is-partitioned|is-partitione|is-parameter-set|is-open|is-multi-tenant|is-json|is-class|is-clas|internal-entries|instantiating-procedure|input-value|inner-lines|inner-chars|initial|inherit-fgcolor|inherit-fgcolo|inherit-fgcol|inherit-fgco|inherit-fgc|inherit-bgcolor|inherit-bgcolo|inherit-bgcol|inherit-bgco|inherit-bgc|index-information|index-informatio|index-informati|index-informat|index-informa|index-inform|index-infor|index-info|index|in-handle|immediate-display|image-up|image-insensitive|image-down|image|ignore-current-modified|ignore-current-modifie|ignore-current-modifi|ignore-current-modif|ignore-current-modi|ignore-current-mod|icon|icfparameter|icfparamete|icfparamet|icfparame|icfparam)\\b(?![\\#\\$\\-\\_\\%\\&])",
4068
4044
  "captures": {
4069
4045
  "1": {
4070
4046
  "name": "punctuation.separator.colon.abl"
@@ -4075,7 +4051,7 @@
4075
4051
  }
4076
4052
  },
4077
4053
  "handle-attributes-K": {
4078
- "match": "(?i)(:)(keys|key|keep-security-cache|keep-frame-z-order|keep-frame-z-orde|keep-frame-z-ord|keep-frame-z-or|keep-frame-z-o|keep-frame-z-|keep-frame-z|keep-connection-open)\\s*",
4054
+ "match": "(?i)(:)(keys|key|keep-security-cache|keep-frame-z-order|keep-frame-z-orde|keep-frame-z-ord|keep-frame-z-or|keep-frame-z-o|keep-frame-z-|keep-frame-z|keep-connection-open)\\b(?![\\#\\$\\-\\_\\%\\&])",
4079
4055
  "captures": {
4080
4056
  "1": {
4081
4057
  "name": "punctuation.separator.colon.abl"
@@ -4086,7 +4062,7 @@
4086
4062
  }
4087
4063
  },
4088
4064
  "handle-attributes-L": {
4089
- "match": "(?i)(:)(login-state|login-host|login-expiration-timestamp|logging-level|logfile-name|log-threshold|log-entry-types|locked|locator-type|locator-system-id|locator-public-id|locator-line-number|locator-column-number|local-version-info|local-port|local-name|local-host|literal-question|listings|list-items|list-item-pairs|line|library-calling-convention|library|length|last-tab-item|last-tab-ite|last-tab-it|last-tab-i|last-socket|last-server-socket|last-server|last-serve|last-serv|last-procedure|last-procedur|last-procedu|last-proced|last-proce|last-object|last-form|last-child|last-batch|last-async-request|last-async-reques|last-async-reque|last-async-requ|last-async-req|last-async-re|last-async-r|last-async-|last-async|large-to-small|large|languages|language|labels-have-colons|labels|label-font|label-fgcolor|label-fgcolo|label-fgcol|label-fgco|label-fgc|label-dcolor|label-dcolo|label-dcol|label-dco|label-dc|label-bgcolor|label-bgcolo|label-bgcol|label-bgco|label-bgc|label)\\s*",
4065
+ "match": "(?i)(:)(login-state|login-host|login-expiration-timestamp|logging-level|logfile-name|log-threshold|log-entry-types|locked|locator-type|locator-system-id|locator-public-id|locator-line-number|locator-column-number|local-version-info|local-port|local-name|local-host|literal-question|listings|list-items|list-item-pairs|line|library-calling-convention|library|length|last-tab-item|last-tab-ite|last-tab-it|last-tab-i|last-socket|last-server-socket|last-server|last-serve|last-serv|last-procedure|last-procedur|last-procedu|last-proced|last-proce|last-object|last-form|last-child|last-batch|last-async-request|last-async-reques|last-async-reque|last-async-requ|last-async-req|last-async-re|last-async-r|last-async-|last-async|large-to-small|large|languages|language|labels-have-colons|labels|label-font|label-fgcolor|label-fgcolo|label-fgcol|label-fgco|label-fgc|label-dcolor|label-dcolo|label-dcol|label-dco|label-dc|label-bgcolor|label-bgcolo|label-bgcol|label-bgco|label-bgc|label)\\b(?![\\#\\$\\-\\_\\%\\&])",
4090
4066
  "captures": {
4091
4067
  "1": {
4092
4068
  "name": "punctuation.separator.colon.abl"
@@ -4097,7 +4073,7 @@
4097
4073
  }
4098
4074
  },
4099
4075
  "handle-attributes-M": {
4100
- "match": "(?i)(:)(must-understand|multitasking-interval|multiple|multi-compile|movable|mouse-pointer|mouse-pointe|mouse-point|mouse-poin|mouse-poi|mouse-po|mouse-p|modified|min-width-pixels|min-width-pixel|min-width-pixe|min-width-pix|min-width-pi|min-width-p|min-width-chars|min-width-char|min-width-cha|min-width-ch|min-width-c|min-value|min-valu|min-val|min-schema-marshal|min-height-pixels|min-height-pixel|min-height-pixe|min-height-pix|min-height-pi|min-height-p|min-height-chars|min-height-char|min-height-cha|min-height-ch|min-height-c|min-column-width-pixels|min-column-width-pixel|min-column-width-pixe|min-column-width-pix|min-column-width-pi|min-column-width-p|min-column-width-chars|min-column-width-char|min-column-width-cha|min-column-width-ch|min-column-width-c|min-button|message-area-font|message-area|merge-by-field|menu-mouse|menu-mous|menu-mou|menu-mo|menu-m|menu-key|menu-ke|menu-k|menu-bar|maximum-level|max-width-pixels|max-width-pixel|max-width-pixe|max-width-pix|max-width-pi|max-width-p|max-width-chars|max-width-char|max-width-cha|max-width-ch|max-width-c|max-value|max-valu|max-val|max-height-pixels|max-height-pixel|max-height-pixe|max-height-pix|max-height-pi|max-height-p|max-height-chars|max-height-char|max-height-cha|max-height-ch|max-height-c|max-data-guess|max-chars|max-button|manual-highlight|mandatory)\\s*",
4076
+ "match": "(?i)(:)(must-understand|multitasking-interval|multiple|multi-compile|movable|mouse-pointer|mouse-pointe|mouse-point|mouse-poin|mouse-poi|mouse-po|mouse-p|modified|min-width-pixels|min-width-pixel|min-width-pixe|min-width-pix|min-width-pi|min-width-p|min-width-chars|min-width-char|min-width-cha|min-width-ch|min-width-c|min-value|min-valu|min-val|min-schema-marshal|min-height-pixels|min-height-pixel|min-height-pixe|min-height-pix|min-height-pi|min-height-p|min-height-chars|min-height-char|min-height-cha|min-height-ch|min-height-c|min-column-width-pixels|min-column-width-pixel|min-column-width-pixe|min-column-width-pix|min-column-width-pi|min-column-width-p|min-column-width-chars|min-column-width-char|min-column-width-cha|min-column-width-ch|min-column-width-c|min-button|message-area-font|message-area|merge-by-field|menu-mouse|menu-mous|menu-mou|menu-mo|menu-m|menu-key|menu-ke|menu-k|menu-bar|maximum-level|max-width-pixels|max-width-pixel|max-width-pixe|max-width-pix|max-width-pi|max-width-p|max-width-chars|max-width-char|max-width-cha|max-width-ch|max-width-c|max-value|max-valu|max-val|max-height-pixels|max-height-pixel|max-height-pixe|max-height-pix|max-height-pi|max-height-p|max-height-chars|max-height-char|max-height-cha|max-height-ch|max-height-c|max-data-guess|max-chars|max-button|manual-highlight|mandatory)\\b(?![\\#\\$\\-\\_\\%\\&])",
4101
4077
  "captures": {
4102
4078
  "1": {
4103
4079
  "name": "punctuation.separator.colon.abl"
@@ -4108,7 +4084,7 @@
4108
4084
  }
4109
4085
  },
4110
4086
  "handle-attributes-N": {
4111
- "match": "(?i)(:)(numeric-separator|numeric-separato|numeric-separat|numeric-separa|numeric-separ|numeric-sepa|numeric-sep|numeric-format|numeric-forma|numeric-form|numeric-for|numeric-fo|numeric-f|numeric-decimal-point|numeric-decimal-poin|numeric-decimal-poi|numeric-decimal-po|numeric-decimal-p|numeric-decimal-|numeric-decimal|numeric-decima|numeric-decim|numeric-deci|numeric-dec|num-visible-columns|num-visible-column|num-visible-colum|num-visible-colu|num-visible-col|num-top-buffers|num-to-retain|num-tabs|num-source-buffers|num-selected-widgets|num-selected-rows|num-results|num-replaced|num-replace|num-replac|num-repla|num-repl|num-relations|num-references|num-parameters|num-messages|num-log-files|num-locked-columns|num-locked-column|num-locked-colum|num-locked-colu|num-locked-col|num-lines|num-iterations|num-items|num-header-entries|num-formats|num-fields|num-entries|num-dropped-files|num-columns|num-column|num-colum|num-colu|num-col|num-children|num-child-relations|num-buttons|num-button|num-butto|num-butt|num-but|num-buffers|nonamespace-schema-location|node-value|no-validate|no-validat|no-valida|no-valid|no-vali|no-val|no-schema-marshal|no-focus|no-empty-space|no-current-value|next-tab-item|next-tab-ite|next-sibling|next-rowid|next-column|next-colum|next-colu|next-col|new-row|new|nested|needs-prompt|needs-appserver-prompt|namespace-uri|namespace-prefix|name)\\s*",
4087
+ "match": "(?i)(:)(numeric-separator|numeric-separato|numeric-separat|numeric-separa|numeric-separ|numeric-sepa|numeric-sep|numeric-format|numeric-forma|numeric-form|numeric-for|numeric-fo|numeric-f|numeric-decimal-point|numeric-decimal-poin|numeric-decimal-poi|numeric-decimal-po|numeric-decimal-p|numeric-decimal-|numeric-decimal|numeric-decima|numeric-decim|numeric-deci|numeric-dec|num-visible-columns|num-visible-column|num-visible-colum|num-visible-colu|num-visible-col|num-top-buffers|num-to-retain|num-tabs|num-source-buffers|num-selected-widgets|num-selected-rows|num-results|num-replaced|num-replace|num-replac|num-repla|num-repl|num-relations|num-references|num-parameters|num-messages|num-log-files|num-locked-columns|num-locked-column|num-locked-colum|num-locked-colu|num-locked-col|num-lines|num-iterations|num-items|num-header-entries|num-formats|num-fields|num-entries|num-dropped-files|num-columns|num-column|num-colum|num-colu|num-col|num-children|num-child-relations|num-buttons|num-button|num-butto|num-butt|num-but|num-buffers|nonamespace-schema-location|node-value|no-validate|no-validat|no-valida|no-valid|no-vali|no-val|no-schema-marshal|no-focus|no-empty-space|no-current-value|next-tab-item|next-tab-ite|next-sibling|next-rowid|next-column|next-colum|next-colu|next-col|new-row|new|nested|needs-prompt|needs-appserver-prompt|namespace-uri|namespace-prefix|name)\\b(?![\\#\\$\\-\\_\\%\\&])",
4112
4088
  "captures": {
4113
4089
  "1": {
4114
4090
  "name": "punctuation.separator.colon.abl"
@@ -4119,7 +4095,7 @@
4119
4095
  }
4120
4096
  },
4121
4097
  "handle-attributes-O": {
4122
- "match": "(?i)(:)(owner-document|owner|overlay|origin-rowid|origin-handle|ordinal|options|on-frame-border|on-frame-borde|on-frame-bord|on-frame-bor|on-frame-bo|on-frame-b|on-frame-|on-frame)\\s*",
4098
+ "match": "(?i)(:)(owner-document|owner|overlay|origin-rowid|origin-handle|ordinal|options|on-frame-border|on-frame-borde|on-frame-bord|on-frame-bor|on-frame-bo|on-frame-b|on-frame-|on-frame)\\b(?![\\#\\$\\-\\_\\%\\&])",
4123
4099
  "captures": {
4124
4100
  "1": {
4125
4101
  "name": "punctuation.separator.colon.abl"
@@ -4130,7 +4106,7 @@
4130
4106
  }
4131
4107
  },
4132
4108
  "handle-attributes-P": {
4133
- "match": "(?i)(:)(published-events|public-id|proxy-userid|proxy-password|proxy|progress-source|progress-sourc|progress-sour|progress-sou|progress-so|progress-s|profiling|procedure-type|procedure-name|private-data|private-dat|private-da|private-d|printer-port|printer-name|printer-hdc|printer-control-handle|primary-passphrase|primary|prev-tab-item|prev-tab-ite|prev-tab-it|prev-tab-i|prev-sibling|prev-column|prev-colum|prev-colu|prev-col|prepared|prepare-string|prefer-dataset|position|popup-only|popup-onl|popup-on|popup-o|popup-menu|popup-men|popup-me|popup-m|pixels-per-row|pixels-per-column|pixels-per-colum|pixels-per-colu|pixels-per-col|pfcolor|pfcolo|pfcol|pfco|pfc|persistent-procedure|persistent-cache-disabled|persistent|persisten|persiste|persist|pbe-key-rounds|pbe-hash-algorithm|pbe-hash-algorith|pbe-hash-algorit|pbe-hash-algori|pbe-hash-algor|pbe-hash-algo|pbe-hash-alg|pathname|password-field|parse-status|parent-relation|parent-relatio|parent-relati|parent-relat|parent-rela|parent-rel|parent-id-relation|parent-fields-before|parent-fields-after|parent-buffer|parent|parameter|paramete|paramet|parame|param|page-top|page-bottom|page-botto|page-bott|page-bot)\\s*",
4109
+ "match": "(?i)(:)(published-events|public-id|proxy-userid|proxy-password|proxy|progress-source|progress-sourc|progress-sour|progress-sou|progress-so|progress-s|profiling|procedure-type|procedure-name|private-data|private-dat|private-da|private-d|printer-port|printer-name|printer-hdc|printer-control-handle|primary-passphrase|primary|prev-tab-item|prev-tab-ite|prev-tab-it|prev-tab-i|prev-sibling|prev-column|prev-colum|prev-colu|prev-col|prepared|prepare-string|prefer-dataset|position|popup-only|popup-onl|popup-on|popup-o|popup-menu|popup-men|popup-me|popup-m|pixels-per-row|pixels-per-column|pixels-per-colum|pixels-per-colu|pixels-per-col|pfcolor|pfcolo|pfcol|pfco|pfc|persistent-procedure|persistent-cache-disabled|persistent|persisten|persiste|persist|pbe-key-rounds|pbe-hash-algorithm|pbe-hash-algorith|pbe-hash-algorit|pbe-hash-algori|pbe-hash-algor|pbe-hash-algo|pbe-hash-alg|pathname|password-field|parse-status|parent-relation|parent-relatio|parent-relati|parent-relat|parent-rela|parent-rel|parent-id-relation|parent-fields-before|parent-fields-after|parent-buffer|parent|parameter|paramete|paramet|parame|param|page-top|page-bottom|page-botto|page-bott|page-bot)\\b(?![\\#\\$\\-\\_\\%\\&])",
4134
4110
  "captures": {
4135
4111
  "1": {
4136
4112
  "name": "punctuation.separator.colon.abl"
@@ -4141,7 +4117,7 @@
4141
4117
  }
4142
4118
  },
4143
4119
  "handle-attributes-Q": {
4144
- "match": "(?i)(:)(quit|query-off-end|query|qualified-user-id)\\s*",
4120
+ "match": "(?i)(:)(quit|query-off-end|query|qualified-user-id)\\b(?![\\#\\$\\-\\_\\%\\&])",
4145
4121
  "captures": {
4146
4122
  "1": {
4147
4123
  "name": "punctuation.separator.colon.abl"
@@ -4152,7 +4128,7 @@
4152
4128
  }
4153
4129
  },
4154
4130
  "handle-attributes-R": {
4155
- "match": "(?i)(:)(rowid|row-state|row-resizable|row-markers|row-marker|row-marke|row-mark|row-mar|row-ma|row-height-pixels|row-height-pixel|row-height-pixe|row-height-pix|row-height-pi|row-height-p|row-height-chars|row-height-char|row-height-cha|row-height-ch|row-height-c|row|rounded|roles|role|return-value-dll-type|return-value-data-type|return-value|return-valu|return-val|return-inserted|return-inserte|return-insert|return-inser|return-inse|return-ins|retain-shape|retain-shap|retain-sha|retain-sh|retain-s|restart-rowid|restart-row|response-info|resize|resizable|resizabl|resizab|resiza|request-info|reposition|remote-port|remote-host|remote|relations-active|relation-fields|relation-field|relation-fiel|relation-fie|relation-fi|rejected|refreshable|recursive|record-length|record-lengt|record-leng|record-len|recid|read-only|radio-buttons)\\s*",
4131
+ "match": "(?i)(:)(rowid|row-state|row-resizable|row-markers|row-marker|row-marke|row-mark|row-mar|row-ma|row-height-pixels|row-height-pixel|row-height-pixe|row-height-pix|row-height-pi|row-height-p|row-height-chars|row-height-char|row-height-cha|row-height-ch|row-height-c|row|rounded|roles|role|return-value-dll-type|return-value-data-type|return-value|return-valu|return-val|return-inserted|return-inserte|return-insert|return-inser|return-inse|return-ins|retain-shape|retain-shap|retain-sha|retain-sh|retain-s|restart-rowid|restart-row|response-info|resize|resizable|resizabl|resizab|resiza|request-info|reposition|remote-port|remote-host|remote|relations-active|relation-fields|relation-field|relation-fiel|relation-fie|relation-fi|rejected|refreshable|recursive|record-length|record-lengt|record-leng|record-len|recid|read-only|radio-buttons)\\b(?![\\#\\$\\-\\_\\%\\&])",
4156
4132
  "captures": {
4157
4133
  "1": {
4158
4134
  "name": "punctuation.separator.colon.abl"
@@ -4163,7 +4139,7 @@
4163
4139
  }
4164
4140
  },
4165
4141
  "handle-attributes-S": {
4166
- "match": "(?i)(:)(system-id|system-alert-boxes|system-alert-boxe|system-alert-box|system-alert-bo|system-alert-b|system-alert-|system-alert|symmetric-support|symmetric-encryption-key|symmetric-encryption-iv|symmetric-encryption-algorithm|symmetric-encryption-aad|suppress-warnings-list|suppress-warnings|suppress-warning|suppress-warnin|suppress-warni|suppress-warn|suppress-war|suppress-wa|suppress-w|suppress-namespace-processing|super-procedures|super-procedure|super-procedur|super-procedu|super-proced|super-proce|super-proc|subtype|strict-entity-resolution|strict|stretch-to-fit|stream|stopped|stoppe|stop-object|stop|status-area-font|status-area|statistics|state-detail|startup-parameters|standalone|ssl-server-name|sort-number|sort-ascending|sort|soap-version|soap-fault-subcode|soap-fault-string|soap-fault-role|soap-fault-node|soap-fault-misunderstood-header|soap-fault-detail|soap-fault-code|soap-fault-actor|small-title|small-icon|skip-deleted-record|skip-deleted-recor|skip-deleted-reco|skip-deleted-rec|singleton|single-run|signature-value|side-labels|side-label-handle|side-label-handl|side-label-hand|side-label-han|side-label-ha|side-label-h|show-in-taskbar|show-in-taskba|show-in-taskb|show-in-task|session-id|session-end|server-operating-mode|server-connection-id|server-connection-context|server-connection-contex|server-connection-conte|server-connection-cont|server-connection-con|server-connection-co|server-connection-bound-request|server-connection-bound-reques|server-connection-bound-reque|server-connection-bound-requ|server-connection-bound-req|server-connection-bound-re|server-connection-bound|server-connection-boun|server-connection-bou|server-connection-bo|server|serialize-name|serialize-hidden|separators|separator-fgcolor|separator-fgcolo|separator-fgcol|separator-fgco|separator-fgc|sensitive|selection-text|selection-start|selection-end|selected|selectable|seal-timestamp|scrollbar-vertical|scrollbar-vertica|scrollbar-vertic|scrollbar-verti|scrollbar-vert|scrollbar-ver|scrollbar-ve|scrollbar-v|scrollbar-horizontal|scrollbar-horizonta|scrollbar-horizont|scrollbar-horizon|scrollbar-horizo|scrollbar-horiz|scrollbar-hori|scrollbar-hor|scrollbar-ho|scrollbar-h|scrollable|scroll-bars|screen-value|screen-valu|screen-val|screen-lines|schema-path|schema-marshal|schema-location|schema-change|save-where-string)\\s*",
4142
+ "match": "(?i)(:)(system-id|system-alert-boxes|system-alert-boxe|system-alert-box|system-alert-bo|system-alert-b|system-alert-|system-alert|symmetric-support|symmetric-encryption-key|symmetric-encryption-iv|symmetric-encryption-algorithm|symmetric-encryption-aad|suppress-warnings-list|suppress-warnings|suppress-warning|suppress-warnin|suppress-warni|suppress-warn|suppress-war|suppress-wa|suppress-w|suppress-namespace-processing|super-procedures|super-procedure|super-procedur|super-procedu|super-proced|super-proce|super-proc|subtype|strict-entity-resolution|strict|stretch-to-fit|stream|stopped|stoppe|stop-object|stop|status-area-font|status-area|statistics|state-detail|startup-parameters|standalone|ssl-server-name|sort-number|sort-ascending|sort|soap-version|soap-fault-subcode|soap-fault-string|soap-fault-role|soap-fault-node|soap-fault-misunderstood-header|soap-fault-detail|soap-fault-code|soap-fault-actor|small-title|small-icon|skip-deleted-record|skip-deleted-recor|skip-deleted-reco|skip-deleted-rec|singleton|single-run|signature-value|side-labels|side-label-handle|side-label-handl|side-label-hand|side-label-han|side-label-ha|side-label-h|show-in-taskbar|show-in-taskba|show-in-taskb|show-in-task|session-id|session-end|server-operating-mode|server-connection-id|server-connection-context|server-connection-contex|server-connection-conte|server-connection-cont|server-connection-con|server-connection-co|server-connection-bound-request|server-connection-bound-reques|server-connection-bound-reque|server-connection-bound-requ|server-connection-bound-req|server-connection-bound-re|server-connection-bound|server-connection-boun|server-connection-bou|server-connection-bo|server|serialize-name|serialize-hidden|separators|separator-fgcolor|separator-fgcolo|separator-fgcol|separator-fgco|separator-fgc|sensitive|selection-text|selection-start|selection-end|selected|selectable|seal-timestamp|scrollbar-vertical|scrollbar-vertica|scrollbar-vertic|scrollbar-verti|scrollbar-vert|scrollbar-ver|scrollbar-ve|scrollbar-v|scrollbar-horizontal|scrollbar-horizonta|scrollbar-horizont|scrollbar-horizon|scrollbar-horizo|scrollbar-horiz|scrollbar-hori|scrollbar-hor|scrollbar-ho|scrollbar-h|scrollable|scroll-bars|screen-value|screen-valu|screen-val|screen-lines|schema-path|schema-marshal|schema-location|schema-change|save-where-string)\\b(?![\\#\\$\\-\\_\\%\\&])",
4167
4143
  "captures": {
4168
4144
  "1": {
4169
4145
  "name": "punctuation.separator.colon.abl"
@@ -4174,7 +4150,7 @@
4174
4150
  }
4175
4151
  },
4176
4152
  "handle-attributes-T": {
4177
- "match": "(?i)(:)(type|transparent|transparen|transpare|transpar|transaction|transactio|transacti|transact|trans-init-procedure|trans-init-procedur|trans-init-procedu|trans-init-proced|trans-init-proce|trans-init-proc|tracking-changes|tracing|trace-filter|top-only|top-nav-query|tooltips|tooltip|toggle-box|title-font|title-fon|title-fo|title-fgcolor|title-fgcolo|title-fgcol|title-fgco|title-fgc|title-dcolor|title-dcolo|title-dcol|title-dco|title-dc|title-bgcolor|title-bgcolo|title-bgcol|title-bgco|title-bgc|title|timezone|time-source|tic-marks|three-d|thread-safe|text-selected|temp-directory|temp-director|temp-directo|temp-direct|temp-direc|temp-dire|temp-dir|table-number|table-numbe|table-numb|table-num|table-list|table-handle|table-crc-list|table|tab-stop|tab-position)\\s*",
4153
+ "match": "(?i)(:)(type|transparent|transparen|transpare|transpar|transaction|transactio|transacti|transact|trans-init-procedure|trans-init-procedur|trans-init-procedu|trans-init-proced|trans-init-proce|trans-init-proc|tracking-changes|tracing|trace-filter|top-only|top-nav-query|tooltips|tooltip|toggle-box|title-font|title-fon|title-fo|title-fgcolor|title-fgcolo|title-fgcol|title-fgco|title-fgc|title-dcolor|title-dcolo|title-dcol|title-dco|title-dc|title-bgcolor|title-bgcolo|title-bgcol|title-bgco|title-bgc|title|timezone|time-source|tic-marks|three-d|thread-safe|text-selected|temp-directory|temp-director|temp-directo|temp-direct|temp-direc|temp-dire|temp-dir|table-number|table-numbe|table-numb|table-num|table-list|table-handle|table-crc-list|table|tab-stop|tab-position)\\b(?![\\#\\$\\-\\_\\%\\&])",
4178
4154
  "captures": {
4179
4155
  "1": {
4180
4156
  "name": "punctuation.separator.colon.abl"
@@ -4185,7 +4161,7 @@
4185
4161
  }
4186
4162
  },
4187
4163
  "handle-attributes-U": {
4188
- "match": "(?i)(:)(user-id|url-userid|url-password|url|unique-match|unique-id|undo-throw-scope|undo)\\s*",
4164
+ "match": "(?i)(:)(user-id|url-userid|url-password|url|unique-match|unique-id|undo-throw-scope|undo)\\b(?![\\#\\$\\-\\_\\%\\&])",
4189
4165
  "captures": {
4190
4166
  "1": {
4191
4167
  "name": "punctuation.separator.colon.abl"
@@ -4196,7 +4172,7 @@
4196
4172
  }
4197
4173
  },
4198
4174
  "handle-attributes-V": {
4199
- "match": "(?i)(:)(visible|virtual-width-pixels|virtual-width-pixel|virtual-width-pixe|virtual-width-pix|virtual-width-pi|virtual-width-p|virtual-width-chars|virtual-width-char|virtual-width-cha|virtual-width-ch|virtual-width-c|virtual-height-pixels|virtual-height-pixel|virtual-height-pixe|virtual-height-pix|virtual-height-pi|virtual-height-p|virtual-height-chars|virtual-height-char|virtual-height-cha|virtual-height-ch|virtual-height-c|view-first-column-on-reopen|view-as|version|value|validation-enabled|validate-xml|validate-message|validate-expression|validate-expressio|v6display)\\s*",
4175
+ "match": "(?i)(:)(visible|virtual-width-pixels|virtual-width-pixel|virtual-width-pixe|virtual-width-pix|virtual-width-pi|virtual-width-p|virtual-width-chars|virtual-width-char|virtual-width-cha|virtual-width-ch|virtual-width-c|virtual-height-pixels|virtual-height-pixel|virtual-height-pixe|virtual-height-pix|virtual-height-pi|virtual-height-p|virtual-height-chars|virtual-height-char|virtual-height-cha|virtual-height-ch|virtual-height-c|view-first-column-on-reopen|view-as|version|value|validation-enabled|validate-xml|validate-message|validate-expression|validate-expressio|v6display)\\b(?![\\#\\$\\-\\_\\%\\&])",
4200
4176
  "captures": {
4201
4177
  "1": {
4202
4178
  "name": "punctuation.separator.colon.abl"
@@ -4207,7 +4183,7 @@
4207
4183
  }
4208
4184
  },
4209
4185
  "handle-attributes-W": {
4210
- "match": "(?i)(:)(write-status|work-area-y|work-area-x|work-area-width-pixels|work-area-width-pixel|work-area-width-pixe|work-area-width-pix|work-area-width-pi|work-area-width-p|work-area-height-pixels|work-area-height-pixel|work-area-height-pixe|work-area-height-pix|work-area-height-pi|work-area-height-p|word-wrap|window-system|window-syste|window-syst|window-sys|window-state|window-stat|window-sta|window|width-pixels|width-pixel|width-pixe|width-pix|width-pi|width-p|width-chars|width-char|width-cha|width-ch|width-c|widget-leave|widget-leav|widget-lea|widget-le|widget-l|widget-id|widget-enter|widget-ente|widget-ent|widget-en|widget-e|where-string|wc-admin-app|warning)\\s*",
4186
+ "match": "(?i)(:)(write-status|work-area-y|work-area-x|work-area-width-pixels|work-area-width-pixel|work-area-width-pixe|work-area-width-pix|work-area-width-pi|work-area-width-p|work-area-height-pixels|work-area-height-pixel|work-area-height-pixe|work-area-height-pix|work-area-height-pi|work-area-height-p|word-wrap|window-system|window-syste|window-syst|window-sys|window-state|window-stat|window-sta|window|width-pixels|width-pixel|width-pixe|width-pix|width-pi|width-p|width-chars|width-char|width-cha|width-ch|width-c|widget-leave|widget-leav|widget-lea|widget-le|widget-l|widget-id|widget-enter|widget-ente|widget-ent|widget-en|widget-e|where-string|wc-admin-app|warning)\\b(?![\\#\\$\\-\\_\\%\\&])",
4211
4187
  "captures": {
4212
4188
  "1": {
4213
4189
  "name": "punctuation.separator.colon.abl"
@@ -4218,7 +4194,7 @@
4218
4194
  }
4219
4195
  },
4220
4196
  "handle-attributes-X": {
4221
- "match": "(?i)(:)(xml-suppress-namespace-processing|xml-strict-entity-resolution|xml-schema-path|xml-schema-pat|xml-node-type|xml-node-name|xml-entity-expansion-limit|xml-data-type|xcode-session-key|x-document|x)\\s*",
4197
+ "match": "(?i)(:)(xml-suppress-namespace-processing|xml-strict-entity-resolution|xml-schema-path|xml-schema-pat|xml-node-type|xml-node-name|xml-entity-expansion-limit|xml-data-type|xcode-session-key|x-document|x)\\b(?![\\#\\$\\-\\_\\%\\&])",
4222
4198
  "captures": {
4223
4199
  "1": {
4224
4200
  "name": "punctuation.separator.colon.abl"
@@ -4229,7 +4205,7 @@
4229
4205
  }
4230
4206
  },
4231
4207
  "handle-attributes-Y": {
4232
- "match": "(?i)(:)(year-offset|y)\\s*",
4208
+ "match": "(?i)(:)(year-offset|y)\\b(?![\\#\\$\\-\\_\\%\\&])",
4233
4209
  "captures": {
4234
4210
  "1": {
4235
4211
  "name": "punctuation.separator.colon.abl"