abl-tmlanguage 1.3.16 → 1.3.19

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 (92) hide show
  1. package/.github/workflows/ci.yml +36 -0
  2. package/CHANGELOG.md +10 -0
  3. package/README.md +17 -12
  4. package/abl.tmLanguage.json +258 -83
  5. package/package.json +1 -1
  6. package/spec/annotations/annotation.spec.js +49 -50
  7. package/spec/blocks/block-labels.spec.js +3 -3
  8. package/spec/blocks/block-options.spec.js +9 -7
  9. package/spec/comments/comment-in-block-statement.spec.js +20 -14
  10. package/spec/comments/comment-in-for-each.spec.js +9 -6
  11. package/spec/comments/comment-in-function-args.spec.js +4 -5
  12. package/spec/comments/vscode-abl-issue#127.spec.js +4 -4
  13. package/spec/create-widgets/create-window.spec.js +11 -8
  14. package/spec/db-table-and-field/buffer-copy.spec.js +45 -39
  15. package/spec/db-table-and-field/create-alias.spec.js +3 -3
  16. package/spec/db-table-and-field/field-in-function.spec.js +6 -6
  17. package/spec/db-table-and-field/foreach.spec.js +3 -3
  18. package/spec/db-table-and-field/issue#88.spec.js +2 -2
  19. package/spec/db-table-and-field/new-record.spec.js +46 -25
  20. package/spec/define/define-browse.spec.js +54 -54
  21. package/spec/define/define-button.spec.js +3 -3
  22. package/spec/define-buffer/create-buffer.spec.js +48 -3
  23. package/spec/define-buffer/simple-single-line.spec.js +9 -9
  24. package/spec/define-frame/issue#173.spec.js +56 -50
  25. package/spec/define-parameter/simple-single-line.spec.js +3 -3
  26. package/spec/define-property/property-getter.spec.js +4 -4
  27. package/spec/define-temp-table/define-dataset.spec.js +23 -17
  28. package/spec/define-temp-table/define-temp-table.spec.js +68 -53
  29. package/spec/define-variable/extent.spec.js +6 -6
  30. package/spec/define-variable/initial.spec.js +15 -15
  31. package/spec/define-variable/issue#6.spec.js +39 -39
  32. package/spec/define-variable/issue#9.spec.js +3 -3
  33. package/spec/define-variable/var-statement.spec.js +7 -4
  34. package/spec/do/do-blocks.spec.js +24 -18
  35. package/spec/for-each/issue#321.spec.js +2 -2
  36. package/spec/function-call/can-find.spec.js +10 -11
  37. package/spec/function-call/misc-abl-functions.spec.js +3 -3
  38. package/spec/function-call/nested-functions.spec.js +21 -22
  39. package/spec/function-call/udf-calls.spec.js +22 -23
  40. package/spec/function-call/vscode-abl-issue#19.spec.js +12 -12
  41. package/spec/global-scoped-define/global-define.spec.js +54 -7
  42. package/spec/global-scoped-define/scoped-define-with-procedure-keyword.spec.js +49 -15
  43. package/spec/global-scoped-define/undefine.spec.js +44 -0
  44. package/spec/include/abl-tmlanguage-issues#5.spec.js +3 -3
  45. package/spec/include/include-file-name.spec.js +16 -4
  46. package/spec/include/unnamed-arguments.spec.js +4 -5
  47. package/spec/include/vscode-abl-issue#45.spec.js +3 -3
  48. package/spec/include/vscode-abl-issue#77.spec.js +16 -17
  49. package/spec/include/vscode-abl-issue#80.spec.js +10 -7
  50. package/spec/input-output/input-from.spec.js +19 -16
  51. package/spec/input-output/output-to.spec.js +15 -15
  52. package/spec/method-attribute-property-call/abl-method-attribute-call.spec.js +16 -17
  53. package/spec/method-attribute-property-call/connected-method.spec.js +3 -4
  54. package/spec/method-attribute-property-call/datset-table-attribute-method-call.spec.js +12 -12
  55. package/spec/method-attribute-property-call/method-call.spec.js +16 -16
  56. package/spec/method-attribute-property-call/unqualified-method-call.spec.js +3 -4
  57. package/spec/method-definition/constructor.spec.js +6 -6
  58. package/spec/method-definition/method.spec.js +12 -12
  59. package/spec/misc-statements/case-statement.spec.js +9 -9
  60. package/spec/misc-statements/class-in-var-name.spec.js +8 -9
  61. package/spec/misc-statements/copy-lob.spec.js +3 -3
  62. package/spec/misc-statements/do-in-name.spec.js +21 -22
  63. package/spec/misc-statements/event-subscribe.spec.js +14 -15
  64. package/spec/misc-statements/export-delimiter.spec.js +6 -6
  65. package/spec/misc-statements/if-then.spec.js +9 -9
  66. package/spec/misc-statements/issue#173.spec.js +3 -4
  67. package/spec/misc-statements/message-statement.spec.js +3 -3
  68. package/spec/misc-statements/record-buffer-functions.spec.js +3 -3
  69. package/spec/misc-statements/release.spec.js +3 -4
  70. package/spec/misc-statements/skip-statement-and-fuction.spec.js +3 -4
  71. package/spec/numbers/scientific-notation.spec.js +212 -0
  72. package/spec/operators/operators.spec.js +10 -10
  73. package/spec/preprocesors/issue166.spec.js +27 -19
  74. package/spec/preprocesors/preprocessor-functions.spec.js +77 -0
  75. package/spec/preprocesors/proparse-preprocessor.spec.js +27 -3
  76. package/spec/procedure-definition/trigger-procedure.spec.js +8 -2
  77. package/spec/procedure-definition/vscode-abl-issue#22.spec.js +3 -3
  78. package/spec/procedure-definition/vscode-abl-issue#26.spec.js +4 -4
  79. package/spec/procedure-definition/vscode-abl-issue#325.spec.js +26 -2
  80. package/spec/procedure-definition/vscode-abl-issue#62.spec.js +7 -4
  81. package/spec/run-statement/run-statement.spec.js +25 -13
  82. package/spec/strings/translation-attribute.spec.js +4 -4
  83. package/spec/strings/vscode-abl-issue#11.spec.js +24 -24
  84. package/spec/strings/vscode-abl-issue#28.spec.js +9 -9
  85. package/spec/type-name/argument.spec.js +11 -12
  86. package/spec/type-name/cast.spec.js +7 -7
  87. package/spec/type-name/define-class.spec.js +89 -2
  88. package/spec/type-name/define-temp-table.spec.js +6 -6
  89. package/spec/type-name/new.spec.js +3 -3
  90. package/spec/type-name/parameter-as.spec.js +6 -6
  91. package/spec/type-name/type-name.spec.js +21 -19
  92. package/spec/type-name/using.spec.js +32 -0
@@ -58,7 +58,7 @@
58
58
  "procedure-definition": {
59
59
  "name": "meta.procedure.abl",
60
60
  "comment": "Look ahead to the procedure name, quoted or not. It will be resolved in the patterns. 'Names must begin with a letter.' from https://docs.progress.com/bundle/openedge-abl-manage-applications/page/Name-limits.html",
61
- "begin": "(?i)\\b(proce(?:dure|dur|du|d)?)\\s+(?=[a-zA-Z_])",
61
+ "begin": "(?i)\\s*(proce(?:dure|dur|du|d)?)\\s+(?=[a-zA-Z_])",
62
62
  "beginCaptures": {
63
63
  "1": {
64
64
  "name": "keyword.other.abl"
@@ -94,6 +94,9 @@
94
94
  {
95
95
  "include": "#argument-reference"
96
96
  },
97
+ {
98
+ "include": "#preprocessor-reference"
99
+ },
97
100
  {
98
101
  "include": "#numeric"
99
102
  },
@@ -479,6 +482,12 @@
479
482
  {
480
483
  "include": "#buffer-copy"
481
484
  },
485
+ {
486
+ "include": "#preprocessors"
487
+ },
488
+ {
489
+ "include": "#argument-reference"
490
+ },
482
491
  {
483
492
  "include": "#trigger-procedure"
484
493
  },
@@ -637,12 +646,6 @@
637
646
  {
638
647
  "include": "#operator"
639
648
  },
640
- {
641
- "include": "#analyze-suspend-resume"
642
- },
643
- {
644
- "include": "#global-scoped-define"
645
- },
646
649
  {
647
650
  "include": "#label-variable"
648
651
  },
@@ -656,7 +659,7 @@
656
659
  "include": "#format-constant"
657
660
  },
658
661
  {
659
- "include": "#preprocessors"
662
+ "include": "#escape-endline"
660
663
  },
661
664
  {
662
665
  "include": "#dll-type"
@@ -746,16 +749,95 @@
746
749
  }
747
750
  }
748
751
  },
752
+ "preprocessor-directives": {
753
+ "patterns": [
754
+ {
755
+ "match": "(?i)((&)(elseif|endif|else|then|if))\\s*",
756
+ "captures": {
757
+ "2": {
758
+ "name": "punctuation.definition.preprocessor.abl"
759
+ },
760
+ "3": {
761
+ "name": "keyword.control.directive.conditional.abl"
762
+ }
763
+ }
764
+ },
765
+ {
766
+ "match": "(?i)((&)(message))\\s*",
767
+ "captures": {
768
+ "2": {
769
+ "name": "punctuation.definition.preprocessor.abl"
770
+ },
771
+ "3": {
772
+ "name": "storage.type.function.abl"
773
+ }
774
+ }
775
+ }
776
+ ]
777
+ },
778
+ "preprocessor-reference": {
779
+ "patterns": [
780
+ {
781
+ "comment": "https://docs.progress.com/bundle/abl-reference/page/Preprocessor-name-reference.html#Preprocessor-name-reference",
782
+ "match": "(?i)\\s*(({)(&)(window-system|line-number|batch-mode|file-name|sequence|opsys|process-architecture)\\s*(}))",
783
+ "captures": {
784
+ "1": {
785
+ "name": "meta.preprocessor.abl"
786
+ },
787
+ "2": {
788
+ "name": "punctuation.section.abl"
789
+ },
790
+ "3": {
791
+ "name": "punctuation.definition.preprocessor.abl"
792
+ },
793
+ "4": {
794
+ "name": "entity.name.function.preprocessor.abl"
795
+ },
796
+ "5": {
797
+ "name": "punctuation.section.abl"
798
+ }
799
+ }
800
+ },
801
+ {
802
+ "match": "\\s*(({)(&)([a-zA-Z0-9_\\-#$%\\s\\(\\)]+)\\s*(}))",
803
+ "captures": {
804
+ "1": {
805
+ "name": "meta.preprocessor.abl"
806
+ },
807
+ "2": {
808
+ "name": "punctuation.section.abl"
809
+ },
810
+ "3": {
811
+ "name": "punctuation.definition.preprocessor.abl"
812
+ },
813
+ "4": {
814
+ "name": "entity.name.function.preprocessor.abl"
815
+ },
816
+ "5": {
817
+ "name": "punctuation.section.abl"
818
+ }
819
+ }
820
+ }
821
+ ]
822
+ },
749
823
  "preprocessors": {
750
- "match": "(?i)(&window-system|&text-height|&line-number|&batch-mode|&file-name|&undefine|&sequence|&message|defined|&elseif|(?:&scop(?:ed-define|ed-defin|ed-defi|ed-def|ed-de|ed-d|ed-|ed|e)?)|(?:&glob(?:al-define|al-defin|al-defi|al-def|al-de|al-d|al-|al|a)?)|&opsys|&endif|&else|&then|&if)|({&[a-zA-Z0-9_\\-#$%\\s\\(\\)]+})|(&[a-zA-Z0-9_\\-#$%]+)",
751
- "captures": {
752
- "1": {
753
- "name": "storage.type.function.abl"
824
+ "patterns": [
825
+ {
826
+ "include": "#analyze-suspend-resume"
754
827
  },
755
- "2": {
756
- "name": "storage.type.function.abl"
828
+ {
829
+ "include": "#global-scoped-define"
830
+ },
831
+ {
832
+ "include": "#preprocessor-directives"
833
+ },
834
+ {
835
+ "include": "#preprocessor-functions"
836
+ },
837
+ {
838
+ "include": "#preprocessor-reference"
757
839
  }
758
- }
840
+ ]
759
841
  },
760
842
  "type-names": {
761
843
  "patterns": [
@@ -788,7 +870,7 @@
788
870
  },
789
871
  "using": {
790
872
  "name": "meta.using.abl",
791
- "begin": "(?i)\\s*(using)\\s*",
873
+ "begin": "\\s*([Uu][Ss][Ii][Nn][Gg])\\s*",
792
874
  "beginCaptures": {
793
875
  "1": {
794
876
  "name": "keyword.other.abl"
@@ -811,7 +893,7 @@
811
893
  }
812
894
  },
813
895
  {
814
- "match": "(?i)\\s*(from|propath|assembly)\\s*",
896
+ "match": "\\s*([Ff][Rr][Oo][Mm]|[Pp][Rr][Oo][Pp][Aa][Tt][Hh]|[Aa][Ss][Ss][Ee][Mm][Bb][Ll][Yy])\\s*",
815
897
  "captures": {
816
898
  "1": {
817
899
  "name": "keyword.other.abl"
@@ -820,6 +902,9 @@
820
902
  },
821
903
  {
822
904
  "include": "#type-name"
905
+ },
906
+ {
907
+ "include": "#comment"
823
908
  }
824
909
  ]
825
910
  },
@@ -892,7 +977,7 @@
892
977
  },
893
978
  "patterns": [
894
979
  {
895
- "match": "(?i)\\s*(serializable|abstract|final|use-widget-pool|inherits|implements)\\s*",
980
+ "match": "(?i)\\b(serializable|abstract|final|use-widget-pool|inherits|implements)\\b",
896
981
  "captures": {
897
982
  "1": {
898
983
  "name": "keyword.other.abl"
@@ -2263,7 +2348,7 @@
2263
2348
  },
2264
2349
  "create-buffer": {
2265
2350
  "comment": "https://docs.progress.com/bundle/abl-reference/page/CREATE-BUFFER-statement.html",
2266
- "begin": "(?i)(create)\\s+(buffer)\\b",
2351
+ "begin": "\\s*([Cc][Rr][Ee][Aa][Tt][Ee])\\s+([Bb][Uu][Ff][Ff][Ee][Rr])\\b",
2267
2352
  "beginCaptures": {
2268
2353
  "1": {
2269
2354
  "name": "keyword.other.abl"
@@ -2272,7 +2357,7 @@
2272
2357
  "name": "keyword.other.abl"
2273
2358
  }
2274
2359
  },
2275
- "end": "(?i)(\\b((buffer-n(?:ame|am|a)?)|in)\\b)|(?=\\.)",
2360
+ "end": "(?i)(((buffer-n(?:ame|am|a)?)|in)\\b)|(?=\\.)",
2276
2361
  "endCaptures": {
2277
2362
  "1": {
2278
2363
  "name": "keyword.other.abl"
@@ -2280,7 +2365,7 @@
2280
2365
  },
2281
2366
  "patterns": [
2282
2367
  {
2283
- "match": "(?i)\\s*(for|table)\\s*",
2368
+ "match": "(?i)\\s*(for|table|no-error)\\s*",
2284
2369
  "captures": {
2285
2370
  "1": {
2286
2371
  "name": "keyword.other.abl"
@@ -2299,15 +2384,15 @@
2299
2384
  {
2300
2385
  "include": "#expression"
2301
2386
  },
2302
- {
2303
- "include": "#keywords"
2304
- },
2305
2387
  {
2306
2388
  "include": "#string"
2307
2389
  },
2308
2390
  {
2309
2391
  "include": "#comment"
2310
2392
  },
2393
+ {
2394
+ "include": "#preprocessor-reference"
2395
+ },
2311
2396
  {
2312
2397
  "include": "#handle-attributes"
2313
2398
  },
@@ -2852,6 +2937,28 @@
2852
2937
  {
2853
2938
  "include": "#for-record"
2854
2939
  },
2940
+ {
2941
+ "match": "(?i)\\b((transact(?:ion|io|i)?)|stop-after)\\b",
2942
+ "name": "keyword.other.abl"
2943
+ },
2944
+ {
2945
+ "include": "#numeric"
2946
+ },
2947
+ {
2948
+ "include": "#type-member-call"
2949
+ },
2950
+ {
2951
+ "include": "#language-functions"
2952
+ },
2953
+ {
2954
+ "include": "#abl-functions"
2955
+ },
2956
+ {
2957
+ "include": "#punctuation-comma"
2958
+ },
2959
+ {
2960
+ "include": "#punctuation-colon"
2961
+ },
2855
2962
  {
2856
2963
  "include": "#branch-options"
2857
2964
  }
@@ -3085,7 +3192,7 @@
3085
3192
  "name": "punctuation.definition.string.begin.abl"
3086
3193
  }
3087
3194
  },
3088
- "name": "string.single.complex.abl",
3195
+ "name": "string.quoted.single.abl",
3089
3196
  "end": "(')",
3090
3197
  "endCaptures": {
3091
3198
  "1": {
@@ -3102,6 +3209,14 @@
3102
3209
  "match": "~.",
3103
3210
  "name": "constant.character.escape.abl"
3104
3211
  },
3212
+ "escape-endline": {
3213
+ "match": "(~)\\s*$",
3214
+ "captures": {
3215
+ "1": {
3216
+ "name": "punctuation.separator.continuation"
3217
+ }
3218
+ }
3219
+ },
3105
3220
  "branch-return-value-double": {
3106
3221
  "comment": "RETURN \"return-value\"",
3107
3222
  "begin": "(?i)\\s*(return)(\\s+(error))?\\s+(\")",
@@ -3280,77 +3395,119 @@
3280
3395
  "name": "comment.preprocessor.analyze-suspend.abl"
3281
3396
  },
3282
3397
  "global-scoped-define": {
3283
- "begin": "(?i)((?:&scop(?:ed-define|ed-defin|ed-defi|ed-def|ed-de|ed-d|ed-|ed|e)?)|(?:&glob(?:al-define|al-defin|al-defi|al-def|al-de|al-d|al-|al|a)?))\\s*([\\.a-zA-Z0-9_\\-#$%\\\\/]*)\\s*",
3284
- "beginCaptures": {
3285
- "1": {
3286
- "name": "keyword.other.abl"
3287
- },
3288
- "2": {
3289
- "name": "entity.name.function.preprocessor.abl"
3290
- }
3291
- },
3292
- "end": "(?=//|/\\*)|$",
3293
- "name": "meta.preprocessor.define.abl",
3294
3398
  "patterns": [
3295
3399
  {
3296
- "include": "#string"
3400
+ "begin": "(?i)^\\s*((&)(scop(?:ed-define|ed-defin|ed-defi|ed-def|ed-de|ed-d|ed-|ed|e)?))\\s*",
3401
+ "name": "meta.preprocessor.abl",
3402
+ "beginCaptures": {
3403
+ "2": {
3404
+ "name": "punctuation.definition.preprocessor.abl"
3405
+ },
3406
+ "3": {
3407
+ "name": "keyword.control.directive.define.abl"
3408
+ },
3409
+ "4": {
3410
+ "name": "entity.name.function.preprocessor.abl"
3411
+ }
3412
+ },
3413
+ "end": "([\\.a-zA-Z0-9_\\-#$%\\/]+)\\s*",
3414
+ "endCaptures": {
3415
+ "1": {
3416
+ "name": "entity.name.function.preprocessor.abl"
3417
+ }
3418
+ },
3419
+ "patterns": [
3420
+ {
3421
+ "include": "#escape-endline"
3422
+ }
3423
+ ]
3424
+ },
3425
+ {
3426
+ "begin": "(?i)^\\s*((&)(glob(?:al-define|al-defin|al-defi|al-def|al-de|al-d|al-|al|a)?))\\s*",
3427
+ "name": "meta.preprocessor.abl",
3428
+ "beginCaptures": {
3429
+ "2": {
3430
+ "name": "punctuation.definition.preprocessor.abl"
3431
+ },
3432
+ "3": {
3433
+ "name": "keyword.control.directive.define.abl"
3434
+ },
3435
+ "4": {
3436
+ "name": "entity.name.function.preprocessor.abl"
3437
+ }
3438
+ },
3439
+ "end": "([\\.a-zA-Z0-9_\\-#$%\\/]+)\\s*",
3440
+ "endCaptures": {
3441
+ "1": {
3442
+ "name": "entity.name.function.preprocessor.abl"
3443
+ }
3444
+ },
3445
+ "patterns": [
3446
+ {
3447
+ "include": "#escape-endline"
3448
+ }
3449
+ ]
3450
+ },
3451
+ {
3452
+ "begin": "(?i)((&)(undef(?:ine|in|i)?))\\s*([\\.a-zA-Z0-9_\\-#$%\\/]*)\\s*",
3453
+ "name": "meta.preprocessor.abl",
3454
+ "beginCaptures": {
3455
+ "2": {
3456
+ "name": "punctuation.definition.preprocessor.abl"
3457
+ },
3458
+ "3": {
3459
+ "name": "keyword.control.directive.define.abl"
3460
+ },
3461
+ "4": {
3462
+ "name": "entity.name.function.preprocessor.abl"
3463
+ }
3464
+ },
3465
+ "end": "([\\.a-zA-Z0-9_\\-#$%\\/]+)\\s*",
3466
+ "endCaptures": {
3467
+ "1": {
3468
+ "name": "entity.name.function.preprocessor.abl"
3469
+ }
3470
+ },
3471
+ "patterns": [
3472
+ {
3473
+ "include": "#escape-char"
3474
+ }
3475
+ ]
3297
3476
  }
3298
3477
  ]
3299
3478
  },
3300
- "X-if-then": {
3301
- "begin": "(?i)\\b(if)\\b",
3479
+ "preprocessor-functions": {
3480
+ "begin": "\\s*([Dd][Ee][Ff][Ii][Nn][Ee][Dd])\\b",
3302
3481
  "beginCaptures": {
3303
3482
  "1": {
3304
- "name": "keyword.other.abl"
3483
+ "name": "storage.type.function.abl"
3305
3484
  }
3306
3485
  },
3307
3486
  "patterns": [
3308
- {
3309
- "match": "(?i)\\b(and|or)\\b",
3310
- "captures": {
3311
- "1": {
3312
- "name": "keyword.other.abl"
3313
- }
3314
- }
3315
- },
3316
3487
  {
3317
3488
  "include": "#parens"
3318
3489
  },
3319
- {
3320
- "include": "#function-arguments"
3321
- },
3322
- {
3323
- "include": "#type-member-call"
3324
- },
3325
- {
3326
- "include": "#db-dot-table-dot-field"
3327
- },
3328
3490
  {
3329
3491
  "include": "#comment"
3330
3492
  },
3331
3493
  {
3332
- "include": "#operator"
3333
- },
3334
- {
3335
- "include": "#code-block"
3336
- },
3337
- {
3338
- "include": "#handle-attributes"
3339
- },
3340
- {
3341
- "include": "#preprocessors"
3342
- },
3343
- {
3344
- "include": "#abl-system-handles"
3345
- },
3346
- {
3347
- "include": "#keywords"
3494
+ "match": "([a-zA-Z0-9_\\-#$%]+)",
3495
+ "captures": {
3496
+ "1": {
3497
+ "name": "entity.name.function.preprocessor.abl"
3498
+ }
3499
+ }
3348
3500
  }
3349
3501
  ],
3350
- "end": "(?i)\\b(?=then)\\b"
3502
+ "end": "(\\))",
3503
+ "endCaptures": {
3504
+ "1": {
3505
+ "name": "meta.brace.round.js"
3506
+ }
3507
+ }
3351
3508
  },
3352
3509
  "if-then": {
3353
- "begin": "(?i)\\b(if)\\b",
3510
+ "begin": "\\b([Ii][Ff])\\b",
3354
3511
  "beginCaptures": {
3355
3512
  "1": {
3356
3513
  "name": "keyword.other.abl"
@@ -3361,7 +3518,7 @@
3361
3518
  "include": "#logical-expression"
3362
3519
  }
3363
3520
  ],
3364
- "end": "(?i)\\b(?=then)\\b"
3521
+ "end": "\\b(?=[Tt][Hh][Ee][Nn])\\b"
3365
3522
  },
3366
3523
  "logical-expression": {
3367
3524
  "patterns": [
@@ -3711,6 +3868,9 @@
3711
3868
  {
3712
3869
  "include": "#string"
3713
3870
  },
3871
+ {
3872
+ "include": "#preprocessor-reference"
3873
+ },
3714
3874
  {
3715
3875
  "include": "#argument-reference"
3716
3876
  },
@@ -3751,6 +3911,9 @@
3751
3911
  }
3752
3912
  },
3753
3913
  "patterns": [
3914
+ {
3915
+ "include": "#preprocessor-reference"
3916
+ },
3754
3917
  {
3755
3918
  "include": "#argument-reference"
3756
3919
  },
@@ -3788,6 +3951,9 @@
3788
3951
  }
3789
3952
  }
3790
3953
  },
3954
+ {
3955
+ "include": "#preprocessor-reference"
3956
+ },
3791
3957
  {
3792
3958
  "comment": "Argument references can be passed into includes as arguments",
3793
3959
  "include": "#argument-reference"
@@ -3798,11 +3964,20 @@
3798
3964
  ]
3799
3965
  },
3800
3966
  "argument-reference": {
3801
- "comment": "https://docs.progress.com/bundle/abl-reference/page/Argument-reference.html",
3802
- "match": "\\s*((\\{\\s*&[\\.a-zA-Z0-9_\\-#$%\\\/]+\\})|(\\{\\s*\\d+\\})|(\\{\\s*\\*\\}))\\s*",
3967
+ "comment": "ONly unnamed arguments are captured here. Names arguments are treated as preprocessors, since its impossible to tell them apart https://docs.progress.com/bundle/abl-reference/page/Argument-reference.html",
3968
+ "match": "\\s*(({)([0-9]+|\\*\\s*)(}))\\s*",
3803
3969
  "captures": {
3804
3970
  "1": {
3971
+ "name": "meta.argument.abl"
3972
+ },
3973
+ "2": {
3974
+ "name": "punctuation.section.abl"
3975
+ },
3976
+ "3": {
3805
3977
  "name": "support.other.argument.abl"
3978
+ },
3979
+ "4": {
3980
+ "name": "punctuation.section.abl"
3806
3981
  }
3807
3982
  }
3808
3983
  },
@@ -3862,7 +4037,7 @@
3862
4037
  "name": "support.other.abl"
3863
4038
  }
3864
4039
  },
3865
- "name": "string.single.complex.abl",
4040
+ "name": "string.quoted.single.abl",
3866
4041
  "patterns": [
3867
4042
  {
3868
4043
  "include": "#escape-char"
@@ -3885,7 +4060,7 @@
3885
4060
  "name": "support.other.abl"
3886
4061
  }
3887
4062
  },
3888
- "name": "string.double.complex.abl",
4063
+ "name": "string.quoted.double.abl",
3889
4064
  "patterns": [
3890
4065
  {
3891
4066
  "include": "#escape-char"
@@ -3902,7 +4077,7 @@
3902
4077
  "comment": "https://docs.progress.com/bundle/abl-reference/page/Data-types.html"
3903
4078
  },
3904
4079
  "primitive-type": {
3905
- "match": "(?i)(?<=^|\\s)(blob|(char(?:acter|acte|act|ac|a)?)|cha|ch|c|clob|com-handle|date|da|datetime|datetime-tz|(dec(?:imal|ima|im|i)?)|de|handle|int64|(int(?:eger|ege|eg|e)?)|in|i|(log(?:ical|ica|ic|i)?)|lo|l|(longch(?:ar|a)?)|memptr|raw|recid|rowid|widget-handle)(?![=a-zA-Z0-9_\\-#$%\\-])",
4080
+ "match": "(?i)(?<=^|\\s)(blob|(ch(?:aracter|aracte|aract|arac|ara|ar|a)?)|c|clob|com-handle|(da(?:tetime-tz|tetime|te|t)?)|(de(?:cimal|cima|cim|ci|c)?)|handle|int64|(int(?:eger|ege|eg|e)?)|in|i|(log(?:ical|ica|ic|i)?)|lo|l|(longch(?:ar|a)?)|memptr|raw|recid|rowid|widget-handle)(?![=a-zA-Z0-9_\\-#$%\\-])",
3906
4081
  "captures": {
3907
4082
  "1": {
3908
4083
  "name": "storage.type.abl"
@@ -3911,7 +4086,7 @@
3911
4086
  "comment": "https://docs.progress.com/bundle/abl-reference/page/Data-types.html"
3912
4087
  },
3913
4088
  "numeric": {
3914
- "match": "(?<![a-zA-Z0-9_\\-#$%-])(0[xX]\\h+)|(\\-?\\.?[0-9]+(\\.[0-9]+)?)",
4089
+ "match": "(?<![a-zA-Z0-9_\\-#$%-])(0[xX]\\h+)|([+\\-]?\\.?(0|[1-9][0-9]*)(\\.[0-9]+)?([eE][+\\-]?[0-9]+)?)",
3915
4090
  "name": "constant.numeric.source.abl"
3916
4091
  },
3917
4092
  "abl-system-handles": {
@@ -5865,4 +6040,4 @@
5865
6040
  },
5866
6041
  "scopeName": "source.abl",
5867
6042
  "uuid": "075bb86e-03ea-4fea-bac0-e11b9dc73e03"
5868
- }
6043
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "abl-tmlanguage",
3
- "version": "1.3.16",
3
+ "version": "1.3.19",
4
4
  "description": "TextMate grammar for Progress OpenEdge ABL Language",
5
5
  "main": "",
6
6
  "type": "commonjs",