abl-tmlanguage 1.3.5 → 1.3.7

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.
@@ -438,6 +438,9 @@
438
438
  {
439
439
  "include": "#record-buffer-functions"
440
440
  },
441
+ {
442
+ "include": "#can-find"
443
+ },
441
444
  {
442
445
  "include": "#release"
443
446
  },
@@ -880,7 +883,7 @@
880
883
  },
881
884
  "define-class": {
882
885
  "name": "meta.define.class.abl",
883
- "begin": "(?i)\\b(class)\\b",
886
+ "begin": "(?i)\\b(?<![\\#\\$\\-\\_\\%\\&])(class)\\b(?![\\#\\$\\-\\_\\%\\&])",
884
887
  "beginCaptures": {
885
888
  "1": {
886
889
  "name": "keyword.other.abl"
@@ -1048,7 +1051,8 @@
1048
1051
  "name": "meta.brace.round.js"
1049
1052
  },
1050
1053
  "new-class": {
1051
- "begin": "(?i)\\b(new)\\b",
1054
+ "comment": "A dash/minus is not a word boundary, so we need to make sure we don't capture constructs like new-variable",
1055
+ "begin": "(?i)\\b(new)\\b(?!\\-)",
1052
1056
  "beginCaptures": {
1053
1057
  "1": {
1054
1058
  "name": "keyword.other.abl"
@@ -1176,18 +1180,35 @@
1176
1180
  }
1177
1181
  },
1178
1182
  "of-phrase": {
1179
- "match": "(?i)\\s*([\\w\\-#$%]+(\\.[\\w\\-#$%]+)?)\\s+(of)\\s+([\\w\\-#$%]+(\\.[\\w\\-#$%]+)?)\\s*",
1180
- "captures": {
1181
- "1": {
1182
- "name": "storage.data.table.abl"
1183
- },
1184
- "3": {
1185
- "name": "keyword.other.abl"
1183
+ "patterns": [
1184
+ {
1185
+ "comment": " This matches OF <table>",
1186
+ "match": "(?i)\\s*(of)\\s+([\\w\\-#$%]+(\\.[\\w\\-#$%]+)?)\\s*",
1187
+ "captures": {
1188
+ "1": {
1189
+ "name": "keyword.other.abl"
1190
+ },
1191
+ "2": {
1192
+ "name": "storage.data.table.abl"
1193
+ }
1194
+ }
1186
1195
  },
1187
- "4": {
1188
- "name": "storage.data.table.abl"
1196
+ {
1197
+ "comment": " This matches <table> OF <table>",
1198
+ "match": "(?i)\\s*([\\w\\-#$%]+(\\.[\\w\\-#$%]+)?)\\s+(of)\\s+([\\w\\-#$%]+(\\.[\\w\\-#$%]+)?)\\s*",
1199
+ "captures": {
1200
+ "1": {
1201
+ "name": "storage.data.table.abl"
1202
+ },
1203
+ "3": {
1204
+ "name": "keyword.other.abl"
1205
+ },
1206
+ "4": {
1207
+ "name": "storage.data.table.abl"
1208
+ }
1209
+ }
1189
1210
  }
1190
- }
1211
+ ]
1191
1212
  },
1192
1213
  "for-join": {
1193
1214
  "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",
@@ -1435,12 +1456,18 @@
1435
1456
  {
1436
1457
  "include": "#record-buffer-functions"
1437
1458
  },
1459
+ {
1460
+ "include": "#can-find"
1461
+ },
1438
1462
  {
1439
1463
  "include": "#comment"
1440
1464
  },
1441
1465
  {
1442
1466
  "include": "#break-group"
1443
1467
  },
1468
+ {
1469
+ "include": "#block-undo-leave-next-retry"
1470
+ },
1444
1471
  {
1445
1472
  "include": "#operator"
1446
1473
  },
@@ -2332,6 +2359,64 @@
2332
2359
  }
2333
2360
  }
2334
2361
  },
2362
+ "can-find": {
2363
+ "comment": "This captures CAN-FIND( until either the closing brace, or a keyword like WHERE or a lock status. Based on the doc at https://docs.progress.com/bundle/abl-reference/page/CAN-FIND-function.html",
2364
+ "begin": "(?i)\\s*(can-find)\\s*(\\()",
2365
+ "beginCaptures": {
2366
+ "1": {
2367
+ "name": "support.function.abl"
2368
+ },
2369
+ "2": {
2370
+ "name": "meta.brace.round.js"
2371
+ }
2372
+ },
2373
+ "end": "(?i)\\b(?=\\)|where|no-lock|share-lock|using|no-prefetch|no-wait)\\s*",
2374
+ "patterns": [
2375
+ {
2376
+ "include": "#parens"
2377
+ },
2378
+ {
2379
+ "include": "#comment"
2380
+ },
2381
+ {
2382
+ "include": "#string"
2383
+ },
2384
+ {
2385
+ "include": "#numeric"
2386
+ },
2387
+ {
2388
+ "match": "(?i)\\b(first|last)\\b",
2389
+ "captures": {
2390
+ "1": {
2391
+ "name": "keyword.other.abl"
2392
+ }
2393
+ }
2394
+ },
2395
+ {
2396
+ "include": "#use-index"
2397
+ },
2398
+ {
2399
+ "include": "#of-phrase"
2400
+ },
2401
+ {
2402
+ "include": "#db-dot-table"
2403
+ },
2404
+ {
2405
+ "include": "#db-dot-table-dot-field"
2406
+ }
2407
+ ]
2408
+ },
2409
+ "use-index": {
2410
+ "match": "(?i)\\b(use-index)\\s+([a-z][a-z0-9\\-\\_\\$]*)\\b",
2411
+ "captures": {
2412
+ "1": {
2413
+ "name": "keyword.other.abl"
2414
+ },
2415
+ "2": {
2416
+ "name": "storage.data.table.abl"
2417
+ }
2418
+ }
2419
+ },
2335
2420
  "access-modifier": {
2336
2421
  "match": "(?i)\\s*(package-private|private|package-protected|protected|public|static|override|abstract|final)\\b",
2337
2422
  "captures": {
@@ -2628,7 +2713,6 @@
2628
2713
  }
2629
2714
  },
2630
2715
  "on-error-endkey-stop": {
2631
- "name": "meta.block.branch.abl",
2632
2716
  "match": "(?i)\\s*(on)\\s+(endkey|error|stop|quit)\\s+(undo)\\s*(?!leave|next|retry|return|throw)([a-z0-9\\-\\_\\$]*)?\\s*",
2633
2717
  "captures": {
2634
2718
  "1": {
@@ -2645,8 +2729,19 @@
2645
2729
  }
2646
2730
  }
2647
2731
  },
2732
+ "block-undo-leave-next-retry": {
2733
+ "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*",
2735
+ "captures": {
2736
+ "1": {
2737
+ "name": "keyword.other.abl"
2738
+ },
2739
+ "2": {
2740
+ "name": "meta.block.label.abl"
2741
+ }
2742
+ }
2743
+ },
2648
2744
  "branch-leave-next-retry-throw": {
2649
- "name": "meta.block.branch.abl",
2650
2745
  "match": "(?i)\\s*(?<=,)\\s*(leave|next|retry|throw)\\s*(?!on)([a-z0-9\\-\\_\\$]*)?\\s*",
2651
2746
  "captures": {
2652
2747
  "1": {
@@ -2689,7 +2784,6 @@
2689
2784
  "name": "constant.character.escape.abl"
2690
2785
  },
2691
2786
  "branch-return-value-double": {
2692
- "name": "meta.block.branch.abl",
2693
2787
  "comment": "RETURN \"return-value\"",
2694
2788
  "begin": "(?i)\\s*(return)(\\s+(error))?\\s+(\")",
2695
2789
  "beginCaptures": {
@@ -2716,7 +2810,6 @@
2716
2810
  ]
2717
2811
  },
2718
2812
  "branch-return-no-apply": {
2719
- "name": "meta.block.branch.abl",
2720
2813
  "comment": "RETURN NO-APPLY",
2721
2814
  "match": "(?i)\\s*(return)\\s+(no-apply)\\s*",
2722
2815
  "captures": {
@@ -2729,7 +2822,6 @@
2729
2822
  }
2730
2823
  },
2731
2824
  "branch-return-error-expression": {
2732
- "name": "meta.block.branch.abl",
2733
2825
  "begin": "(?i)\\s*(return)\\s+(error)\\s*",
2734
2826
  "beginCaptures": {
2735
2827
  "1": {
@@ -2816,7 +2908,6 @@
2816
2908
  ]
2817
2909
  },
2818
2910
  "branch-options": {
2819
- "name": "meta.block.branch.abl",
2820
2911
  "patterns": [
2821
2912
  {
2822
2913
  "include": "#on-error-endkey-stop"
@@ -2963,7 +3054,7 @@
2963
3054
  "include": "#parens"
2964
3055
  },
2965
3056
  {
2966
- "match": "(?i)\\s*(input-output|output|input|table-handle|dataset-handle|APPEND|BY-VALUE|BY-REFERENCE|BIND)\\s*",
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
3058
  "captures": {
2968
3059
  "1": {
2969
3060
  "name": "keyword.other.abl"
@@ -3004,6 +3095,9 @@
3004
3095
  {
3005
3096
  "include": "#abl-system-handles"
3006
3097
  },
3098
+ {
3099
+ "include": "#can-find"
3100
+ },
3007
3101
  {
3008
3102
  "include": "#abl-functions"
3009
3103
  },
@@ -3085,7 +3179,7 @@
3085
3179
  },
3086
3180
  "variable-name": {
3087
3181
  "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)",
3088
- "match": "(?<=^|\\s|\\[|\\()([a-zA-Z][a-zA-Z0-9\\#\\$\\-\\_\\%\\&]*)",
3182
+ "match": "(?<=^|\\s|\\[|\\(|,)([a-zA-Z][a-zA-Z0-9\\#\\$\\-\\_\\%\\&]*)(?=\\.\\s|\\.$|,|:|\\s|\\)|\\]|\\[|$)",
3089
3183
  "name": "variable.other.abl"
3090
3184
  },
3091
3185
  "extent": {
@@ -3581,7 +3675,8 @@
3581
3675
  ]
3582
3676
  },
3583
3677
  "keywords-A": {
3584
- "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",
3678
+ "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(?![\\#\\$\\-\\_\\%\\&])",
3585
3680
  "captures": {
3586
3681
  "1": {
3587
3682
  "name": "keyword.other.abl"
@@ -3589,7 +3684,8 @@
3589
3684
  }
3590
3685
  },
3591
3686
  "keywords-B": {
3592
- "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",
3687
+ "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(?![\\#\\$\\-\\_\\%\\&])",
3593
3689
  "captures": {
3594
3690
  "1": {
3595
3691
  "name": "keyword.other.abl"
@@ -3597,7 +3693,8 @@
3597
3693
  }
3598
3694
  },
3599
3695
  "keywords-C": {
3600
- "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",
3696
+ "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(?![\\#\\$\\-\\_\\%\\&])",
3601
3698
  "captures": {
3602
3699
  "1": {
3603
3700
  "name": "keyword.other.abl"
@@ -3605,7 +3702,8 @@
3605
3702
  }
3606
3703
  },
3607
3704
  "keywords-D": {
3608
- "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|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",
3705
+ "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(?![\\#\\$\\-\\_\\%\\&])",
3609
3707
  "captures": {
3610
3708
  "1": {
3611
3709
  "name": "keyword.other.abl"
@@ -3613,7 +3711,8 @@
3613
3711
  }
3614
3712
  },
3615
3713
  "keywords-E": {
3616
- "match": "(?i)\\b(extract|external|extent|extended|export|explicit|expire|exit|exists|execute|exclusive-web-user|exclusive-web-use|exclusive-web-us|exclusive-web-u|exclusive-web-|exclusive-web|exclusive-lock|exclusive-loc|exclusive-lo|exclusive-l|exclusive|except|events|event-handler-context|event|escape|error-status|error-statu|error-stat|error|eq|enum|entry|enter-menubar|endkey|end-search|end-row-resize|end-resize|end-move|end-key|end-error|end-box-selection|end|enable|empty-selection|empty|else|editor-tab|editor-backtab|editor|editing|edge|echo|each)\\b",
3714
+ "comment": "The keyword must not have a trailing variable character (one of #$-_%&)",
3715
+ "match": "(?i)\\b(extract|external|extent|extended|export|explicit|expire|exit|exists|execute|exclusive-web-user|exclusive-web-use|exclusive-web-us|exclusive-web-u|exclusive-web-|exclusive-web|exclusive-lock|exclusive-loc|exclusive-lo|exclusive-l|exclusive|except|events|event-handler-context|event|escape|error-status|error-statu|error-stat|error|eq|enum|entry|enter-menubar|endkey|end-search|end-row-resize|end-resize|end-move|end-key|end-error|end-box-selection|end|enable|empty-selection|empty|else|editor-tab|editor-backtab|editor|editing|edge|echo|each)\\b(?![\\#\\$\\-\\_\\%\\&])",
3617
3716
  "captures": {
3618
3717
  "1": {
3619
3718
  "name": "keyword.other.abl"
@@ -3621,7 +3720,8 @@
3621
3720
  }
3622
3721
  },
3623
3722
  "keywords-F": {
3624
- "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",
3723
+ "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(?![\\#\\$\\-\\_\\%\\&])",
3625
3725
  "captures": {
3626
3726
  "1": {
3627
3727
  "name": "keyword.other.abl"
@@ -3629,7 +3729,8 @@
3629
3729
  }
3630
3730
  },
3631
3731
  "keywords-G": {
3632
- "match": "(?i)\\b(gt|group|grid-unit-width|grid-unit-height|grid-set|grayed|grant-archive|grant|goto|go-on|go|global|getbyte|get-text-width|get-text-height|get-key-value|get-key-valu|get-key-val|get-file|get-dir|get-attr-call-type|get|generate-md5|ge)\\b",
3732
+ "comment": "The keyword must not have a trailing variable character (one of #$-_%&)",
3733
+ "match": "(?i)\\b(gt|group|grid-unit-width|grid-unit-height|grid-set|grayed|grant-archive|grant|goto|go-on|go|global|getbyte|get-text-width|get-text-height|get-key-value|get-key-valu|get-key-val|get-file|get-dir|get-attr-call-type|get|generate-md5|ge)\\b(?![\\#\\$\\-\\_\\%\\&])",
3633
3734
  "captures": {
3634
3735
  "1": {
3635
3736
  "name": "keyword.other.abl"
@@ -3637,7 +3738,8 @@
3637
3738
  }
3638
3739
  },
3639
3740
  "keywords-H": {
3640
- "match": "(?i)\\b(host-byte-order|horiz-scroll-drag|horiz-home|horiz-end|home|hint|hide|helpfile-name|helpfile-nam|helpfile-na|helpfile-n|help-topic|help-context|help-contex|help-conte|help-cont|help-con|height|header|having)\\b",
3741
+ "comment": "The keyword must not have a trailing variable character (one of #$-_%&)",
3742
+ "match": "(?i)\\b(host-byte-order|horiz-scroll-drag|horiz-home|horiz-end|home|hint|hide|helpfile-name|helpfile-nam|helpfile-na|helpfile-n|help-topic|help-context|help-contex|help-conte|help-cont|help-con|height|header|having)\\b(?![\\#\\$\\-\\_\\%\\&])",
3641
3743
  "captures": {
3642
3744
  "1": {
3643
3745
  "name": "keyword.other.abl"
@@ -3645,7 +3747,8 @@
3645
3747
  }
3646
3748
  },
3647
3749
  "keywords-I": {
3648
- "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",
3750
+ "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(?![\\#\\$\\-\\_\\%\\&])",
3649
3752
  "captures": {
3650
3753
  "1": {
3651
3754
  "name": "keyword.other.abl"
@@ -3653,7 +3756,8 @@
3653
3756
  }
3654
3757
  },
3655
3758
  "keywords-J": {
3656
- "match": "(?i)\\b(join-on-select|join-by-sqldb|join)\\b",
3759
+ "comment": "The keyword must not have a trailing variable character (one of #$-_%&)",
3760
+ "match": "(?i)\\b(join-on-select|join-by-sqldb|join)\\b(?![\\#\\$\\-\\_\\%\\&])",
3657
3761
  "captures": {
3658
3762
  "1": {
3659
3763
  "name": "keyword.other.abl"
@@ -3661,7 +3765,8 @@
3661
3765
  }
3662
3766
  },
3663
3767
  "keywords-K": {
3664
- "match": "(?i)\\b(keycache-join|key-label|key-function|key-functio|key-functi|key-funct|key-func|key-code|keep-tab-order|keep-messages)\\b",
3768
+ "comment": "The keyword must not have a trailing variable character (one of #$-_%&)",
3769
+ "match": "(?i)\\b(keycache-join|key-label|key-function|key-functio|key-functi|key-funct|key-func|key-code|keep-tab-order|keep-messages)\\b(?![\\#\\$\\-\\_\\%\\&])",
3665
3770
  "captures": {
3666
3771
  "1": {
3667
3772
  "name": "keyword.other.abl"
@@ -3669,7 +3774,8 @@
3669
3774
  }
3670
3775
  },
3671
3776
  "keywords-L": {
3672
- "match": "(?i)\\b(lt|lookahead|longchar|longcha|longch|long|log-manager|log-id|locked|lob-dir|load-result-into|load-picture|load-from|load|little-endian|listing|listin|listi|line-up|line-right|line-left|line-down|like-sequential|like|length|left-end|left-aligned|left-aligne|left-align|left|leave|leak-detection|leading|le|last-key|last-event|last-even|landscape|label-pfcolor|label-pfcolo|label-pfcol|label-pfco|label-pfc|label)\\b",
3777
+ "comment": "The keyword must not have a trailing variable character (one of #$-_%&)",
3778
+ "match": "(?i)\\b(lt|lower|lookahead|longchar|longcha|longch|long|log-manager|log-id|locked|lob-dir|load-result-into|load-picture|load-from|load|little-endian|listing|listin|listi|line-up|line-right|line-left|line-down|like-sequential|like|length|left-end|left-aligned|left-aligne|left-align|left|leave|leak-detection|leading|le|last-key|last-event|last-even|landscape|label-pfcolor|label-pfcolo|label-pfcol|label-pfco|label-pfc|label)\\b(?![\\#\\$\\-\\_\\%\\&])",
3673
3779
  "captures": {
3674
3780
  "1": {
3675
3781
  "name": "keyword.other.abl"
@@ -3677,7 +3783,8 @@
3677
3783
  }
3678
3784
  },
3679
3785
  "keywords-M": {
3680
- "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",
3786
+ "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(?![\\#\\$\\-\\_\\%\\&])",
3681
3788
  "captures": {
3682
3789
  "1": {
3683
3790
  "name": "keyword.other.abl"
@@ -3685,7 +3792,8 @@
3685
3792
  }
3686
3793
  },
3687
3794
  "keywords-N": {
3688
- "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",
3795
+ "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(?![\\#\\$\\-\\_\\%\\&])",
3689
3797
  "captures": {
3690
3798
  "1": {
3691
3799
  "name": "keyword.other.abl"
@@ -3693,7 +3801,8 @@
3693
3801
  }
3694
3802
  },
3695
3803
  "keywords-O": {
3696
- "match": "(?i)\\b(override|overlay|output|outer-join|outer|out-of-data|otherwise|os400|os2|os-rename|os-dir|os-delete|os-create-dir|os-copy|os-command|os-append|orientation|ordered-join|or|options-file|option|open-line-above|open|on|ole-names-locale|ole-names-local|ole-names-loca|ole-invoke-locale|ole-invoke-local|ole-invoke-loca|old|ok-cancel|ok|off-home|off-end|off|of|octet_length|object)\\b",
3804
+ "comment": "The keyword must not have a trailing variable character (one of #$-_%&)",
3805
+ "match": "(?i)\\b(override|overlay|output|outer-join|outer|out-of-data|otherwise|os400|os2|os-rename|os-dir|os-delete|os-create-dir|os-copy|os-command|os-append|orientation|ordered-join|or|options-file|option|open-line-above|open|on|ole-names-locale|ole-names-local|ole-names-loca|ole-invoke-locale|ole-invoke-local|ole-invoke-loca|old|ok-cancel|ok|off-home|off-end|off|of|octet_length|object)\\b(?![\\#\\$\\-\\_\\%\\&])",
3697
3806
  "captures": {
3698
3807
  "1": {
3699
3808
  "name": "keyword.other.abl"
@@ -3701,7 +3810,8 @@
3701
3810
  }
3702
3811
  },
3703
3812
  "keywords-P": {
3704
- "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",
3813
+ "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(?![\\#\\$\\-\\_\\%\\&])",
3705
3815
  "captures": {
3706
3816
  "1": {
3707
3817
  "name": "keyword.other.abl"
@@ -3709,7 +3819,8 @@
3709
3819
  }
3710
3820
  },
3711
3821
  "keywords-Q": {
3712
- "match": "(?i)\\b(quit|question|query-tuning|query)\\b",
3822
+ "comment": "The keyword must not have a trailing variable character (one of #$-_%&)",
3823
+ "match": "(?i)\\b(quit|question|query-tuning|query)\\b(?![\\#\\$\\-\\_\\%\\&])",
3713
3824
  "captures": {
3714
3825
  "1": {
3715
3826
  "name": "keyword.other.abl"
@@ -3717,7 +3828,8 @@
3717
3828
  }
3718
3829
  },
3719
3830
  "keywords-R": {
3720
- "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",
3831
+ "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(?![\\#\\$\\-\\_\\%\\&])",
3721
3833
  "captures": {
3722
3834
  "1": {
3723
3835
  "name": "keyword.other.abl"
@@ -3725,7 +3837,8 @@
3725
3837
  }
3726
3838
  },
3727
3839
  "keywords-S": {
3728
- "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",
3840
+ "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(?![\\#\\$\\-\\_\\%\\&])",
3729
3842
  "captures": {
3730
3843
  "1": {
3731
3844
  "name": "keyword.other.abl"
@@ -3733,7 +3846,8 @@
3733
3846
  }
3734
3847
  },
3735
3848
  "keywords-T": {
3736
- "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",
3849
+ "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(?![\\#\\$\\-\\_\\%\\&])",
3737
3851
  "captures": {
3738
3852
  "1": {
3739
3853
  "name": "keyword.other.abl"
@@ -3741,7 +3855,8 @@
3741
3855
  }
3742
3856
  },
3743
3857
  "keywords-U": {
3744
- "match": "(?i)\\b(utc-offset|using|user|use-widget-pool|use-underline|use-text|use-revvideo|use-index|use-filename|use-dict-exps|use-dict-exp|use-dict-ex|use-dict-e|use-dict-|use-dict|use-dic|use|upper|update|up|unsubscribe|unsigned-short|unsigned-long|unsigned-integer|unsigned-int64|unsigned-byte|unload|unless-hidden|unix-end|unix|unique|union|unformatted|unformatte|unformatt|unformat|unforma|unform|undo|underline|underlin|underli|underl|unbuffered|unbuffere|unbuffer|unbuffe|unbuff)\\b",
3858
+ "comment": "The keyword must not have a trailing variable character (one of #$-_%&)",
3859
+ "match": "(?i)\\b(utc-offset|using|user|use-widget-pool|use-underline|use-text|use-revvideo|use-index|use-filename|use-dict-exps|use-dict-exp|use-dict-ex|use-dict-e|use-dict-|use-dict|use-dic|use|upper|update|up|unsubscribe|unsigned-short|unsigned-long|unsigned-integer|unsigned-int64|unsigned-byte|unload|unless-hidden|unix-end|unix|unique|union|unformatted|unformatte|unformatt|unformat|unforma|unform|undo|underline|underlin|underli|underl|unbuffered|unbuffere|unbuffer|unbuffe|unbuff)\\b(?![\\#\\$\\-\\_\\%\\&])",
3745
3860
  "captures": {
3746
3861
  "1": {
3747
3862
  "name": "keyword.other.abl"
@@ -3749,7 +3864,8 @@
3749
3864
  }
3750
3865
  },
3751
3866
  "keywords-V": {
3752
- "match": "(?i)\\b(void|vms|virtual-width|virtual-height|view|vertical|vertica|vertic|verti|vert|verbose|verbos|verbo|verb|variable|variabl|variab|varia|vari|var|values|value-changed|validate|v6frame)\\b",
3867
+ "comment": "The keyword must not have a trailing variable character (one of #$-_%&)",
3868
+ "match": "(?i)\\b(void|vms|virtual-width|virtual-height|view-as|view|vertical|vertica|vertic|verti|vert|verbose|verbos|verbo|verb|variable|variabl|variab|varia|vari|var|values|value-changed|validate|v6frame)\\b(?![\\#\\$\\-\\_\\%\\&])",
3753
3869
  "captures": {
3754
3870
  "1": {
3755
3871
  "name": "keyword.other.abl"
@@ -3757,7 +3873,8 @@
3757
3873
  }
3758
3874
  },
3759
3875
  "keywords-W": {
3760
- "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",
3876
+ "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(?![\\#\\$\\-\\_\\%\\&])",
3761
3878
  "captures": {
3762
3879
  "1": {
3763
3880
  "name": "keyword.other.abl"
@@ -3765,7 +3882,8 @@
3765
3882
  }
3766
3883
  },
3767
3884
  "keywords-X": {
3768
- "match": "(?i)\\b(xref-xml|xref|xor|xml-node-name|xcode|x-of|x-noderef|x-document)\\b",
3885
+ "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(?![\\#\\$\\-\\_\\%\\&])",
3769
3887
  "captures": {
3770
3888
  "1": {
3771
3889
  "name": "keyword.other.abl"
@@ -3773,7 +3891,8 @@
3773
3891
  }
3774
3892
  },
3775
3893
  "keywords-Y": {
3776
- "match": "(?i)\\b(yes-no-cancel|yes-no|yes|year-offset|year|y-of)\\b",
3894
+ "comment": "The keyword must not have a trailing variable character (one of #$-_%&)",
3895
+ "match": "(?i)\\b(yes-no-cancel|yes-no|yes|year-offset|year|y-of)\\b(?![\\#\\$\\-\\_\\%\\&])",
3777
3896
  "captures": {
3778
3897
  "1": {
3779
3898
  "name": "keyword.other.abl"
@@ -4749,7 +4868,7 @@
4749
4868
  },
4750
4869
  "abl-functions-F": {
4751
4870
  "name": "meta.function-call.abl",
4752
- "begin": "(?i)\\s*(frame-value|frame-valu|frame-val|frame-row|frame-name|frame-line|frame-index|frame-inde|frame-file|frame-field|frame-down|frame-db|frame-col|first-of|first|fill)\\s*(?=\\()",
4871
+ "begin": "(?i)\\s*(frame-value|frame-valu|frame-val|frame-row|frame-name|frame-line|frame-index|frame-inde|frame-file|frame-field|frame-down|frame-db|frame-col|first-of|first|fill)\\s*(?=\\()",
4753
4872
  "beginCaptures": {
4754
4873
  "1": {
4755
4874
  "name": "support.function.abl"
@@ -4889,7 +5008,7 @@
4889
5008
  },
4890
5009
  "abl-functions-N": {
4891
5010
  "name": "meta.function-call.abl",
4892
- "begin": "(?i)\\s*(num-results|num-entries|num-dbs|num-aliases|num-aliase|num-alias|num-alia|num-ali|now|not entered|normalize|next-value|new)\\s*(?=\\()",
5011
+ "begin": "(?i)\\s*(num-results|num-entries|num-dbs|num-aliases|num-aliase|num-alias|num-alia|num-ali|now|not entered|normalize|next-value|new)\\s*(?=\\()",
4893
5012
  "beginCaptures": {
4894
5013
  "1": {
4895
5014
  "name": "support.function.abl"
@@ -4989,7 +5108,7 @@
4989
5108
  },
4990
5109
  "abl-functions-S": {
4991
5110
  "name": "meta.function-call.abl",
4992
- "begin": "(?i)\\s*(super|substring|substrin|substri|substr|substitute|substitut|substitu|substit|substi|subst|string|ssl-server-name|sqrt|sha1-digest|setuserid|setuseri|setuser|set-size|set-effective-tenant|set-db-client|seek|search|sdbname|screen-lines)\\s*(?=\\()",
5111
+ "begin": "(?i)\\s*(super|substring|substrin|substri|substr|substitute|substitut|substitu|substit|substi|subst|string|ssl-server-name|sqrt|skip|sha1-digest|setuserid|setuseri|setuser|set-size|set-effective-tenant|set-db-client|seek|search|sdbname|screen-lines)\\s*(?=\\()",
4993
5112
  "beginCaptures": {
4994
5113
  "1": {
4995
5114
  "name": "support.function.abl"
package/index.js CHANGED
@@ -42,6 +42,7 @@ alsoStatements.push('ambiguous');
42
42
  alsoStatements.push('available');
43
43
  alsoStatements.push('centered');
44
44
  alsoStatements.push('delete');
45
+ alsoStatements.push('delimiter');
45
46
  alsoStatements.push('first');
46
47
  alsoStatements.push('format');
47
48
  alsoStatements.push('initial');
@@ -55,9 +56,9 @@ alsoStatements.push('row');
55
56
  alsoStatements.push('serialize-name');
56
57
  alsoStatements.push('single-run');
57
58
  alsoStatements.push('transaction');
59
+ alsoStatements.push('view-as');
58
60
  alsoStatements.push('xml-node-name');
59
61
 
60
-
61
62
  let functionsNotStatements = [];
62
63
  functionsNotStatements.push('set-size');
63
64
 
@@ -65,6 +66,7 @@ let alsoFunctions = [];
65
66
  alsoFunctions.push('lower');
66
67
  alsoFunctions.push('relation-fields');
67
68
  alsoFunctions.push('return');
69
+ alsoFunctions.push('skip');
68
70
  alsoFunctions.push('substitute');
69
71
  alsoFunctions.push('this-object');
70
72
  alsoFunctions.push('value');
@@ -184,12 +186,6 @@ lineReaderKeywords.on('line', line => {
184
186
 
185
187
  function addToBlock(charIdx, fullKw, addKw) {
186
188
 
187
- if (alsoFunctions.includes(fullKw)) {
188
- if (!functionBlocks[charIdx].includes(addKw)) {
189
- functionBlocks[charIdx].push(addKw);
190
- }
191
- }
192
-
193
189
  if (attributeBlocks[charIdx].includes(fullKw)) {
194
190
  if (!attributeBlocks[charIdx].includes(addKw)) {
195
191
  attributeBlocks[charIdx].push(addKw);
@@ -207,6 +203,13 @@ function addToBlock(charIdx, fullKw, addKw) {
207
203
  keywordBlocks[charIdx].push(addKw);
208
204
  }
209
205
  }
206
+
207
+ if (alsoFunctions.includes(fullKw)) {
208
+ if (!functionBlocks[charIdx].includes(addKw)) {
209
+ functionBlocks[charIdx].push(addKw);
210
+ }
211
+ }
212
+
210
213
  }
211
214
 
212
215
  lineReaderKeywords.on('close', () => {
@@ -220,8 +223,8 @@ lineReaderKeywords.on('close', () => {
220
223
 
221
224
  result['keywords-' + String.fromCharCode(97 + zz).toUpperCase()] =
222
225
  {
223
- //match: "(?i)(?<![\\w\\-\\:\\.])(" + keywordBlocks[zz].sort(reverseSort).join('|') + ")(?![\\w\\-])",
224
- match: "(?i)\\b(" + keywordBlocks[zz].sort(reverseSort).join('|') + ")\\b",
226
+ comment: "The keyword must not have a trailing variable character (one of #$-_%&)",
227
+ match: "(?i)\\b(" + keywordBlocks[zz].sort(reverseSort).join('|') + ")\\b(?![\\#\\$\\-\\_\\%\\&])",
225
228
  captures: {
226
229
  1: {
227
230
  name: "keyword.other.abl"
@@ -331,4 +334,4 @@ function reverseSort(a, b) {
331
334
 
332
335
  // names are equal
333
336
  return 0;
334
- }
337
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "abl-tmlanguage",
3
- "version": "1.3.5",
3
+ "version": "1.3.7",
4
4
  "description": "Textmate grammar for Progress OpenEdge ABL Language",
5
5
  "main": "",
6
6
  "repository": {