abl-tmlanguage 1.1.3 → 1.2.0

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 (49) hide show
  1. package/CHANGELOG.md +4 -0
  2. package/README.md +12 -0
  3. package/abl.tmLanguage.json +2736 -216
  4. package/azure-pipelines.yml +3 -2
  5. package/package.json +7 -6
  6. package/spec/analyze-suspend-resume/analyze-suspend-resume.spec.js +10 -10
  7. package/spec/array-extent/issue#5.spec.js +18 -18
  8. package/spec/define-buffer/simple-single-line.spec.js +138 -0
  9. package/spec/define-parameter/simple-single-line.spec.js +100 -100
  10. package/spec/define-stream/simple-single-line.spec.js +32 -31
  11. package/spec/define-variable/extent.spec.js +228 -0
  12. package/spec/define-variable/issue#6.spec.js +256 -198
  13. package/spec/define-variable/issue#9.spec.js +38 -32
  14. package/spec/define-variable/simple-single-line.spec.js +87 -87
  15. package/spec/define-variable/single-line-with-a-comment-at-the-end.spec.js +62 -62
  16. package/spec/define-variable/single-line-with-a-space-and-a-comment-at-the-end.spec.js +56 -56
  17. package/spec/define-variable/tm-issue#2.spec.js +20 -20
  18. package/spec/do/do-blocks.spec.js +89 -0
  19. package/spec/do/issue#3.spec.js +67 -60
  20. package/spec/function-call/vscode-abl-issue#19.spec.js +110 -107
  21. package/spec/global-scoped-define/global-define.spec.js +11 -11
  22. package/spec/global-scoped-define/scoped-define-with-procedure-keyword.spec.js +26 -26
  23. package/spec/include/abl-tmlanguage-issues#5.spec.js +44 -44
  24. package/spec/include/vscode-abl-issue#45.spec.js +14 -14
  25. package/spec/include/vscode-abl-issue#80.spec.js +26 -26
  26. package/spec/method-definition/constructor.spec.js +174 -0
  27. package/spec/method-definition/method.spec.js +185 -0
  28. package/spec/procedure-definition/empty-proc.spec.js +20 -18
  29. package/spec/procedure-definition/vscode-abl-issue#22.spec.js +46 -42
  30. package/spec/procedure-definition/vscode-abl-issue#26.spec.js +23 -16
  31. package/spec/procedure-definition/vscode-abl-issue#62.spec.js +36 -0
  32. package/spec/shared.js +84 -42
  33. package/spec/strings/vscode-abl-issue#11.spec.js +110 -114
  34. package/spec/strings/vscode-abl-issue#28.spec.js +27 -27
  35. package/spec/type-name/argument.spec.js +209 -0
  36. package/spec/type-name/cast.spec.js +165 -0
  37. package/spec/type-name/define-class.spec.js +471 -0
  38. package/spec/type-name/define-enum.spec.js +44 -0
  39. package/spec/type-name/define-interface.spec.js +159 -0
  40. package/spec/type-name/define-property.spec.js +301 -0
  41. package/spec/type-name/define-temp-table.spec.js +434 -0
  42. package/spec/type-name/define-type-spec.js +435 -0
  43. package/spec/type-name/define-variable-property.spec.js +264 -0
  44. package/spec/type-name/define-variable.spec.js +504 -0
  45. package/spec/type-name/get-class.spec.js +91 -0
  46. package/spec/type-name/new.spec.js +126 -0
  47. package/spec/type-name/parameter-as.spec.js +838 -0
  48. package/spec/type-name/type-name-spec.js +587 -0
  49. package/spec/type-name/using.spec.js +115 -0
@@ -7,124 +7,369 @@
7
7
  ],
8
8
  "name": "OpenEdge ABL",
9
9
  "patterns": [
10
- {
11
- "include": "#procedure-definition"
12
- },
13
10
  {
14
11
  "include": "#statements"
15
12
  }
16
13
  ],
17
14
  "repository": {
18
15
  "procedure-definition": {
19
- "begin": "(?i)\\b(proce|proced|procedu|procedur|procedure)\\b\\s+('[\\w\\.-]*':U|'[\\w\\.-]*'|[\\w\\.-]*)?(\\s+(EXTERNAL)\\s+(\")([\\w\\.-]*)(\"))?",
16
+ "name": "meta.procedure.abl",
17
+ "comment": "Look ahead to the procecure name, quoted or not. It will be resolved in the patterns",
18
+ "begin": "(?i)\\s*(procedure|procedur|procedu|proced|proce)\\s+(?=[\\w'\"#\\$_])",
20
19
  "beginCaptures": {
21
20
  "1": {
22
21
  "name": "keyword.other.abl"
22
+ }
23
+ },
24
+ "end": "(?<=:)",
25
+ "patterns": [
26
+ {
27
+ "match": "(?i)\\s*(external|cdecl|pascal|stdcall|ordinal|persistent|thread-safe|in|super)\\s*",
28
+ "captures": {
29
+ "1": {
30
+ "name": "keyword.other.abl"
31
+ }
32
+ }
23
33
  },
24
- "2": {
25
- "name": "entity.name.function.abl"
34
+ {
35
+ "include": "#string"
26
36
  },
27
- "4": {
28
- "name": "keyword.other.abl"
37
+ {
38
+ "include": "#translation-attribute"
29
39
  },
30
- "5": {
31
- "name": "punctuation.definition.string.begin.abl"
40
+ {
41
+ "match": "([a-zA-Z][a-zA-Z0-9\\#\\$\\-\\_\\%\\&\\.]+)",
42
+ "captures": {
43
+ "1": {
44
+ "name": "entity.name.function.abl"
45
+ }
46
+ }
32
47
  },
33
- "6": {
34
- "name": "string.double.complex.abl"
48
+ {
49
+ "include": "#argument-reference"
35
50
  },
36
- "7": {
37
- "name": "punctuation.definition.string.begin.abl"
51
+ {
52
+ "include": "#numeric"
53
+ }
54
+ ]
55
+ },
56
+ "translation-attribute": {
57
+ "comment": "The attribute must have one of L, R, T, or C and/or a U and/or one integer value. For example, R1 as the attribute value for Label.",
58
+ "match": "(?i)(:[L|R|T|C|U]\\d*)\\s*",
59
+ "captures": {
60
+ "1": {
61
+ "name": "support.other.abl"
62
+ }
63
+ }
64
+ },
65
+ "language-functions": {
66
+ "match": "(?i)\\b(opsys|proversion)\\b",
67
+ "captures": {
68
+ "1": {
69
+ "name": "support.function.abl"
70
+ }
71
+ }
72
+ },
73
+ "method-definition": {
74
+ "name": "meta.define.method.abl",
75
+ "begin": "(?i)^\\s*(method|constructor)\\s*",
76
+ "beginCaptures": {
77
+ "1": {
78
+ "name": "keyword.other.abl"
38
79
  }
39
80
  },
40
- "end": "(?=\\.)",
41
- "name": "meta.procedure.abl",
81
+ "comment": "The lookaread on the regex for the closing colon is required to make this scope end properly",
82
+ "end": "\\s*(?=:)",
42
83
  "patterns": [
43
84
  {
44
- "begin": ":",
45
- "end": "(?i)(end\\s*procedure|end)",
46
- "endCaptures": {
85
+ "include": "#access-modifier"
86
+ },
87
+ {
88
+ "match": "(?i)\\s*(void)\\s*",
89
+ "captures": {
47
90
  "1": {
48
91
  "name": "keyword.other.abl"
49
92
  }
93
+ }
94
+ },
95
+ {
96
+ "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.",
97
+ "begin": "(?i)\\s*([a-z_]+[\\w\\-{}#$%&]*)\\s*(\\()\\s*",
98
+ "beginCaptures": {
99
+ "1": {
100
+ "name": "entity.name.function.abl"
101
+ },
102
+ "2": {
103
+ "name": "meta.brace.round.js"
104
+ }
105
+ },
106
+ "end": "(\\))",
107
+ "endCaptures": {
108
+ "1": {
109
+ "name": "meta.brace.round.js"
110
+ }
50
111
  },
51
- "name": "meta.procedure.body.abl",
52
112
  "patterns": [
53
113
  {
54
- "include": "#code-block"
114
+ "include": "#parameter-definition"
55
115
  }
56
116
  ]
117
+ },
118
+ {
119
+ "include": "#string",
120
+ "comment": "For the return type"
121
+ },
122
+ {
123
+ "include": "#dll-type",
124
+ "comment": "For the return type"
125
+ },
126
+ {
127
+ "include": "#extent",
128
+ "comment": "For the return type"
129
+ },
130
+ {
131
+ "include": "#primitive-type",
132
+ "comment": "For the return type"
133
+ },
134
+ {
135
+ "include": "#type-name-generic-progress",
136
+ "comment": "For the return type"
137
+ },
138
+ {
139
+ "include": "#type-name-progress",
140
+ "comment": "For the return type"
141
+ },
142
+ {
143
+ "include": "#type-name-generic",
144
+ "comment": "For the return type"
145
+ },
146
+ {
147
+ "include": "#type-name",
148
+ "comment": "For the return type"
149
+ },
150
+ {
151
+ "include": "#comment"
57
152
  }
58
153
  ]
59
154
  },
60
- "statements": {
155
+ "end-function-procedure-method-block": {
156
+ "match": "(?i)\\s*(end)\\s*(method|procedure|function)?\\s*(?=\\.)\\s*",
157
+ "comment": "This regex exists to make sure that END PROCEDURE is not seen as a new procedure block",
158
+ "captures": {
159
+ "1": {
160
+ "name": "keyword.other.abl"
161
+ },
162
+ "2": {
163
+ "name": "keyword.other.abl"
164
+ }
165
+ }
166
+ },
167
+ "as-type": {
168
+ "begin": "(?i)\\s*(as)\\s*(class)?",
169
+ "beginCaptures": {
170
+ "1": {
171
+ "name": "keyword.other.abl"
172
+ },
173
+ "2": {
174
+ "name": "keyword.other.abl"
175
+ }
176
+ },
177
+ "end": "\\s*(\\.|\\,|\\s*)",
61
178
  "patterns": [
62
179
  {
63
- "include": "#string"
180
+ "include": "#primitive-type"
64
181
  },
65
182
  {
66
- "include": "#singlelinecomment"
183
+ "include": "#type-name-generic-progress"
67
184
  },
68
185
  {
69
- "include": "#multilinecomment"
186
+ "include": "#type-name-progress"
70
187
  },
71
188
  {
72
- "include": "#declarations"
189
+ "include": "#type-name-generic"
73
190
  },
74
191
  {
75
- "include": "#numeric"
192
+ "include": "#type-name"
193
+ }
194
+ ]
195
+ },
196
+ "parameter-definition": {
197
+ "name": "meta.define.parameter.abl",
198
+ "patterns": [
199
+ {
200
+ "match": "(?i)\\s*(input-output|input-outpu|input-outp|input-out|input-ou|input-o|input|output|append|bind|by-value|preselect|buffer|parameter|param|no-undo)\\s*",
201
+ "comment": "Certain keywords like NO-UNDO are 'gathered' by a DEFINE INPUT PARAMETER statement. ",
202
+ "captures": {
203
+ "1": {
204
+ "name": "keyword.other.abl"
205
+ }
206
+ }
76
207
  },
77
208
  {
78
- "include": "#constant"
209
+ "match": "(?i)\\s*(dataset-handle|table-handle)\\s+([\\w\\-]+)",
210
+ "captures": {
211
+ "1": {
212
+ "name": "keyword.other.abl"
213
+ },
214
+ "2": {
215
+ "name": "variable.parameter.abl"
216
+ }
217
+ }
79
218
  },
80
219
  {
81
- "include": "#operator"
220
+ "match": "(?i)\\s*(dataset|table)\\s+([\\w\\-]+)\\s*",
221
+ "captures": {
222
+ "1": {
223
+ "name": "keyword.other.abl"
224
+ },
225
+ "2": {
226
+ "name": "storage.data.table.abl"
227
+ }
228
+ }
82
229
  },
83
230
  {
84
- "include": "#analyze-suspend-resume"
231
+ "include": "#parameter-as"
85
232
  },
86
233
  {
87
- "include": "#global-scoped-define"
234
+ "match": "(?i)\\s*(character|characte|charact|charac|chara|char|com-handle|date|datetime-tz|datetime|decimal|decima|decim|deci|dec|handle|int64|integer|intege|integ|inte|int|logical|logica|logic|logi|log|longchar|longcha|longch|memptr|raw|recid|rowid|widget-handle|widget-h?)(?![=\\w-])\\s*(,*)",
235
+ "captures": {
236
+ "1": {
237
+ "name": "storage.type.abl"
238
+ },
239
+ "2": {
240
+ "name": "punctuation.separator.comma.abl"
241
+ }
242
+ }
88
243
  },
89
244
  {
90
- "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)",
91
- "name": "storage.type.function.abl"
245
+ "match": "\\s*(,)\\s*",
246
+ "captures": {
247
+ "1": {
248
+ "name": "punctuation.separator.comma.abl"
249
+ }
250
+ }
92
251
  },
93
252
  {
94
- "include": "#primitive-type"
253
+ "include": "#buffer-for-table"
95
254
  },
96
255
  {
97
- "include": "#method-call"
256
+ "include": "#extent"
98
257
  },
99
258
  {
100
- "include": "#function-call"
259
+ "include": "#abl-functions"
101
260
  },
102
261
  {
103
- "include": "#code-block"
262
+ "include": "#array-literal"
263
+ },
264
+ {
265
+ "include": "#decimals"
266
+ },
267
+ {
268
+ "include": "#constant"
269
+ },
270
+ {
271
+ "include": "#type-name-generic-progress"
272
+ },
273
+ {
274
+ "include": "#type-name-progress"
104
275
  },
105
276
  {
106
277
  "include": "#keywords"
107
278
  },
108
279
  {
109
- "include": "#variable-name"
280
+ "include": "#handle-attributes"
110
281
  },
111
282
  {
112
- "include": "#array-literal"
283
+ "include": "#abl-functions"
113
284
  },
114
285
  {
115
- "include": "#punctuation-semicolon"
286
+ "include": "#type-name-generic"
287
+ },
288
+ {
289
+ "include": "#type-name"
290
+ },
291
+ {
292
+ "include": "#string"
293
+ },
294
+ {
295
+ "include": "#comment"
116
296
  }
117
297
  ]
118
298
  },
119
- "declarations": {
299
+ "function-parameter-definition": {
300
+ "comment": "https://docs.progress.com/bundle/abl-reference/page/Parameter-definition-syntax.html?labelkey=product_openedge_126",
301
+ "name": "meta.function.parameters",
302
+ "begin": "(\\()",
303
+ "beginCaptures": {
304
+ "1": {
305
+ "name": "meta.brace.round.js"
306
+ }
307
+ },
308
+ "end": "(\\))",
309
+ "endCaptures": {
310
+ "1": {
311
+ "name": "meta.brace.round.js"
312
+ }
313
+ },
120
314
  "patterns": [
121
315
  {
122
- "include": "#define"
316
+ "include": "#parameter-definition"
123
317
  }
124
318
  ]
125
319
  },
126
- "code-block": {
320
+ "statements": {
321
+ "name": "meta.statements.abl",
127
322
  "patterns": [
323
+ {
324
+ "include": "#block-statement"
325
+ },
326
+ {
327
+ "include": "#block-label"
328
+ },
329
+ {
330
+ "include": "#end-function-procedure-method-block"
331
+ },
332
+ {
333
+ "include": "#find-record"
334
+ },
335
+ {
336
+ "include": "#type-argument-function"
337
+ },
338
+ {
339
+ "include": "#get-class"
340
+ },
341
+ {
342
+ "include": "#abl-functions"
343
+ },
344
+ {
345
+ "include": "#function-arguments"
346
+ },
347
+ {
348
+ "include": "#arguments-reference"
349
+ },
350
+ {
351
+ "include": "#method-definition"
352
+ },
353
+ {
354
+ "include": "#access-modifier"
355
+ },
356
+ {
357
+ "match": "(?i)\\s*(void)\\s*",
358
+ "captures": {
359
+ "1": {
360
+ "name": "keyword.other.abl"
361
+ }
362
+ }
363
+ },
364
+ {
365
+ "include": "#string"
366
+ },
367
+ {
368
+ "include": "#translation-attribute"
369
+ },
370
+ {
371
+ "include": "#parens"
372
+ },
128
373
  {
129
374
  "include": "#singlelinecomment"
130
375
  },
@@ -132,7 +377,10 @@
132
377
  "include": "#multilinecomment"
133
378
  },
134
379
  {
135
- "include": "#string"
380
+ "include": "#declarations"
381
+ },
382
+ {
383
+ "include": "#decimals"
136
384
  },
137
385
  {
138
386
  "include": "#numeric"
@@ -144,183 +392,2284 @@
144
392
  "include": "#operator"
145
393
  },
146
394
  {
147
- "include": "#include-file"
395
+ "include": "#analyze-suspend-resume"
148
396
  },
149
397
  {
150
- "include": "#define"
398
+ "include": "#global-scoped-define"
151
399
  },
152
400
  {
153
- "include": "#do-block"
401
+ "include": "#label-variable"
154
402
  },
155
403
  {
156
- "include": "#keywords"
404
+ "include": "#define-field"
157
405
  },
158
406
  {
159
- "include": "#variable-name"
407
+ "include": "#define-like"
408
+ },
409
+ {
410
+ "include": "#format-constant"
411
+ },
412
+ {
413
+ "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)",
414
+ "name": "storage.type.function.abl"
415
+ },
416
+ {
417
+ "include": "#procedure-definition"
418
+ },
419
+ {
420
+ "include": "#dll-type"
421
+ },
422
+ {
423
+ "include": "#parameter-as"
424
+ },
425
+ {
426
+ "include": "#buffer-for-table"
427
+ },
428
+ {
429
+ "include": "#primitive-type"
430
+ },
431
+ {
432
+ "include": "#method-call",
433
+ "comment": "TODO"
434
+ },
435
+ {
436
+ "include": "#property-accessor"
437
+ },
438
+ {
439
+ "include": "#property-call"
440
+ },
441
+ {
442
+ "include": "#function-call",
443
+ "comment": "does not exist"
444
+ },
445
+ {
446
+ "include": "#type-reference"
447
+ },
448
+ {
449
+ "include": "#type-name2",
450
+ "comment": "does not exist"
451
+ },
452
+ {
453
+ "include": "#code-block"
454
+ },
455
+ {
456
+ "include": "#language-functions"
457
+ },
458
+ {
459
+ "include": "#handle-attributes"
460
+ },
461
+ {
462
+ "include": "#comment"
463
+ },
464
+ {
465
+ "include": "#array-literal"
466
+ },
467
+ {
468
+ "include": "#punctuation-semicolon"
469
+ },
470
+ {
471
+ "include": "#parens"
472
+ },
473
+ {
474
+ "include": "#keywords"
475
+ },
476
+ {
477
+ "include": "#variable-name"
478
+ }
479
+ ]
480
+ },
481
+ "declarations": {
482
+ "patterns": [
483
+ {
484
+ "include": "#define"
485
+ }
486
+ ]
487
+ },
488
+ "type-names": {
489
+ "patterns": [
490
+ {
491
+ "include": "#type-name-generic-progress"
492
+ },
493
+ {
494
+ "include": "#type-name-progress"
495
+ },
496
+ {
497
+ "include": "#type-name-generic"
498
+ },
499
+ {
500
+ "include": "#type-name"
501
+ }
502
+ ]
503
+ },
504
+ "type-reference": {
505
+ "patterns": [
506
+ {
507
+ "include": "#define-type"
508
+ },
509
+ {
510
+ "include": "#get-class"
511
+ },
512
+ {
513
+ "include": "#new-class"
514
+ },
515
+ {
516
+ "include": "#using"
517
+ },
518
+ {
519
+ "include": "#type-argument-function"
520
+ }
521
+ ]
522
+ },
523
+ "using": {
524
+ "name": "meta.using.abl",
525
+ "begin": "(?i)\\s*(using)\\s*",
526
+ "beginCaptures": {
527
+ "1": {
528
+ "name": "keyword.other.abl"
529
+ }
530
+ },
531
+ "end": "(\\.)",
532
+ "comment": "use \\R lookahead here",
533
+ "endCaptures": {
534
+ "1": {
535
+ "name": "punctuation.terminator.abl"
536
+ }
537
+ },
538
+ "patterns": [
539
+ {
540
+ "comment": "Captures USING foo.bar.* .",
541
+ "match": "(?i)\\s*((([\\w\\#\\$\\%]+|progress)(\\.[\\w\\#\\$\\%]+)*)\\.\\*)\\s*",
542
+ "captures": {
543
+ "1": {
544
+ "name": "entity.name.package.abl"
545
+ }
546
+ }
547
+ },
548
+ {
549
+ "match": "(?i)\\s*(from|propath|assembly)\\s*",
550
+ "captures": {
551
+ "1": {
552
+ "name": "keyword.other.abl"
553
+ }
554
+ }
555
+ },
556
+ {
557
+ "include": "#type-name"
558
+ }
559
+ ]
560
+ },
561
+ "define-type": {
562
+ "patterns": [
563
+ {
564
+ "include": "#define-class"
565
+ },
566
+ {
567
+ "include": "#define-interface"
568
+ },
569
+ {
570
+ "include": "#define-enum"
571
+ }
572
+ ]
573
+ },
574
+ "type-name-generic-progress": {
575
+ "name": "entity.name.type.generic.abl",
576
+ "begin": "(?i)\\s*((progress)(\\.[\\w\\#\\$\\%\\-]+)*)\\s*<",
577
+ "beginCaptures": {
578
+ "1": {
579
+ "name": "entity.name.type.abl"
580
+ }
581
+ },
582
+ "end": "\\>",
583
+ "patterns": [
584
+ {
585
+ "include": "#generic-types"
586
+ }
587
+ ]
588
+ },
589
+ "type-name-generic": {
590
+ "name": "entity.name.type.generic.abl",
591
+ "begin": "(?i)\\s*(([\\w\\#\\$\\%\\-]+)(\\.[\\w\\#\\$\\%\\-]+)*\\s*)\\s*<",
592
+ "beginCaptures": {
593
+ "1": {
594
+ "name": "entity.name.type.abl"
595
+ }
596
+ },
597
+ "end": "\\>",
598
+ "patterns": [
599
+ {
600
+ "include": "#generic-types"
601
+ }
602
+ ]
603
+ },
604
+ "generic-types": {
605
+ "patterns": [
606
+ {
607
+ "include": "#type-name-comma-progress"
608
+ },
609
+ {
610
+ "include": "#type-name-comma"
611
+ },
612
+ {
613
+ "include": "#type-name-generic-progress"
614
+ },
615
+ {
616
+ "include": "#type-name-progress"
617
+ },
618
+ {
619
+ "include": "#type-name-generic"
620
+ },
621
+ {
622
+ "include": "#type-name"
623
+ }
624
+ ]
625
+ },
626
+ "type-name": {
627
+ "match": "(?i)\\b([\\w\\#\\$\\%\\-]+(\\.[\\w\\#\\$\\%\\-]+)*)\\b",
628
+ "captures": {
629
+ "1": {
630
+ "name": "entity.name.type.abl"
631
+ }
632
+ }
633
+ },
634
+ "type-name-comma": {
635
+ "match": "(?i)\\s*(,*)\\s*(class)?\\s*(([\\w\\#\\$\\%]+)(\\.?[\\w\\#\\$\\%]*)*(?<!\\.))\\s*(,*)\\s*",
636
+ "comment": "Capture group 3 is the <T> type name",
637
+ "captures": {
638
+ "1": {
639
+ "name": "punctuation.separator.comma.abl"
640
+ },
641
+ "2": {
642
+ "name": "keyword.other.abl"
643
+ },
644
+ "3": {
645
+ "name": "entity.name.type.abl"
646
+ },
647
+ "6": {
648
+ "name": "punctuation.separator.comma.abl"
649
+ }
650
+ }
651
+ },
652
+ "type-name-progress": {
653
+ "match": "(?i)\\s*((progress\\.)([\\.\\w\\#\\$\\%]+)*)\\s*(?<!\\.)",
654
+ "captures": {
655
+ "1": {
656
+ "name": "entity.name.type.abl"
657
+ }
658
+ }
659
+ },
660
+ "type-name-comma-progress": {
661
+ "match": "(?i)\\s*(,*)\\s*(class)?\\s*((progress\\.|map|set)(\\.?[\\w\\#\\$\\%]*)*(?<!\\.))\\s*(,*)\\s*",
662
+ "comment": "Capture group 3 is the <T> type name",
663
+ "captures": {
664
+ "1": {
665
+ "name": "punctuation.separator.comma.abl"
666
+ },
667
+ "2": {
668
+ "name": "keyword.other.abl"
669
+ },
670
+ "3": {
671
+ "name": "entity.name.type.abl"
672
+ },
673
+ "6": {
674
+ "name": "punctuation.separator.comma.abl"
675
+ }
676
+ }
677
+ },
678
+ "define-class": {
679
+ "name": "meta.define.class.abl",
680
+ "begin": "(?i)\\s*(class)\\s*",
681
+ "beginCaptures": {
682
+ "1": {
683
+ "name": "keyword.other.abl"
684
+ }
685
+ },
686
+ "end": "\\s*(:)\\s*",
687
+ "endCaptures": {
688
+ "1": {
689
+ "name": "punctuation.terminator.abl"
690
+ }
691
+ },
692
+ "patterns": [
693
+ {
694
+ "match": "(?i)\\s*(serializable|abstract|final|use-widget-pool|inherits|implements)\\s*",
695
+ "captures": {
696
+ "1": {
697
+ "name": "keyword.other.abl"
698
+ }
699
+ }
700
+ },
701
+ {
702
+ "include": "#implements-type"
703
+ },
704
+ {
705
+ "include": "#type-name-generic-progress"
706
+ },
707
+ {
708
+ "include": "#type-name-generic"
709
+ },
710
+ {
711
+ "include": "#type-name-comma-progress"
712
+ },
713
+ {
714
+ "include": "#type-name-progress"
715
+ },
716
+ {
717
+ "include": "#type-name-comma"
718
+ },
719
+ {
720
+ "include": "#type-name"
721
+ }
722
+ ]
723
+ },
724
+ "handle-attributes": {
725
+ "patterns": [
726
+ {
727
+ "include": "#handle-attributes-A"
728
+ },
729
+ {
730
+ "include": "#handle-attributes-B"
731
+ },
732
+ {
733
+ "include": "#handle-attributes-C"
734
+ },
735
+ {
736
+ "include": "#handle-attributes-D"
737
+ },
738
+ {
739
+ "include": "#handle-attributes-E"
740
+ },
741
+ {
742
+ "include": "#handle-attributes-F"
743
+ },
744
+ {
745
+ "include": "#handle-attributes-G"
746
+ },
747
+ {
748
+ "include": "#handle-attributes-H"
749
+ },
750
+ {
751
+ "include": "#handle-attributes-I"
752
+ },
753
+ {
754
+ "include": "#handle-attributes-K"
755
+ },
756
+ {
757
+ "include": "#handle-attributes-L"
758
+ },
759
+ {
760
+ "include": "#handle-attributes-M"
761
+ },
762
+ {
763
+ "include": "#handle-attributes-N"
764
+ },
765
+ {
766
+ "include": "#handle-attributes-O"
767
+ },
768
+ {
769
+ "include": "#handle-attributes-P"
770
+ },
771
+ {
772
+ "include": "#handle-attributes-Q"
773
+ },
774
+ {
775
+ "include": "#handle-attributes-R"
776
+ },
777
+ {
778
+ "include": "#handle-attributes-S"
779
+ },
780
+ {
781
+ "include": "#handle-attributes-T"
782
+ },
783
+ {
784
+ "include": "#handle-attributes-U"
785
+ },
786
+ {
787
+ "include": "#handle-attributes-V"
788
+ },
789
+ {
790
+ "include": "#handle-attributes-W"
791
+ },
792
+ {
793
+ "include": "#handle-attributes-X"
794
+ },
795
+ {
796
+ "include": "#handle-attributes-Y"
797
+ }
798
+ ]
799
+ },
800
+ "handle-attributes-A": {
801
+ "match": "(?i):(ACCELERATOR|ACCEPT-CHANGES|ACCEPT-ROW-CHANGES|ACTIVE|ACTOR|ADD-BUFFER|add-calc-col|add-calc-colu|add-calc-colum|add-calc-column|ADD-COLUMNS-FROM|add-events-proc|add-events-proce|add-events-proced|add-events-procedu|add-events-procedur|add-events-procedure|ADD-FIELDS-FROM|ADD-FIRST|ADD-HEADER-ENTRY|ADD-INDEX-FIELD|ADD-LAST|add-like-col|add-like-colu|add-like-colum|add-like-column|ADD-LIKE-FIELD|ADD-LIKE-INDEX|ADD-NEW-FIELD|ADD-NEW-INDEX|ADD-PARENT-ID-RELATION|add-rel|add-rela|add-relat|add-relati|add-relatio|add-relation|ADD-SCHEMA-LOCATION|ADD-SOURCE-BUFFER|add-super-proc|add-super-proce|add-super-proced|add-super-procedu|add-super-procedur|add-super-procedure|ADM-DATA|AFTER-BUFFER|AFTER-ROWID|AFTER-TABLE|ALLOW-COLUMN-SEARCHING|ALLOW-PREV-DESERIALIZATION|ALWAYS-ON-TOP|ambig|ambigu|ambiguo|ambiguou|ambiguous|APPEND-CHILD|appl-alert|appl-alert-|appl-alert-b|appl-alert-bo|appl-alert-box|appl-alert-boxe|appl-alert-boxes|APPL-CONTEXT-ID|APPLY-CALLBACK|APPSERVER-INFO|APPSERVER-PASSWORD|APPSERVER-USERID|ASYNCHRONOUS|ASYNC-REQUEST-COUNT|ASYNC-REQUEST-HANDLE|ATTACH-DATA-SOURCE|ATTACHED-PAIRLIST|ATTRIBUTE-NAMES|attr|attr-|attr-s|attr-sp|attr-spa|attr-spac|attr-space|AUDIT-EVENT-CONTEXT|AUTHENTICATION-FAILED|auto-comp|auto-compl|auto-comple|auto-complet|auto-completi|auto-completio|auto-completion|AUTO-DELETE|AUTO-DELETE-XML|auto-end-key|auto-endkey|AUTO-GO|auto-ind|auto-inde|auto-inden|auto-indent|AUTO-RESIZE|auto-ret|auto-retu|auto-retur|auto-return|AUTO-SYNCHRONIZE|auto-val|auto-vali|auto-valid|auto-valida|auto-validat|auto-validate|auto-z|auto-za|auto-zap|avail|availa|availab|availabl|available|AVAILABLE-FORMATS)\\s*",
802
+ "capture": {
803
+ "1": {
804
+ "name": "entity.name.function.abl"
805
+ }
806
+ }
807
+ },
808
+ "handle-attributes-B": {
809
+ "match": "(?i):(back|back-tab|backg|backgr|backgro|backgrou|backgroun|background|BASE-ADE|BASIC-LOGGING|BATCH-MODE|BATCH-SIZE|BEFORE-BUFFER|BEFORE-ROWID|BEFORE-TABLE|BEGIN-EVENT-GROUP|bgc|bgco|bgcol|bgcolo|bgcolor|BLANK|BLOCK-ITERATION-DISPLAY|border-b|border-bo|border-bot|border-bott|border-botto|border-bottom|border-bottom-c|border-bottom-ch|border-bottom-cha|border-bottom-char|border-bottom-chars|border-bottom-p|border-bottom-pi|border-bottom-pix|border-bottom-pixe|border-bottom-pixel|border-bottom-pixels|border-l|border-le|border-lef|border-left|border-left-c|border-left-ch|border-left-cha|border-left-char|border-left-chars|border-left-p|border-left-pi|border-left-pix|border-left-pixe|border-left-pixel|border-left-pixels|border-r|border-ri|border-rig|border-righ|border-right|border-right-c|border-right-ch|border-right-cha|border-right-char|border-right-chars|border-right-p|border-right-pi|border-right-pix|border-right-pixe|border-right-pixel|border-right-pixels|border-t|border-to|border-top|border-top-c|border-top-ch|border-top-cha|border-top-char|border-top-chars|border-top-p|border-top-pi|border-top-pix|border-top-pixe|border-top-pixel|border-top-pixels|BOX|BOX-SELECTABLE|BUFFER-CHARS|buffer-comp|buffer-compa|buffer-compar|buffer-compare|BUFFER-COPY|BUFFER-CREATE|BUFFER-DELETE|BUFFER-FIELD|BUFFER-FIELD|BUFFER-GROUP-ID|BUFFER-GROUP-NAME|BUFFER-HANDLE|BUFFER-LINES|buffer-n|buffer-na|buffer-nam|buffer-name|BUFFER-PARTITION-ID|buffer-releas|buffer-release|BUFFER-TENANT-ID|BUFFER-TENANT-NAME|BUFFER-VALIDATE|BUFFER-VALUE|BYTES-READ|BYTES-WRITTEN)\\s*",
810
+ "capture": {
811
+ "1": {
812
+ "name": "entity.name.function.abl"
813
+ }
814
+ }
815
+ },
816
+ "handle-attributes-C": {
817
+ "match": "(?i):(CACHE|CALL-NAME|CALL-TYPE|CANCEL-BREAK|CANCEL-BUTTON|CANCEL-REQUESTS|CANCEL-REQUESTS-AFTER|CANCELLED|can-crea|can-creat|can-create|can-dele|can-delet|can-delete|CAN-DO-DOMAIN-SUPPORT|CAN-READ|CAN-WRITE|CAREFUL-PAINT|case-sen|case-sens|case-sensi|case-sensit|case-sensiti|case-sensitiv|case-sensitive|center|centere|centered|CHARSET|CHECKED|CHILD-BUFFER|CHILD-NUM|CLASS-TYPE|CLEAR|CLEAR-APPL-CONTEXT|CLEAR-LOG|clear-select|clear-selecti|clear-selectio|clear-selection|clear-sort-arrow|clear-sort-arrows|CLIENT-CONNECTION-ID|CLIENT-TTY|CLIENT-TYPE|CLIENT-WORKSTATION|CLONE-NODE|CLOSE-LOG|CODE|CODEPAGE|COLUMN|column-bgc|column-bgco|column-bgcol|column-bgcolo|column-bgcolor|COLUMN-DCOLOR|column-fgc|column-fgco|column-fgcol|column-fgcolo|column-fgcolor|COLUMN-FONT|column-lab|column-labe|column-label|COLUMN-MOVABLE|column-pfc|column-pfco|column-pfcol|column-pfcolo|column-pfcolor|COLUMN-READ-ONLY|COLUMN-RESIZABLE|column-sc|column-scr|column-scro|column-scrol|column-scroll|column-scrolli|column-scrollin|column-scrolling|COM-HANDLE|COMPLETE|CONFIG-NAME|CONNECT|CONNECTED|CONTEXT-HELP|CONTEXT-HELP-FILE|CONTEXT-HELP-ID|CONTROL-BOX|convert-3d|convert-3d-|convert-3d-c|convert-3d-co|convert-3d-col|convert-3d-colo|convert-3d-color|convert-3d-colors|convert-to-offs|convert-to-offse|convert-to-offset|COPY-DATASET|COPY-SAX-ATTRIBUTES|COPY-TEMP-TABLE|COVERAGE|CPCASE|CPCOLL|cpint|cpinte|cpinter|cpintern|cpinterna|cpinternal|CPLOG|CPPRINT|CPRCODEIN|CPRCODEOUT|CPSTREAM|CPTERM|crc-val|crc-valu|crc-value|CREATE-LIKE|CREATE-LIKE-SEQUENTIAL|CREATE-NODE|CREATE-NODE-NAMESPACE|CREATE-RESULT-LIST-ENTRY|CURRENT-CHANGED|CURRENT-COLUMN|current-env|current-envi|current-envir|current-enviro|current-environ|current-environm|current-environme|current-environmen|current-environment|CURRENT-ITERATION|CURRENT-QUERY|CURRENT-REQUEST-INFO|CURRENT-RESPONSE-INFO|CURRENT-RESULT-ROW|CURRENT-ROW-MODIFIED|CURRENT-WINDOW|curs|curso|cursor|cursor-char|CURSOR-LINE|CURSOR-OFFSET)\\s*",
818
+ "capture": {
819
+ "1": {
820
+ "name": "entity.name.function.abl"
821
+ }
822
+ }
823
+ },
824
+ "handle-attributes-D": {
825
+ "match": "(?i):(data-entry-ret|data-entry-retu|data-entry-retur|data-entry-return|DATA-SOURCE|DATA-SOURCE-COMPLETE-MAP|DATA-SOURCE-MODIFIED|DATA-SOURCE-ROWID|data-t|data-ty|data-typ|data-type|DATASET|date-f|date-fo|date-for|date-form|date-forma|date-format|DB-CONTEXT|DB-LIST|DB-REFERENCES|DBNAME|DCOLOR|DDE-ERROR|dde-i|dde-id|DDE-ITEM|DDE-NAME|DDE-TOPIC|DEBLANK|debu|debug|debug-alert|dec|deci|decim|decima|decimal|decimals|DECLARE-NAMESPACE|DEFAULT|DEFAULT-BUFFER-HANDLE|default-but|default-butt|default-butto|default-button|DEFAULT-COMMIT|DEFAULT-STRING|DEFAULT-VALUE|DELETE|DELETE-CHAR|DELETE-CURRENT-ROW|DELETE-HEADER-ENTRY|DELETE-LINE|DELETE-NODE|DELETE-RESULT-LIST-ENTRY|DELETE-SELECTED-ROW|DELETE-SELECTED-ROWS|DELIMITER|descript|descripti|descriptio|description|DESELECT-FOCUSED-ROW|DESELECT-ROWS|DESELECT-SELECTED-ROW|DETACH-DATA-SOURCE|dir|directory|DISABLE|DISABLE-AUTO-ZAP|DISABLE-CONNECTIONS|DISABLE-DUMP-TRIGGERS|DISABLE-LOAD-TRIGGERS|discon|disconn|disconne|disconnec|disconnect|DISPLAY-MESSAGE|display-t|display-timezone|display-ty|display-typ|display-typess|DOMAIN-DESCRIPTION|DOMAIN-NAME|DOMAIN-TYPE|DOWN|DRAG-ENABLED|DROP-TARGET|DUMP-LOGGING-NOW|DYNAMIC)\\s*",
826
+ "capture": {
827
+ "1": {
828
+ "name": "entity.name.function.abl"
829
+ }
830
+ }
831
+ },
832
+ "handle-attributes-E": {
833
+ "match": "(?i):(edge-c|edge-ch|edge-cha|edge-char|edge-chars|edge-p|edge-pi|edge-pix|edge-pixe|edge-pixel|edge-pixels|EDIT-CAN-PASTE|EDIT-CAN-UNDO|EDIT-CLEAR|EDIT-COPY|EDIT-CUT|EDIT-PASTE|EDIT-UNDO|EMPTY|EMPTY-DATASET|EMPTY-TEMP-TABLE|ENABLE|ENABLE-CONNECTIONS|ENABLE-EVENTS|ENABLED|ENCODE-DOMAIN-ACCESS-CODE|ENCODING|ENCRYPT-AUDIT-MAC-KEY|ENCRYPTION-SALT|END-DOCUMENT|END-ELEMENT|END-EVENT-GROUP|END-FILE-DROP|END-USER-PROMPT|ENTITY-EXPANSION-LIMIT|ENTRY|ENTRY-TYPES-LIST|ERROR|error-col|error-colu|error-colum|error-columnsss|ERROR-OBJECT|ERROR-OBJECT-DETAIL|ERROR-ROW|ERROR-STACK-TRACE|ERROR-STRING|EVENT-GROUP-ID|EVENT-HANDLER|EVENT-HANDLER-OBJECT|EVENT-PROCEDURE|EVENT-PROCEDURE-CONTEXT|event-ty|event-typ|event-type|EXCLUSIVE-ID|EXECUTION-LOG|EXIT-CODE|EXPAND|EXPANDABLE|EXPORT|EXPORT-PRINCIPAL|EXTENT)\\s*",
834
+ "capture": {
835
+ "1": {
836
+ "name": "entity.name.function.abl"
837
+ }
838
+ }
839
+ },
840
+ "handle-attributes-F": {
841
+ "match": "(?i):(FETCH-SELECTED-ROW|FGCOfgc|fgco|fgcol|fgcolo|fgcolorLOR|file-create-d|file-create-da|file-create-dat|file-create-date|file-create-t|file-create-ti|file-create-tim|file-create-time|file-mod-d|file-mod-da|file-mod-dat|file-mod-date|file-mod-t|file-mod-ti|file-mod-tim|file-mod-time|FILE-NAME|file-off|file-offs|file-offse|file-offset|FILE-SIZE|FILE-TYPE|FILL|FILLED|FILL-MODE|FILL-WHERE-STRING|FIND-BY-ROWID|FIND-CURRENT|FIND-FIRST|FIND-LAST|FIND-UNIQUE|first-async|first-async-|first-async-r|first-async-re|first-async-req|first-async-requ|first-async-reque|first-async-reques|first-async-request|FIRST-BUFFER|FIRST-CHILD|FIRST-COLUMN|FIRST-DATASET|FIRST-DATA-SOURCE|FIRST-FORM|FIRST-OBJECT|FIRST-OF|first-proc|first-proce|first-proced|first-procedu|first-procedur|first-procedure|FIRST-QUERY|first-serv|first-serve|first-server|first-server-socket|FIRST-SOCKET|first-tab-i|first-tab-it|first-tab-ite|first-tab-item|FIT-LAST-COLUMN|FLAT-BUTTON|FOCUSED-ROW|FOCUSED-ROW-SELECTED|FONT|fore|foreg|foregr|foregro|foregrou|foregroun|foreground|FOREIGN-KEY-HIDDEN|FORM-INPUT|FORM-LONG-INPUT|forma|format|formatte|formatted|FORWARD-ONLY|fragmen|fragment|fram|frame|FRAME-COL|FRAME-NAME|FRAME-ROW|frame-spa|frame-spac|frame-spaci|frame-spacin|frame-spacing|FRAME-X|FRAME-Y|FREQUENCY|full-height|full-height-c|full-height-ch|full-height-cha|full-height-char|full-height-chars|full-height-p|full-height-pi|full-height-pix|full-height-pixe|full-height-pixel|full-height-pixels|full-pathn|full-pathna|full-pathnam|full-pathname|full-width-|full-width-c|full-width-ch|full-width-cha|full-width-char|full-width-chars|full-width-p|full-width-pi|full-width-pix|full-width-pixe|full-width-pixel|full-width-pixels|FUNCTION)\\s*",
842
+ "capture": {
843
+ "1": {
844
+ "name": "entity.name.function.abl"
845
+ }
846
+ }
847
+ },
848
+ "handle-attributes-G": {
849
+ "match": "(?i):(GET-ATTRIBUTE|GET-ATTRIBUTE-NODE|GET-BINARY-DATA|get-blue|get-blue-|get-blue-v|get-blue-va|get-blue-val|get-blue-valu|get-blue-value|get-browse-col|get-browse-colu|get-browse-colum|get-browse-column|GET-BUFFER-HANDLE|GET-BYTES-AVAILABLE|GET-CALLBACK-PROC-CONTEXT|GET-CALLBACK-PROC-NAME|GET-CGI-LIST|GET-CGI-VALUE|GET-CGI-LONG-VALUE|GET-CHANGES|GET-CHILD|get-child-rel|get-child-rela|get-child-relat|get-child-relati|get-child-relatio|get-child-relation|GET-CLIENT|GET-COLUMN|GET-CONFIG-VALUE|get-curr|get-curre|get-curren|get-current|GET-DATASET-BUFFER|GET-DOCUMENT-ELEMENT|GET-DROPPED-FILE|GET-DYNAMIC|GET-ERROR-COLUMN|GET-ERROR-ROW|GET-FILE-NAME|get-file-offse|get-file-offset|get-firs|get-first|get-green|get-green-|get-green-v|get-green-va|get-green-val|get-green-valu|get-green-value|get-header-entr|get-header-entry|GET-INDEX-BY-NAMESPACE-NAME|GET-INDEX-BY-QNAME|GET-ITERATION|GET-LAST|GET-LOCALNAME-BY-INDEX|GET-MESSAGE|GET-MESSAGE-TYPE|GET-NEXT|GET-NODE|GET-NUMBER|GET-PARENT|GET-PREV|GET-PRINTERS|GET-QNAME-BY-INDEX|get-red|get-red-|get-red-v|get-red-va|get-red-val|get-red-valu|get-red-value|get-rel|get-rela|get-relat|get-relati|get-relatio|get-relation|GET-REPOSITIONED-ROW|get-rgb|get-rgb-|get-rgb-v|get-rgb-va|get-rgb-val|get-rgb-valu|get-rgb-values|GET-ROW|GET-SAFE-USER|get-selected|get-selected-|get-selected-w|get-selected-wi|get-selected-wid|get-selected-widg|get-selected-widge|get-selected-widget|GET-SERIALIZED|GET-SIGNATURE|GET-SOCKET-OPTION|GET-SOURCE-BUFFER|GET-TAB-ITEM|get-text-height|get-text-height-c|get-text-height-ch|get-text-height-cha|get-text-height-char|get-text-height-chars|get-text-height-p|get-text-height-pi|get-text-height-pix|get-text-height-pixe|get-text-height-pixel|get-text-height-pixels|get-text-width|get-text-width-c|get-text-width-ch|get-text-width-cha|get-text-width-char|get-text-width-chars|get-text-width-p|get-text-width-pi|get-text-width-pix|get-text-width-pixe|get-text-width-pixel|get-text-width-pixels|GET-TOP-BUFFER|GET-TYPE-BY-INDEX|GET-TYPE-BY-NAMESPACE-NAME|GET-TYPE-BY-QNAME|GET-URI-BY-INDEX|GET-VALUE-BY-INDEX|GET-VALUE-BY-NAMESPACE-NAME|GET-VALUE-BY-QNAME|get-wait|get-wait-|get-wait-s|get-wait-st|get-wait-sta|get-wait-stat|get-wait-state|graphic-e|graphic-ed|graphic-edg|graphic-edge|grid-factor-h|grid-factor-ho|grid-factor-hor|grid-factor-hori|grid-factor-horiz|grid-factor-horizo|grid-factor-horizon|grid-factor-horizont|grid-factor-horizonta|grid-factor-horizontal|grid-factor-v|grid-factor-ve|grid-factor-ver|grid-factor-vert|grid-factor-verti|grid-factor-vertic|grid-factor-vertica|grid-factor-vertical|GRID-SNAP|grid-unit-height|grid-unit-height-c|grid-unit-height-ch|grid-unit-height-cha|grid-unit-height-char|grid-unit-height-chars|grid-unit-height-p|grid-unit-height-pi|grid-unit-height-pix|grid-unit-height-pixe|grid-unit-height-pixel|grid-unit-height-pixels|grid-unit-width|grid-unit-width-c|grid-unit-width-ch|grid-unit-width-cha|grid-unit-width-char|grid-unit-width-chars|grid-unit-width-p|grid-unit-width-pi|grid-unit-width-pix|grid-unit-width-pixe|grid-unit-width-pixel|grid-unit-width-pixels|GRID-VISIBLE|GROUP-BOX)\\s*",
850
+ "capture": {
851
+ "1": {
852
+ "name": "entity.name.function.abl"
853
+ }
854
+ }
855
+ },
856
+ "handle-attributes-H": {
857
+ "match": "(?i):(HANDLE|HANDLER|HAS-LOBS|HAS-RECORDS|height|height-c|height-ch|height-cha|height-char|height-chars|height-p|height-pi|height-pix|height-pixe|height-pixel|height-pixels|HELP|HIDDEN|horizo|horizon|horizont|horizonta|horizontal|HTML-CHARSET|HTML-END-OF-LINE|HTML-END-OF-PAGE|HTML-FRAME-BEGIN|HTML-FRAME-END|HTML-HEADER-BEGIN|HTML-HEADER-END|HTML-TITLE-BEGIN|HTML-TITLE-END|HWND)\\s*",
858
+ "capture": {
859
+ "1": {
860
+ "name": "entity.name.function.abl"
861
+ }
862
+ }
863
+ },
864
+ "handle-attributes-I": {
865
+ "match": "(?i):(icfparam|icfparame|icfparamet|icfparamete|icfparameter|ICON|ignore-current-mod|ignore-current-modi|ignore-current-modif|ignore-current-modifi|ignore-current-modifie|ignore-current-modified|IMAGE|IMAGE-DOWN|IMAGE-INSENSITIVE|IMAGE-UP|IMMEDIATE-DISPLAY|IMPORT-NODE|IMPORT-PRINCIPAL|INCREMENT-EXCLUSIVE-ID|INDEX|index-info|index-infor|index-inform|index-informa|index-informat|index-informati|index-informatio|index-information|IN-HANDLE|inherit-bgc|inherit-bgco|inherit-bgcol|inherit-bgcolo|inherit-bgcolor|inherit-fgc|inherit-fgco|inherit-fgcol|inherit-fgcolo|inherit-fgcolor|init|initial|INITIALIZE|INITIALIZE-DOCUMENT-TYPE|INITIATE|INNER-CHARS|INNER-LINES|INPUT-VALUE|INSERT|INSERT-ATTRIBUTE|insert-b|insert-ba|insert-bac|insert-back|insert-backt|insert-backta|insert-backtab|INSERT-BEFORE|INSERT-FILE|INSERT-ROW|INSERT-STRING|insert-t|insert-ta|insert-tab|INSTANTIATING-PROCEDURE|INTERNAL-ENTRIES|INVOKE|IS-CLASS|IS-JSON|IS-MULTI-TENANT|IS-OPEN|IS-PARAMETER-SET|is-partitione|is-partitioned|IS-ROW-SELECTED|IS-SELECTED|IS-XML|ITEMS-PER-ROW)\\s*",
866
+ "capture": {
867
+ "1": {
868
+ "name": "entity.name.function.abl"
869
+ }
870
+ }
871
+ },
872
+ "handle-attributes-K": {
873
+ "match": "(?i):(KEEP-CONNECTION-OPEN|keep-frame-z|keep-frame-z-|keep-frame-z-o|keep-frame-z-or|keep-frame-z-ord|keep-frame-z-orde|keep-frame-z-order|KEEP-SECURITY-CACHE|KEY|KEYS)\\s*",
874
+ "capture": {
875
+ "1": {
876
+ "name": "entity.name.function.abl"
877
+ }
878
+ }
879
+ },
880
+ "handle-attributes-L": {
881
+ "match": "(?i):(LABEL|label-bgc|label-bgco|label-bgcol|label-bgcolo|label-bgcolor|label-dc|label-dco|label-dcol|label-dcolo|label-dcolor|label-fgc|label-fgco|label-fgcol|label-fgcolo|label-fgcolor|LABEL-FONT|LABELS|LABELS-HAVE-COLONS|language|languages|LARGE|LARGE-TO-SMALL|last-async|last-async-|last-async-r|last-async-re|last-async-req|last-async-requ|last-async-reque|last-async-reques|last-async-request|LAST-BATCH|LAST-CHILD|last-even|last-event|LAST-FORM|LAST-OBJECT|LAST-OF|last-proce|last-proced|last-procedu|last-procedur|last-procedure|last-serv|last-serve|last-server|last-server-socket|LAST-SOCKET|last-tab-i|last-tab-it|last-tab-ite|last-tab-item|LENGTH|LIBRARY|LIBRARY-CALLING-CONVENTION|LINE|LIST-ITEM-PAIRS|LIST-ITEMS|LISTINGS|LITERAL-QUESTION|LOAD|LOAD-DOMAINS|LOAD-ICON|LOAD-IMAGE|LOAD-IMAGE-DOWN|LOAD-IMAGE-INSENSITIVE|LOAD-IMAGE-UP|load-mouse-p|load-mouse-po|load-mouse-poi|load-mouse-poin|load-mouse-point|load-mouse-pointe|load-mouse-pointer|LOAD-SMALL-ICON|LOCAL-HOST|LOCAL-NAME|LOCAL-PORT|LOCAL-VERSION-INFO|LOCATOR-COLUMN-NUMBER|LOCATOR-LINE-NUMBER|LOCATOR-PUBLIC-ID|LOCATOR-SYSTEM-ID|LOCATOR-TYPE|LOCKED|LOCK-REGISTRATION|LOG-AUDIT-EVENT|LOG-ENTRY-TYPES|LOG-THRESHOLD|LOGFILE-NAME|LOGGING-LEVEL|LOGIN-EXPIRATION-TIMESTAMP|LOGIN-HOST|LOGIN-STATE|LOGOUT|LONGCHAR-TO-NODE-VALUE|LOOKUP)\\s*",
882
+ "capture": {
883
+ "1": {
884
+ "name": "entity.name.function.abl"
885
+ }
886
+ }
887
+ },
888
+ "handle-attributes-M": {
889
+ "match": "(?i):(MANDATORY|MANUAL-HIGHLIGHT|MARK-NEW|MARK-ROW-STATE|MAX-BUTTON|MAX-CHARS|MAX-DATA-GUESS|max-height|max-height-c|max-height-ch|max-height-cha|max-height-char|max-height-chars|max-height-p|max-height-pi|max-height-pix|max-height-pixe|max-height-pixel|max-height-pixels|MAXIMUM-LEVEL|max-val|max-valu|max-value|max-width|max-width-c|max-width-ch|max-width-cha|max-width-char|max-width-chars|max-width-p|max-width-pi|max-width-pix|max-width-pixe|max-width-pixel|max-width-pixels|MEMPTR-TO-NODE-VALUE|MENU-BAR|menu-k|menu-ke|menu-key|menu-m|menu-mo|menu-mou|menu-mous|menu-mouse|MERGE-BY-FIELD|MERGE-CHANGES|MERGE-ROW-CHANGES|MESSAGE-AREA|MESSAGE-AREA-FONT|MIN-BUTTON|min-column-width-c|min-column-width-ch|min-column-width-cha|min-column-width-char|min-column-width-chars|min-column-width-p|min-column-width-pi|min-column-width-pix|min-column-width-pixe|min-column-width-pixel|min-column-width-pixels|min-height|min-height-c|min-height-ch|min-height-cha|min-height-char|min-height-chars|min-height-p|min-height-pi|min-height-pix|min-height-pixe|min-height-pixel|min-height-pixels|min-schema-marshal|min-schema-marshall|min-val|min-valu|min-value|min-width|min-width-c|min-width-ch|min-width-cha|min-width-char|min-width-chars|min-width-p|min-width-pi|min-width-pix|min-width-pixe|min-width-pixel|min-width-pixels|mod|modified|mouse|mouse-p|mouse-po|mouse-poi|mouse-poin|mouse-point|mouse-pointe|mouse-pointer|MOVABLE|move|move-after|move-after-|move-after-t|move-after-ta|move-after-tab|move-after-tab-|move-after-tab-i|move-after-tab-it|move-after-tab-ite|move-after-tab-item|move-befor|move-before|move-before-|move-before-t|move-before-ta|move-before-tab|move-before-tab-|move-before-tab-i|move-before-tab-it|move-before-tab-ite|move-before-tab-item|move-col|move-colu|move-colum|move-column|move-to-b|move-to-bo|move-to-bot|move-to-bott|move-to-botto|move-to-bottom|move-to-eof|move-to-t|move-to-to|move-to-top|MULTI-COMPILE|MULTIPLE|MULTITASKING-INTERVAL|MUST-UNDERSTAND)\\s*",
890
+ "capture": {
891
+ "1": {
892
+ "name": "entity.name.function.abl"
893
+ }
894
+ }
895
+ },
896
+ "handle-attributes-N": {
897
+ "match": "(?i):(NAME|NAMESPACE-PREFIX|NAMESPACE-URI|NEEDS-APPSERVER-PROMPT|NEEDS-PROMPT|NESTED|NEW|NEW-ROW|next-col|next-colu|next-colum|next-column|NEXT-ROWID|NEXT-SIBLING|next-tab-ite|next-tab-item|NO-CURRENT-VALUE|NO-EMPTY-SPACE|NO-FOCUS|NONAMESPACE-SCHEMA-LOCATION|no-schema-marshal|no-schema-marshall|no-val|no-vali|no-valid|no-valida|no-validat|no-validate|NODE-VALUE|NODE-VALUE-TO-LONGCHAR|NODE-VALUE-TO-MEMPTR|NORMALIZE|NUM-BUFFERS|num-but|num-butt|num-butto|num-button|num-buttons|NUM-CHILD-RELATIONS|NUM-CHILDREN|num-col|num-colu|num-colum|num-column|num-columns|NUM-DROPPED-FILES|NUM-ENTRIES|NUM-FIELDS|NUM-FORMATS|NUM-HEADER-ENTRIES|NUM-ITEMS|NUM-ITERATIONS|NUM-LINES|num-locked-col|num-locked-colu|num-locked-colum|num-locked-column|num-locked-columns|NUM-LOG-FILES|NUM-MESSAGES|NUM-PARAMETERS|NUM-REFERENCES|NUM-RELATIONS|num-repl|num-repla|num-replac|num-replace|num-replaced|NUM-RESULTS|num-selected|num-selected-rows|NUM-SELECTED-WIDGETS|NUM-SOURCE-BUFFERS|NUM-TABS|NUM-TO-RETAIN|NUM-TOP-BUFFERS|num-visible-col|num-visible-colu|num-visible-colum|num-visible-column|num-visible-columns|numeric|numeric-dec|numeric-deci|numeric-decim|numeric-decima|numeric-decimal|numeric-decimal-|numeric-decimal-p|numeric-decimal-po|numeric-decimal-poi|numeric-decimal-poin|numeric-decimal-point|numeric-f|numeric-fo|numeric-for|numeric-form|numeric-forma|numeric-format|numeric-sep|numeric-sepa|numeric-separ|numeric-separa|numeric-separat|numeric-separato|numeric-separator)\\s*",
898
+ "capture": {
899
+ "1": {
900
+ "name": "entity.name.function.abl"
901
+ }
902
+ }
903
+ },
904
+ "handle-attributes-O": {
905
+ "match": "(?i):(on-frame|on-frame-|on-frame-b|on-frame-bo|on-frame-bor|on-frame-bord|on-frame-borde|on-frame-border|OPTIONS|ORDINAL|ORIGIN-HANDLE|ORIGIN-ROWID|OVERLAY|OWNER|OWNER-DOCUMENT)\\s*",
906
+ "capture": {
907
+ "1": {
908
+ "name": "entity.name.function.abl"
909
+ }
910
+ }
911
+ },
912
+ "handle-attributes-P": {
913
+ "match": "(?i):(page-bot|page-bott|page-botto|page-bottom|PAGE-TOP|PARAMETER|PARENT|PARENT-BUFFER|PARENT-FIELDS-AFTER|PARENT-FIELDS-BEFORE|PARENT-ID-RELATION|parent-rel|parent-rela|parent-relat|parent-relati|parent-relatio|parent-relation|PARSE-STATUS|PASSWORD-FIELD|PATHNAME|pbe-hash-alg|pbe-hash-algo|pbe-hash-algor|pbe-hash-algori|pbe-hash-algorit|pbe-hash-algorith|pbe-hash-algorithm|PBE-KEY-ROUNDS|PERSISTENT|PERSISTENT-CACHE-DISABLED|PERSISTENT-PROCEDURE|pfc|pfco|pfcol|pfcolo|pfcolor|pixels-per-col|pixels-per-colu|pixels-per-colum|pixels-per-column|PIXELS-PER-ROW|popup-m|popup-me|popup-men|popup-menu|popup-o|popup-on|popup-onl|popup-only|POSITION|PREFER-DATASET|PREPARED|PREPARE-STRING|prev-col|prev-colu|prev-colum|prev-column|PREV-SIBLING|prev-tab-i|prev-tab-it|prev-tab-ite|prev-tab-item|PRIMARY|PRIMARY-PASSPHRASE|PRINTER-CONTROL-HANDLE|PRINTER-HDC|PRINTER-NAME|PRINTER-PORT|private-d|private-da|private-dat|private-data|PROCEDURE-NAME|PROCEDURE-TYPE|PROFILING|progress-s|progress-so|progress-sou|progress-sour|progress-sourc|progress-source|PROXY|PROXY-PASSWORD|PROXY-USERID|PUBLIC-ID|PUBLISHED-EVENTS)\\s*",
914
+ "capture": {
915
+ "1": {
916
+ "name": "entity.name.function.abl"
917
+ }
918
+ }
919
+ },
920
+ "handle-attributes-Q": {
921
+ "match": "(?i):(QUALIFIED-USER-ID|QUERY|QUERY-CLOSE|QUERY-OFF-END|QUERY-OPEN|QUERY-PREPARE|QUIT)\\s*",
922
+ "capture": {
923
+ "1": {
924
+ "name": "entity.name.function.abl"
925
+ }
926
+ }
927
+ },
928
+ "handle-attributes-R": {
929
+ "match": "(?i):(RADIO-BUTTONS|READ|READ-FILE|READ-JSON|READ-ONLY|READ-XML|READ-XMLSCHEMA|RECID|record-len|record-leng|record-lengt|record-length|RECURSIVE|REFRESH|REFRESHABLE|REFRESH-AUDIT-POLICY|REGISTER-DOMAIN|REJECT-CHANGES|REJECT-ROW-CHANGES|REJECTED|relation-fi|relation-fie|relation-fiel|relation-field|relation-fields|RELATIONS-ACTIVE|REMOTE|REMOTE-HOST|REMOTE-PORT|REMOVE-ATTRIBUTE|REMOVE-CHILD|remove-events-proc|remove-events-proce|remove-events-proced|remove-events-procedu|remove-events-procedur|remove-events-procedure|remove-super-proc|remove-super-proce|remove-super-proced|remove-super-procedu|remove-super-procedur|remove-super-procedure|REPLACE|REPLACE-CHILD|REPLACE-SELECTION-TEXT|REPOSITION|reposition-back|reposition-backw|reposition-backwa|reposition-backwar|reposition-backward|reposition-backwards|reposition-forw|reposition-forwa|reposition-forwar|reposition-forward|reposition-forwards|REPOSITION-TO-ROW|REPOSITION-TO-ROWID|REQUEST-INFO|RESET|resiza|resizab|resizabl|resizable|RESIZE|RESPONSE-INFO|RESTART-ROW|RESTART-ROWID|retain-s|retain-sh|retain-sha|retain-shap|retain-shape|return-ins|return-inse|return-inser|return-insert|return-inserte|return-inserted|RETURN-VALUE|RETURN-VALUE-DATA-TYPE|RETURN-VALUE-DLL-TYPE|ROLE|ROLES|ROUNDED|ROW|row-height|row-height-c|row-height-ch|row-height-cha|row-height-char|row-height-chars|row-height-p|row-height-pi|row-height-pix|row-height-pixe|row-height-pixel|row-height-pixels|ROW-STATE|ROWID|row-ma|row-mar|row-mark|row-marke|row-marker|row-markers|ROW-RESIZABLE)\\s*",
930
+ "capture": {
931
+ "1": {
932
+ "name": "entity.name.function.abl"
933
+ }
934
+ }
935
+ },
936
+ "handle-attributes-S": {
937
+ "match": "(?i):(SAVE|SAVE-FILE|SAVE-ROW-CHANGES|SAVE-WHERE-STRING|SAX-PARSE|SAX-PARSE-FIRST|SAX-PARSE-NEXT|sax-parser-error|SCHEMA-CHANGE|SCHEMA-LOCATION|SCHEMA-MARSHAL|SCHEMA-PATH|SCREEN-LINES|screen-val|screen-valu|screen-value|SCROLL-BARS|SCROLL-TO-CURRENT-ROW|scroll-to-i|scroll-to-it|scroll-to-ite|scroll-to-item|SCROLL-TO-SELECTED-ROW|SCROLLABLE|scrollbar-h|scrollbar-ho|scrollbar-hor|scrollbar-hori|scrollbar-horiz|scrollbar-horizo|scrollbar-horizon|scrollbar-horizont|scrollbar-horizonta|scrollbar-horizontal|scrollbar-v|scrollbar-ve|scrollbar-ver|scrollbar-vert|scrollbar-verti|scrollbar-vertic|scrollbar-vertica|scrollbar-verticalsss|SEAL-TIMESTAMP|SEARCH|SELECT-ALL|SELECT-FOCUSED-ROW|SELECT-NEXT-ROW|SELECT-PREV-ROW|SELECT-ROW|SELECTABLE|SELECTED|SELECTION-END|SELECTION-START|SELECTION-TEXT|SENSITIVE|SEPARATORS|SEPARATOR-FGCOLOR|SERIALIZE-HIDDEN|SERIALIZE-NAME|SERIALIZE-ROW|SERVER|server-connection-bo|server-connection-bou|server-connection-boun|server-connection-bound|server-connection-bound-re|server-connection-bound-req|server-connection-bound-requ|server-connection-bound-reque|server-connection-bound-reques|server-connection-bound-request|server-connection-co|server-connection-con|server-connection-cont|server-connection-conte|server-connection-contex|server-connection-context|server-connection-id|server-operating-mode|SESSION-END|SESSION-ID|SET-ACTOR|SET-APPL-CONTEXT|SET-ATTRIBUTE|SET-ATTRIBUTE-NODE|set-blue|set-blue-|set-blue-v|set-blue-va|set-blue-val|set-blue-valu|set-blue-value|SET-BREAK|SET-BUFFERS|SET-CALLBACK|SET-CALLBACK-PROCEDURE|SET-CLIENT|SET-COMMIT|SET-CONNECT-PROCEDURE|SET-DYNAMIC|set-green|set-green-|set-green-v|set-green-va|set-green-val|set-green-valu|set-green-value|SET-INPUT-SOURCE|SET-MUST-UNDERSTAND|SET-NODE|set-numeric-form|set-numeric-forma|set-numeric-format|SET-OUTPUT-DESTINATION|SET-PARAMETER|SET-READ-RESPONSE-PROCEDURE|set-red|set-red-|set-red-v|set-red-va|set-red-val|set-red-valu|set-red-value|SET-REPOSITIONED-ROW|SET-RGB-VALUE|SET-ROLE|SET-ROLLBACK|SET-SAFE-USER|SET-SELECTION|SET-SERIALIZED|SET-SOCKET-OPTION|SET-SORT-ARROW|set-wait|set-wait-|set-wait-s|set-wait-st|set-wait-sta|set-wait-stat|set-wait-state|show-in-task|show-in-taskb|show-in-taskba|show-in-taskbar|side-label-han|side-label-hand|side-label-handl|side-label-handle|SIDE-LABELS|signature|signature-value|SINGLE-RUN|SINGLETON|skip-deleted-rec|skip-deleted-reco|skip-deleted-recor|skip-deleted-record|SMALL-ICON|SMALL-TITLE|soap-fault-actor|soap-fault-code|soap-fault-detail|soap-fault-misunderstood-header|soap-fault-node|soap-fault-role|soap-fault-string|soap-fault-subcode|SOAP-VERSION|SORT|SORT-ASCENDING|SORT-NUMBER|SSL-SERVER-NAME|STANDALONE|START-DOCUMENT|START-ELEMENT|STARTUP-PARAMETERS|STATE-DETAIL|STATISTICS|STATUS-AREA|STATUS-AREA-FONT|STOP|STOP-OBJECT|STOP-PARSING|stoppe|stopped|STREAM|STRETCH-TO-FIT|STRICT|STRICT-ENTITY-RESOLUTION|STRING-VALUE|SUBTYPE|super-proc|super-proce|super-proced|super-procedu|super-procedur|super-procedure|super-procedures|SUPPRESS-NAMESPACE-PROCESSING|suppress-w|suppress-wa|suppress-war|suppress-warn|suppress-warni|suppress-warnin|suppress-warning|suppress-warnings|suppress-warnings-list|SYMMETRIC-ENCRYPTION-AAD|SYMMETRIC-ENCRYPTION-ALGORITHM|SYMMETRIC-ENCRYPTION-IV|SYMMETRIC-ENCRYPTION-KEY|SYMMETRIC-SUPPORT|SYNCHRONIZE|system-alert|system-alert-|system-alert-b|system-alert-bo|system-alert-box|system-alert-boxe|system-alert-boxes|SYSTEM-ID)\\s*",
938
+ "capture": {
939
+ "1": {
940
+ "name": "entity.name.function.abl"
941
+ }
942
+ }
943
+ },
944
+ "handle-attributes-T": {
945
+ "match": "(?i):(TAB-POSITION|TAB-STOP|TABLE|TABLE-CRC-LIST|TABLE-HANDLE|TABLE-LIST|table-num|table-numb|table-numbe|table-number|temp-dir|temp-dire|temp-direc|temp-direct|temp-directo|temp-director|temp-directory|temp-table-prepar|temp-table-prepare|TENANT-ID|TENANT-NAME|TEXT-SELECTED|THREAD-SAFE|THREE-D|TIC-MARKS|TIME-SOURCE|TIMEZONE|TITLE|title-bgc|title-bgco|title-bgcol|title-bgcolo|title-bgcolor|title-dc|title-dco|title-dcol|title-dcolo|title-dcolor|title-fgc|title-fgco|title-fgcol|title-fgcolo|title-fgcolor|title-fo|title-fon|title-font|TOGGLE-BOX|TOOLTIP|TOOLTIPS|TOP-NAV-QUERY|TOP-ONLY|TRACE-FILTER|TRACING|TRACKING-CHANGES|TRANSACTION|TRANSPARENT|trans-init-proc|trans-init-proce|trans-init-proced|trans-init-procedu|trans-init-procedur|trans-init-procedure|TYPE)\\s*",
946
+ "capture": {
947
+ "1": {
948
+ "name": "entity.name.function.abl"
949
+ }
950
+ }
951
+ },
952
+ "handle-attributes-U": {
953
+ "match": "(?i):(UNDO|UNDO-THROW-SCOPE|UNIQUE-ID|UNIQUE-MATCH|UPDATE-ATTRIBUTE|URL|URL-DECODE|URL-ENCODE|URL-PASSWORD|URL-USERID|USER-DATA |USER-ID)\\s*",
954
+ "capture": {
955
+ "1": {
956
+ "name": "entity.name.function.abl"
957
+ }
958
+ }
959
+ },
960
+ "handle-attributes-V": {
961
+ "match": "(?i):(V6DISPLAY|VALIDATE|VALIDATE-DOMAIN-ACCESS-CODE|validate-expressio|validate-expression|VALIDATE-MESSAGE|VALIDATE-SEAL|VALIDATE-XML|VALIDATION-ENABLED|VALUE|VERSION|VIEW-AS|VIEW-FIRST-COLUMN-ON-REOPEN|virtual-height|virtual-height-c|virtual-height-ch|virtual-height-cha|virtual-height-char|virtual-height-chars|virtual-height-p|virtual-height-pi|virtual-height-pix|virtual-height-pixe|virtual-height-pixel|virtual-height-pixels|virtual-width|virtual-width-c|virtual-width-ch|virtual-width-cha|virtual-width-char|virtual-width-chars|virtual-width-p|virtual-width-pi|virtual-width-pix|virtual-width-pixe|virtual-width-pixel|virtual-width-pixels|VISIBLE)\\s*",
962
+ "capture": {
963
+ "1": {
964
+ "name": "entity.name.function.abl"
965
+ }
966
+ }
967
+ },
968
+ "handle-attributes-W": {
969
+ "match": "(?i):(WARNING|WC-ADMIN-APP|WHERE-STRING|WIDGET-ENTER|WIDGET-ID|widget-l|widget-le|widget-lea|widget-leav|widget-leave|width|width-c|width-ch|width-cha|width-char|width-chars|width-p|width-pi|width-pix|width-pixe|width-pixel|width-pixels|WINDOW|window-sta|window-stat|window-state|window-sys|window-syst|window-syste|window-system|WORD-WRAP|work-area-height-p|work-area-height-pi|work-area-height-pix|work-area-height-pixe|work-area-height-pixel|work-area-height-pixels|work-area-width-p|work-area-width-pi|work-area-width-pix|work-area-width-pixe|work-area-width-pixel|work-area-width-pixels|work-area-x|work-area-y|WRITE|WRITE-CDATA|WRITE-CHARACTERS|WRITE-COMMENT|WRITE-DATA|WRITE-DATA-ELEMENT|WRITE-EMPTY-ELEMENT|WRITE-ENTITY-REF|WRITE-EXTERNAL-DTD|WRITE-FRAGMENT|WRITE-JSON|WRITE-MESSAGE|WRITE-PROCESSING-INSTRUCTION|WRITE-STATUS|WRITE-XML|WRITE-XMLSCHEMA)\\s*",
970
+ "capture": {
971
+ "1": {
972
+ "name": "entity.name.function.abl"
973
+ }
974
+ }
975
+ },
976
+ "handle-attributes-X": {
977
+ "match": "(?i):(X|X-DOCUMENT|XCODE-SESSION-KEY|XML-DATA-TYPE|XML-ENTITY-EXPANSION-LIMIT|XML-NODE-NAME|XML-NODE-TYPE|XML-SCHEMA-PATH|XML-STRICT-ENTITY-RESOLUTION|XML-SUPPRESS-NAMESPACE-PROCESSING)\\s*",
978
+ "capture": {
979
+ "1": {
980
+ "name": "entity.name.function.abl"
981
+ }
982
+ }
983
+ },
984
+ "handle-attributes-Y": {
985
+ "match": "(?i):(Y|YEAR-OFFSET)\\s*",
986
+ "capture": {
987
+ "1": {
988
+ "name": "entity.name.function.abl"
989
+ }
990
+ }
991
+ },
992
+ "abl-functions": {
993
+ "patterns": [
994
+ {
995
+ "include": "#abl-functions-A"
996
+ },
997
+ {
998
+ "include": "#abl-functions-B"
999
+ },
1000
+ {
1001
+ "include": "#abl-functions-C"
1002
+ },
1003
+ {
1004
+ "include": "#abl-functions-D"
1005
+ },
1006
+ {
1007
+ "include": "#abl-functions-E"
1008
+ },
1009
+ {
1010
+ "include": "#abl-functions-F"
1011
+ },
1012
+ {
1013
+ "include": "#abl-functions-G"
1014
+ },
1015
+ {
1016
+ "include": "#abl-functions-H"
1017
+ },
1018
+ {
1019
+ "include": "#abl-functions-I"
1020
+ },
1021
+ {
1022
+ "include": "#abl-functions-K"
1023
+ },
1024
+ {
1025
+ "include": "#abl-functions-L"
1026
+ },
1027
+ {
1028
+ "include": "#abl-functions-M"
1029
+ },
1030
+ {
1031
+ "include": "#abl-functions-N"
1032
+ },
1033
+ {
1034
+ "include": "#abl-functions-O"
1035
+ },
1036
+ {
1037
+ "include": "#abl-functions-P"
1038
+ },
1039
+ {
1040
+ "include": "#abl-functions-Q"
1041
+ },
1042
+ {
1043
+ "include": "#abl-functions-R"
1044
+ },
1045
+ {
1046
+ "include": "#abl-functions-S"
1047
+ },
1048
+ {
1049
+ "include": "#abl-functions-T"
1050
+ },
1051
+ {
1052
+ "include": "#abl-functions-U"
1053
+ },
1054
+ {
1055
+ "include": "#abl-functions-V"
1056
+ },
1057
+ {
1058
+ "include": "#abl-functions-W"
1059
+ },
1060
+ {
1061
+ "include": "#abl-functions-Y"
1062
+ }
1063
+ ]
1064
+ },
1065
+ "abl-functions-A": {
1066
+ "name": "meta.function-call.abl",
1067
+ "begin": "(?i)\\s*(ABSOLUTE|ACCUM|ADD-INTERVAL|ALIAS|AMBIGUOUS|ASC|AUDIT-ENABLED|AVAILABLE)\\s*(?=\\()",
1068
+ "beginCaptures": {
1069
+ "1": {
1070
+ "name": "support.function.abl"
1071
+ }
1072
+ },
1073
+ "end": "(?=\\))",
1074
+ "patterns": [
1075
+ {
1076
+ "include": "#function-arguments"
1077
+ },
1078
+ {
1079
+ "include": "#parens"
1080
+ }
1081
+ ]
1082
+ },
1083
+ "abl-functions-B": {
1084
+ "name": "meta.function-call.abl",
1085
+ "begin": "(?i)\\s*(BASE64-DECODE|BASE64-ENCODE|BOX|BUFFER-GROUP-ID|BUFFER-GROUP-NAME|BUFFER-PARTITION-ID|BUFFER-TENANT-ID|BUFFER-TENANT-NAME)\\s*(?=\\()",
1086
+ "beginCaptures": {
1087
+ "1": {
1088
+ "name": "support.function.abl"
1089
+ }
1090
+ },
1091
+ "end": "(?=\\))",
1092
+ "patterns": [
1093
+ {
1094
+ "include": "#function-arguments"
1095
+ },
1096
+ {
1097
+ "include": "#parens"
1098
+ }
1099
+ ]
1100
+ },
1101
+ "abl-functions-C": {
1102
+ "name": "meta.function-call.abl",
1103
+ "begin": "(?i)\\s*(CAN-DO|CAN-FIND|CAN-QUERY|CAN-SET|CAPS|CAST|CHR|CODEPAGE-CONVERT|COMPARE|CONNECTED|COUNT-OF|CURRENT-CHANGED|CURRENT-LANGUAGE|CURRENT-RESULT-ROW|CURRENT-VALUE)\\s*(?=\\()",
1104
+ "beginCaptures": {
1105
+ "1": {
1106
+ "name": "support.function.abl"
1107
+ }
1108
+ },
1109
+ "end": "(?=\\))",
1110
+ "patterns": [
1111
+ {
1112
+ "include": "#function-arguments"
1113
+ },
1114
+ {
1115
+ "include": "#parens"
1116
+ }
1117
+ ]
1118
+ },
1119
+ "abl-functions-D": {
1120
+ "name": "meta.function-call.abl",
1121
+ "begin": "(?i)\\s*(DATASERVERS|DATA-SOURCE-MODIFIED|DATE|DATETIME|DATETIME-TZ|DAY|DBCODEPAGE|DBCOLLATION|DBNAME|DBPARAM|DB-REMOTE-HOST|DBRESTRICTIONS|DBTASKID|DBTYPE|DBVERSION|DECIMAL|DECRYPT|DEFINED|DYNAMIC-CAST|DYNAMIC-CURRENT-VALUE|DYNAMIC-ENUM|DYNAMIC-FUNCTION|DYNAMIC-INVOKE|DYNAMIC-NEXT-VALUE|DYNAMIC-PROPERTY)\\s*(?=\\()",
1122
+ "beginCaptures": {
1123
+ "1": {
1124
+ "name": "support.function.abl"
1125
+ }
1126
+ },
1127
+ "end": "(?=\\))",
1128
+ "patterns": [
1129
+ {
1130
+ "include": "#function-arguments"
1131
+ },
1132
+ {
1133
+ "include": "#parens"
1134
+ }
1135
+ ]
1136
+ },
1137
+ "abl-functions-E": {
1138
+ "name": "meta.function-call.abl",
1139
+ "begin": "(?i)\\s*(ENCODE|ENCRYPT|ENTERED|ENTRY|ERROR|ETIME|EXP|EXTENT)\\s*(?=\\()",
1140
+ "beginCaptures": {
1141
+ "1": {
1142
+ "name": "support.function.abl"
1143
+ }
1144
+ },
1145
+ "end": "(?=\\))",
1146
+ "patterns": [
1147
+ {
1148
+ "include": "#function-arguments"
1149
+ },
1150
+ {
1151
+ "include": "#parens"
1152
+ }
1153
+ ]
1154
+ },
1155
+ "abl-functions-F": {
1156
+ "name": "meta.function-call.abl",
1157
+ "begin": "(?i)\\s*(FILL|FIRST|FIRST-OF|FRAME-COL|FRAME-DB|FRAME-DOWN|FRAME-FIELD|FRAME-FILE|FRAME-INDEX|FRAME-LINE|FRAME-NAME|FRAME-ROW|FRAME-VALUE)\\s*(?=\\()",
1158
+ "beginCaptures": {
1159
+ "1": {
1160
+ "name": "support.function.abl"
1161
+ }
1162
+ },
1163
+ "end": "(?=\\))",
1164
+ "patterns": [
1165
+ {
1166
+ "include": "#function-arguments"
1167
+ },
1168
+ {
1169
+ "include": "#parens"
1170
+ }
1171
+ ]
1172
+ },
1173
+ "abl-functions-G": {
1174
+ "name": "meta.function-call.abl",
1175
+ "begin": "(?i)\\s*(GATEWAYS|GENERATE-PBE-KEY|GENERATE-PBE-SALT|GENERATE-RANDOM-KEY|GENERATE-UUID|GET-BITS|GET-BYTE|GET-BYTE-ORDER|GET-BYTES|GET-CLASS|GET-CODEPAGE|GET-CODEPAGES|GET-COLLATION|GET-COLLATIONS|GET-DB-CLIENT|GET-DOUBLE|GET-EFFECTIVE-TENANT-ID|GET-EFFECTIVE-TENANT-NAME|GET-FLOAT|GET-INT64|GET-LONG|GET-POINTER-VALUE|GET-SHORT|GET-SIZE|GET-STRING|GET-UNSIGNED-LONG|GET-UNSIGNED-SHORT|GO-PENDING|GUID)\\s*(?=\\()",
1176
+ "beginCaptures": {
1177
+ "1": {
1178
+ "name": "support.function.abl"
1179
+ }
1180
+ },
1181
+ "end": "(?=\\))",
1182
+ "patterns": [
1183
+ {
1184
+ "include": "#function-arguments"
1185
+ },
1186
+ {
1187
+ "include": "#parens"
1188
+ }
1189
+ ]
1190
+ },
1191
+ "abl-functions-H": {
1192
+ "name": "meta.function-call.abl",
1193
+ "begin": "(?i)\\s*(HANDLE|HASH-CODE|HEX-DECODE|HEX-ENCODE)\\s*(?=\\()",
1194
+ "beginCaptures": {
1195
+ "1": {
1196
+ "name": "support.function.abl"
1197
+ }
1198
+ },
1199
+ "end": "(?=\\))",
1200
+ "patterns": [
1201
+ {
1202
+ "include": "#function-arguments"
1203
+ },
1204
+ {
1205
+ "include": "#parens"
1206
+ }
1207
+ ]
1208
+ },
1209
+ "abl-functions-I": {
1210
+ "name": "meta.function-call.abl",
1211
+ "begin": "(?i)\\s*(INDEX|INPUT|INT64|INTEGER|INTERVAL|IS-ATTR-SPACE|IS-CODEPAGE-FIXED|IS-COLUMN-CODEPAGE|IS-DB-MULTI-TENANT|IS-LEAD-BYTE|ISO-DATE)\\s*(?=\\()",
1212
+ "beginCaptures": {
1213
+ "1": {
1214
+ "name": "support.function.abl"
1215
+ }
1216
+ },
1217
+ "end": "(?=\\))",
1218
+ "patterns": [
1219
+ {
1220
+ "include": "#function-arguments"
1221
+ },
1222
+ {
1223
+ "include": "#parens"
1224
+ }
1225
+ ]
1226
+ },
1227
+ "abl-functions-K": {
1228
+ "name": "meta.function-call.abl",
1229
+ "begin": "(?i)\\s*(KBLABEL|KEYCODE|KEYFUNCTION|KEYLABEL|KEYWORD|KEYWORD-ALL)\\s*(?=\\()",
1230
+ "beginCaptures": {
1231
+ "1": {
1232
+ "name": "support.function.abl"
1233
+ }
1234
+ },
1235
+ "end": "(?=\\))",
1236
+ "patterns": [
1237
+ {
1238
+ "include": "#function-arguments"
1239
+ },
1240
+ {
1241
+ "include": "#parens"
1242
+ }
1243
+ ]
1244
+ },
1245
+ "abl-functions-L": {
1246
+ "name": "meta.function-call.abl",
1247
+ "begin": "(?i)\\s*(LAST|LASTKEY|LAST-OF|LC|LDBNAME|LEFT-TRIM|LENGTH|LIBRARY|LINE-COUNTER|LIST-EVENTS|LIST-QUERY-ATTRS|LIST-SET-ATTRS|LIST-WIDGETS|LOCKED|LOG|LOGICAL|Logical values|LOOKUP)\\s*(?=\\()",
1248
+ "beginCaptures": {
1249
+ "1": {
1250
+ "name": "support.function.abl"
1251
+ }
1252
+ },
1253
+ "end": "(?=\\))",
1254
+ "patterns": [
1255
+ {
1256
+ "include": "#function-arguments"
1257
+ },
1258
+ {
1259
+ "include": "#parens"
1260
+ }
1261
+ ]
1262
+ },
1263
+ "abl-functions-M": {
1264
+ "name": "meta.function-call.abl",
1265
+ "begin": "(?i)\\s*(MAXIMUM|MD5-DIGEST|MEMBER|MESSAGE-DIGEST|MESSAGE-LINES|MINIMUM|MONTH|MTIME)\\s*(?=\\()",
1266
+ "beginCaptures": {
1267
+ "1": {
1268
+ "name": "support.function.abl"
1269
+ }
1270
+ },
1271
+ "end": "(?=\\))",
1272
+ "patterns": [
1273
+ {
1274
+ "include": "#function-arguments"
1275
+ },
1276
+ {
1277
+ "include": "#parens"
1278
+ }
1279
+ ]
1280
+ },
1281
+ "abl-functions-N": {
1282
+ "name": "meta.function-call.abl",
1283
+ "begin": "(?i)\\s*(NEXT-VALUE|NORMALIZE|NOT ENTERED|NOW|NUM-ALIASES|NUM-DBS|NUM-ENTRIES|NUM-RESULTS)\\s*(?=\\()",
1284
+ "beginCaptures": {
1285
+ "1": {
1286
+ "name": "support.function.abl"
1287
+ }
1288
+ },
1289
+ "end": "(?=\\))",
1290
+ "patterns": [
1291
+ {
1292
+ "include": "#function-arguments"
1293
+ },
1294
+ {
1295
+ "include": "#parens"
1296
+ }
1297
+ ]
1298
+ },
1299
+ "abl-functions-O": {
1300
+ "name": "meta.function-call.abl",
1301
+ "begin": "(?i)\\s*(OPSYS|OS-DRIVES|OS-ERROR|OS-GETENV)\\s*(?=\\()",
1302
+ "beginCaptures": {
1303
+ "1": {
1304
+ "name": "support.function.abl"
1305
+ }
1306
+ },
1307
+ "end": "(?=\\))",
1308
+ "patterns": [
1309
+ {
1310
+ "include": "#function-arguments"
1311
+ },
1312
+ {
1313
+ "include": "#parens"
1314
+ }
1315
+ ]
1316
+ },
1317
+ "abl-functions-P": {
1318
+ "name": "meta.function-call.abl",
1319
+ "begin": "(?i)\\s*(PAGE-NUMBER|PAGE-SIZE|PDBNAME|proc-ha|proc-han|proc-hand|proc-handl|proc-handle|PROGRAM-NAME|PROGRESS|PROMSGS|PROPATH|provers|proversi|proversio|proversion)\\s*(?=\\()",
1320
+ "beginCaptures": {
1321
+ "1": {
1322
+ "name": "support.function.abl"
1323
+ }
1324
+ },
1325
+ "end": "(?=\\))",
1326
+ "patterns": [
1327
+ {
1328
+ "include": "#function-arguments"
1329
+ },
1330
+ {
1331
+ "include": "#parens"
1332
+ }
1333
+ ]
1334
+ },
1335
+ "abl-functions-Q": {
1336
+ "name": "meta.function-call.abl",
1337
+ "begin": "(?i)\\s*(QUERY-OFF-END|QUOTER)\\s*(?=\\()",
1338
+ "beginCaptures": {
1339
+ "1": {
1340
+ "name": "support.function.abl"
1341
+ }
1342
+ },
1343
+ "end": "(?=\\))",
1344
+ "patterns": [
1345
+ {
1346
+ "include": "#function-arguments"
1347
+ },
1348
+ {
1349
+ "include": "#parens"
1350
+ }
1351
+ ]
1352
+ },
1353
+ "abl-functions-R": {
1354
+ "name": "meta.function-call.abl",
1355
+ "begin": "(?i)\\s*(R-INDEX|RANDOM|RAW|RAW-TRANSFER|RECID|RECORD-LENGTH|REJECTED|REPLACE|RETRY|RETURN-VALUE|rgb-v|rgb-va|rgb-val|rgb-valu|rgb-value|RIGHT-TRIM|ROUND|ROW-STATE|ROWID)\\s*(?=\\()",
1356
+ "beginCaptures": {
1357
+ "1": {
1358
+ "name": "support.function.abl"
1359
+ }
1360
+ },
1361
+ "end": "(?=\\))",
1362
+ "patterns": [
1363
+ {
1364
+ "include": "#function-arguments"
1365
+ },
1366
+ {
1367
+ "include": "#parens"
1368
+ }
1369
+ ]
1370
+ },
1371
+ "abl-functions-S": {
1372
+ "name": "meta.function-call.abl",
1373
+ "begin": "(?i)\\s*(SCREEN-LINES|SDBNAME|SEAL|SEARCH|SEEK|SET-DB-CLIENT|SET-EFFECTIVE-TENANT|set-attribute|set-attribute-node|set-rgb|set-byte-order|set-rgb-|set-rgb-v|set-rgb-va|set-rgb-val|set-rgb-valu|set-rgb-value|setuser|setuseri|setuserid|SHA1-DIGEST|SQRT|SSL-SERVER-NAME|subst|substi|substit|substitu|substitut|substitute|substr|substri|substrin|substring|SUPER)\\s*(?=\\()",
1374
+ "beginCaptures": {
1375
+ "1": {
1376
+ "name": "support.function.abl"
1377
+ }
1378
+ },
1379
+ "end": "(?=\\))",
1380
+ "patterns": [
1381
+ {
1382
+ "include": "#function-arguments"
1383
+ },
1384
+ {
1385
+ "include": "#parens"
1386
+ }
1387
+ ]
1388
+ },
1389
+ "abl-functions-T": {
1390
+ "name": "meta.function-call.abl",
1391
+ "begin": "(?i)\\s*(TENANT-ID|TENANT-NAME|TENANT-NAME-TO-ID|TERMINAL|TIME|TIMEZONE|TODAY|TO-ROWID|TRANSACTION|TRIM|TRUNCATE|TYPE-OF)\\s*(?=\\()",
1392
+ "beginCaptures": {
1393
+ "1": {
1394
+ "name": "support.function.abl"
1395
+ }
1396
+ },
1397
+ "end": "(?=\\))",
1398
+ "patterns": [
1399
+ {
1400
+ "include": "#function-arguments"
1401
+ },
1402
+ {
1403
+ "include": "#parens"
1404
+ }
1405
+ ]
1406
+ },
1407
+ "abl-functions-U": {
1408
+ "name": "meta.function-call.abl",
1409
+ "begin": "(?i)\\s*(UNBOX|USERID)\\s*(?=\\()",
1410
+ "beginCaptures": {
1411
+ "1": {
1412
+ "name": "support.function.abl"
1413
+ }
1414
+ },
1415
+ "end": "(?=\\))",
1416
+ "patterns": [
1417
+ {
1418
+ "include": "#function-arguments"
1419
+ },
1420
+ {
1421
+ "include": "#parens"
1422
+ }
1423
+ ]
1424
+ },
1425
+ "abl-functions-V": {
1426
+ "name": "meta.function-call.abl",
1427
+ "begin": "(?i)\\s*(VALID-EVENT|VALID-HANDLE|VALID-OBJECT)\\s*(?=\\()",
1428
+ "beginCaptures": {
1429
+ "1": {
1430
+ "name": "support.function.abl"
1431
+ }
1432
+ },
1433
+ "end": "(?=\\))",
1434
+ "patterns": [
1435
+ {
1436
+ "include": "#function-arguments"
1437
+ },
1438
+ {
1439
+ "include": "#parens"
1440
+ }
1441
+ ]
1442
+ },
1443
+ "abl-functions-W": {
1444
+ "name": "meta.function-call.abl",
1445
+ "begin": "(?i)\\s*(WEEKDAY|WIDGET-HANDLE)\\s*(?=\\()",
1446
+ "beginCaptures": {
1447
+ "1": {
1448
+ "name": "support.function.abl"
1449
+ }
1450
+ },
1451
+ "end": "(?=\\))",
1452
+ "patterns": [
1453
+ {
1454
+ "include": "#function-arguments"
1455
+ },
1456
+ {
1457
+ "include": "#parens"
1458
+ }
1459
+ ]
1460
+ },
1461
+ "abl-functions-Y": {
1462
+ "name": "meta.function-call.abl",
1463
+ "begin": "(?i)\\s*(YEAR)\\s*(?=\\()",
1464
+ "beginCaptures": {
1465
+ "1": {
1466
+ "name": "support.function.abl"
1467
+ }
1468
+ },
1469
+ "end": "(?=\\))",
1470
+ "patterns": [
1471
+ {
1472
+ "include": "#function-arguments"
1473
+ },
1474
+ {
1475
+ "include": "#parens"
1476
+ }
1477
+ ]
1478
+ },
1479
+ "define-interface": {
1480
+ "name": "meta.define.interface.abl",
1481
+ "begin": "(?i)\\s*(interface)\\s*([\\w\\#\\$\\%]+[\\w\\#\\$\\%\\.]*(\\s*<\\s*[\\w\\#\\$\\%\\.]+\\s*\\>)?)",
1482
+ "beginCaptures": {
1483
+ "1": {
1484
+ "name": "keyword.other.abl"
1485
+ },
1486
+ "2": {
1487
+ "name": "entity.name.type.abl"
1488
+ }
1489
+ },
1490
+ "end": "\\s*(:)",
1491
+ "endCaptures": {
1492
+ "1": {
1493
+ "name": "punctuation.terminator.abl"
1494
+ }
1495
+ },
1496
+ "patterns": [
1497
+ {
1498
+ "match": "(?i)\\s*(inherits|implements)\\s*",
1499
+ "captures": {
1500
+ "1": {
1501
+ "name": "keyword.other.abl"
1502
+ }
1503
+ }
1504
+ },
1505
+ {
1506
+ "include": "#implements-type"
1507
+ },
1508
+ {
1509
+ "include": "#type-name-comma"
1510
+ }
1511
+ ]
1512
+ },
1513
+ "inherits-implements-type": {
1514
+ "name": "meta.define-type.implements.abl",
1515
+ "begin": "(?i)\\s*(implements|inherits)\\s*(([\\w\\#\\$\\%]+|progress)(\\.[\\w\\#\\$\\%]+)*(?<!\\.))\\s*",
1516
+ "end": "(?i)\\s*(serializable|abstract|final|use-widget-pool|inherits|implements+?)",
1517
+ "beginCaptures": {
1518
+ "1": {
1519
+ "name": "keyword.other.abl"
1520
+ },
1521
+ "2": {
1522
+ "name": "entity.name.type.abl"
1523
+ }
1524
+ },
1525
+ "endCaptures": {
1526
+ "1": {
1527
+ "name": "keyword.other.abl"
1528
+ }
1529
+ },
1530
+ "patterns": [
1531
+ {
1532
+ "include": "#type-name-comma"
1533
+ }
1534
+ ]
1535
+ },
1536
+ "define-enum": {
1537
+ "patterns": [
1538
+ {
1539
+ "name": "meta.define.enum.abl",
1540
+ "match": "(?i)(enum)\\s+([\\w\\#\\$\\%\\.]+)\\s*(flags)?\\s*(:)",
1541
+ "captures": {
1542
+ "1": {
1543
+ "name": "keyword.other.abl"
1544
+ },
1545
+ "2": {
1546
+ "name": "entity.name.type.abl"
1547
+ },
1548
+ "3": {
1549
+ "name": "keyword.other.abl"
1550
+ },
1551
+ "4": {
1552
+ "name": "punctuation.terminator.abl"
1553
+ }
1554
+ }
1555
+ }
1556
+ ]
1557
+ },
1558
+ "awttribute-access": {
1559
+ "begin": ":",
1560
+ "end": "(?=:)|(?=\\s*)",
1561
+ "comment": "",
1562
+ "patterns": []
1563
+ },
1564
+ "parens": {
1565
+ "match": "\\(|\\)",
1566
+ "name": "meta.brace.round.js"
1567
+ },
1568
+ "new-class": {
1569
+ "begin": "(?i)(new)\\s*",
1570
+ "beginCaptures": {
1571
+ "1": {
1572
+ "name": "keyword.other.abl"
1573
+ }
1574
+ },
1575
+ "end": "(?=\\()",
1576
+ "patterns": [
1577
+ {
1578
+ "include": "#type-name-generic-progress"
1579
+ },
1580
+ {
1581
+ "include": "#type-name-generic"
1582
+ },
1583
+ {
1584
+ "include": "#type-name-comma-progress"
1585
+ },
1586
+ {
1587
+ "include": "#type-name-progress"
1588
+ },
1589
+ {
1590
+ "include": "#type-name-comma"
1591
+ },
1592
+ {
1593
+ "include": "#type-name"
1594
+ },
1595
+ {
1596
+ "include": "#string"
1597
+ }
1598
+ ]
1599
+ },
1600
+ "get-class": {
1601
+ "name": "meta.function-call.abl",
1602
+ "begin": "(?i)\\s*(get-class)\\s*(\\()",
1603
+ "beginCaptures": {
1604
+ "1": {
1605
+ "name": "entity.name.function.abl"
1606
+ },
1607
+ "2": {
1608
+ "name": "meta.brace.round.js"
1609
+ }
1610
+ },
1611
+ "end": "(\\))",
1612
+ "endCaptures": {
1613
+ "1": {
1614
+ "name": "meta.brace.round.js"
1615
+ }
1616
+ },
1617
+ "patterns": [
1618
+ {
1619
+ "include": "#string"
1620
+ },
1621
+ {
1622
+ "include": "#type-names"
1623
+ }
1624
+ ]
1625
+ },
1626
+ "find-record": {
1627
+ "match": "(?i)\\s*(find)\\s+(first|last|next|prev|current)?\\s*([\\w\\-#$%]+)\\s*",
1628
+ "captures": {
1629
+ "1": {
1630
+ "name": "keyword.other.abl"
1631
+ },
1632
+ "2": {
1633
+ "name": "keyword.other.abl"
1634
+ },
1635
+ "3": {
1636
+ "name": "storage.data.table.abl"
1637
+ }
1638
+ }
1639
+ },
1640
+ "type-argument-function": {
1641
+ "name": "meta.function-call.abl",
1642
+ "begin": "(?i)\\s*(cast|type-of)\\s*",
1643
+ "beginCaptures": {
1644
+ "1": {
1645
+ "name": "support.function.abl"
1646
+ }
1647
+ },
1648
+ "end": "(?<=\\))",
1649
+ "endCaptures": {
1650
+ "1": {
1651
+ "name": "meta.brace.round.js"
1652
+ }
1653
+ },
1654
+ "patterns": [
1655
+ {
1656
+ "comment": "This can only be ttable.field, never db.table.field, since only TT's can hold objects",
1657
+ "match": "\\s*(([\\w\\-#$%]+)\\.([\\w\\-#$%]+))\\s*(,)",
1658
+ "captures": {
1659
+ "1": {
1660
+ "name": "storage.data.table.abl"
1661
+ },
1662
+ "4": {
1663
+ "name": "punctuation.separator.comma.abl"
1664
+ }
1665
+ }
1666
+ },
1667
+ {
1668
+ "match": "\\s*([a-zA-Z][a-zA-Z0-9\\#\\$\\-\\_\\%\\&]*)\\s*((,)|(?=:))",
1669
+ "captures": {
1670
+ "1": {
1671
+ "name": "variable.other.abl"
1672
+ },
1673
+ "3": {
1674
+ "name": "punctuation.separator.comma.abl"
1675
+ }
1676
+ }
1677
+ },
1678
+ {
1679
+ "match": "\\s*:([\\w-]+)\\s*(,)",
1680
+ "captures": {
1681
+ "1": {
1682
+ "name": "entity.name.function.abl"
1683
+ },
1684
+ "2": {
1685
+ "name": "punctuation.separator.comma.abl"
1686
+ }
1687
+ }
1688
+ },
1689
+ {
1690
+ "include": "#expression"
1691
+ },
1692
+ {
1693
+ "include": "#property-call"
1694
+ },
1695
+ {
1696
+ "include": "#static-object-property-call"
1697
+ },
1698
+ {
1699
+ "include": "#doublequotedstring"
1700
+ },
1701
+ {
1702
+ "include": "#singlequotedstring"
1703
+ },
1704
+ {
1705
+ "include": "#translation-attribute"
1706
+ },
1707
+ {
1708
+ "include": "#type-name-generic-progress"
1709
+ },
1710
+ {
1711
+ "include": "#type-name-generic"
1712
+ },
1713
+ {
1714
+ "include": "#type-name-comma-progress"
1715
+ },
1716
+ {
1717
+ "include": "#type-name-progress"
1718
+ },
1719
+ {
1720
+ "include": "#type-name-comma"
1721
+ },
1722
+ {
1723
+ "include": "#type-name"
1724
+ },
1725
+ {
1726
+ "include": "#parens"
1727
+ }
1728
+ ]
1729
+ },
1730
+ "code-block": {
1731
+ "patterns": [
1732
+ {
1733
+ "include": "#singlelinecomment"
1734
+ },
1735
+ {
1736
+ "include": "#multilinecomment"
1737
+ },
1738
+ {
1739
+ "include": "#string"
1740
+ },
1741
+ {
1742
+ "include": "#language-functions"
1743
+ },
1744
+ {
1745
+ "include": "#numeric"
1746
+ },
1747
+ {
1748
+ "include": "#constant"
1749
+ },
1750
+ {
1751
+ "include": "#operator"
1752
+ },
1753
+ {
1754
+ "include": "#include-file"
1755
+ },
1756
+ {
1757
+ "include": "#define"
1758
+ },
1759
+ {
1760
+ "include": "#block-statement"
1761
+ },
1762
+ {
1763
+ "include": "#property-call"
1764
+ },
1765
+ {
1766
+ "include": "#abl-system-handles"
1767
+ },
1768
+ {
1769
+ "include": "#keywords"
1770
+ },
1771
+ {
1772
+ "include": "#variable-name"
1773
+ },
1774
+ {
1775
+ "include": "#type-reference"
1776
+ },
1777
+ {
1778
+ "include": "#method-call"
1779
+ },
1780
+ {
1781
+ "include": "#static-object-property-call"
1782
+ },
1783
+ {
1784
+ "include": "#function-call"
1785
+ },
1786
+ {
1787
+ "match": "(\\.)\\s*$",
1788
+ "captures": {
1789
+ "1": {
1790
+ "name": "punctuation.terminator.abl"
1791
+ }
1792
+ }
1793
+ }
1794
+ ]
1795
+ },
1796
+ "property-accessor": {
1797
+ "patterns": [
1798
+ {
1799
+ "include": "#property-get-empty"
1800
+ },
1801
+ {
1802
+ "include": "#property-set-empty"
1803
+ },
1804
+ {
1805
+ "include": "#property-get-block"
1806
+ },
1807
+ {
1808
+ "include": "#property-set-block"
1809
+ }
1810
+ ]
1811
+ },
1812
+ "property-get-empty": {
1813
+ "name": "meta.define.getter.abl",
1814
+ "match": "\\s*(get)\\s*(super)?\\s*(?=\\.)",
1815
+ "captures": {
1816
+ "1": {
1817
+ "name": "keyword.other.abl"
1818
+ },
1819
+ "2": {
1820
+ "name": "keyword.other.abl"
1821
+ }
1822
+ }
1823
+ },
1824
+ "property-set-empty": {
1825
+ "name": "meta.define.setter.abl",
1826
+ "match": "\\s*(set)\\s*(super)?\\s*(?=\\.)",
1827
+ "captures": {
1828
+ "1": {
1829
+ "name": "keyword.other.abl"
1830
+ },
1831
+ "2": {
1832
+ "name": "keyword.other.abl"
1833
+ }
1834
+ }
1835
+ },
1836
+ "property-get-block": {
1837
+ "name": "meta.define.getter.abl",
1838
+ "begin": "(?i)\\s*(get)",
1839
+ "beginCaptures": {
1840
+ "1": {
1841
+ "name": "keyword.other.abl"
1842
+ }
1843
+ },
1844
+ "end": "(?i)\\s*(end)\\s*(get)?\\s*(?=\\.)\\s*",
1845
+ "comment": "The end capture does a lookahead on . so that the 'define' capture can end ",
1846
+ "endCaptures": {
1847
+ "1": {
1848
+ "name": "keyword.other.abl"
1849
+ },
1850
+ "2": {
1851
+ "name": "keyword.other.abl"
1852
+ }
1853
+ },
1854
+ "patterns": [
1855
+ {
1856
+ "include": "#function-parameter-definition"
1857
+ },
1858
+ {
1859
+ "include": "#code-block"
1860
+ },
1861
+ {
1862
+ "include": "#punctuation-colon"
1863
+ }
1864
+ ]
1865
+ },
1866
+ "property-set-block": {
1867
+ "name": "meta.define.setter.abl",
1868
+ "begin": "(?i)\\s*(set)",
1869
+ "beginCaptures": {
1870
+ "1": {
1871
+ "name": "keyword.other.abl"
1872
+ }
1873
+ },
1874
+ "end": "(?i)\\s*(end)\\s*(set)?\\s*(?=\\.)\\s*",
1875
+ "comment": "The end capture does a lookahead on . so that the 'define' capture can end ",
1876
+ "endCaptures": {
1877
+ "1": {
1878
+ "name": "keyword.other.abl"
1879
+ },
1880
+ "2": {
1881
+ "name": "keyword.other.abl"
1882
+ }
1883
+ },
1884
+ "patterns": [
1885
+ {
1886
+ "include": "#punctuation-colon"
1887
+ },
1888
+ {
1889
+ "include": "#function-parameter-definition"
1890
+ },
1891
+ {
1892
+ "include": "#code-block"
1893
+ }
1894
+ ]
1895
+ },
1896
+ "parameter-as": {
1897
+ "begin": "(?i)\\s*([\\w\\-]+)\\s+(as)\\s*",
1898
+ "beginCaptures": {
1899
+ "1": {
1900
+ "name": "variable.parameter.abl"
1901
+ },
1902
+ "2": {
1903
+ "name": "keyword.other.abl"
1904
+ }
1905
+ },
1906
+ "end": "(?<=\\s)",
1907
+ "patterns": [
1908
+ {
1909
+ "include": "#dll-type"
1910
+ },
1911
+ {
1912
+ "include": "#primitive-type"
1913
+ },
1914
+ {
1915
+ "include": "#type-name-progress"
1916
+ },
1917
+ {
1918
+ "include": "#type-name-generic"
1919
+ },
1920
+ {
1921
+ "include": "#type-name"
1922
+ }
1923
+ ]
1924
+ },
1925
+ "define-variable-name": {
1926
+ "match": "(?i)(var|vari|varia|variab|variabl|variable)\\s+([a-z][a-z0-9#$-_%&])+\\s*",
1927
+ "captures": {
1928
+ "1": {
1929
+ "name": "keyword.other.abl"
1930
+ },
1931
+ "2": {
1932
+ "name": "variable.other.abl"
1933
+ }
1934
+ }
1935
+ },
1936
+ "variable-as": {
1937
+ "match": "(?i)\\s*([\\w\\-]+)\\s+(as)\\s*",
1938
+ "captures": {
1939
+ "1": {
1940
+ "name": "variable.other.abl"
1941
+ },
1942
+ "2": {
1943
+ "name": "keyword.other.abl"
1944
+ }
1945
+ }
1946
+ },
1947
+ "property-as": {
1948
+ "match": "(?i)\\s*([\\w\\-]+)\\s+(as)\\s*",
1949
+ "captures": {
1950
+ "1": {
1951
+ "name": "entity.name.function.abl"
1952
+ },
1953
+ "2": {
1954
+ "name": "keyword.other.abl"
1955
+ }
1956
+ }
1957
+ },
1958
+ "field-as-object": {
1959
+ "comment": "This is to capture 'FIELD x AS Object'. As of OE 12.7 only Progress.Lang.Object is allowed as a type name. If/when this changes, this regex becomes trickier",
1960
+ "match": "(?i)\\s*(progress\\.lang\\.object|object)\\s*",
1961
+ "captures": {
1962
+ "1": {
1963
+ "name": "entity.name.type.abl"
1964
+ }
1965
+ }
1966
+ },
1967
+ "define": {
1968
+ "name": "meta.define.abl",
1969
+ "begin": "(?i)\\s*(define|defin|defi|def)\\s*",
1970
+ "beginCaptures": {
1971
+ "1": {
1972
+ "name": "keyword.other.abl"
1973
+ }
1974
+ },
1975
+ "end": "(\\.)",
1976
+ "endCaptures": {
1977
+ "1": {
1978
+ "name": "punctuation.terminator.abl"
1979
+ }
1980
+ },
1981
+ "patterns": [
1982
+ {
1983
+ "match": "(?i)\\s*(new|global|glob|shared)\\s*",
1984
+ "captures": {
1985
+ "1": {
1986
+ "name": "keyword.other.abl"
1987
+ }
1988
+ }
1989
+ },
1990
+ {
1991
+ "include": "#serializable"
1992
+ },
1993
+ {
1994
+ "include": "#access-modifier"
1995
+ },
1996
+ {
1997
+ "include": "#define-variable"
1998
+ },
1999
+ {
2000
+ "include": "#define-property"
2001
+ },
2002
+ {
2003
+ "include": "#property-accessor"
2004
+ },
2005
+ {
2006
+ "include": "#function-call"
2007
+ },
2008
+ {
2009
+ "include": "#array-literal"
2010
+ },
2011
+ {
2012
+ "include": "#define-field"
2013
+ },
2014
+ {
2015
+ "include": "#parameter-as"
2016
+ },
2017
+ {
2018
+ "include": "#define-stream"
2019
+ },
2020
+ {
2021
+ "include": "#define-buffer"
2022
+ },
2023
+ {
2024
+ "include": "#define-frame"
2025
+ },
2026
+ {
2027
+ "include": "#for-table"
2028
+ },
2029
+ {
2030
+ "include": "#buffer-for-table"
2031
+ },
2032
+ {
2033
+ "include": "#define-table"
2034
+ },
2035
+ {
2036
+ "include": "#define-like"
2037
+ },
2038
+ {
2039
+ "include": "#field-as-object"
2040
+ },
2041
+ {
2042
+ "include": "#extent"
2043
+ },
2044
+ {
2045
+ "include": "#decimals"
2046
+ },
2047
+ {
2048
+ "include": "#format-constant"
2049
+ },
2050
+ {
2051
+ "include": "#timestamp-constant"
2052
+ },
2053
+ {
2054
+ "include": "#constant"
2055
+ },
2056
+ {
2057
+ "include": "#numeric"
2058
+ },
2059
+ {
2060
+ "include": "#string"
2061
+ },
2062
+ {
2063
+ "include": "#dll-type"
2064
+ },
2065
+ {
2066
+ "include": "#primitive-type"
2067
+ },
2068
+ {
2069
+ "include": "#type-name-progress"
2070
+ },
2071
+ {
2072
+ "include": "#keywords"
2073
+ },
2074
+ {
2075
+ "include": "#comment"
2076
+ },
2077
+ {
2078
+ "include": "#label-variable"
2079
+ },
2080
+ {
2081
+ "include": "#type-name-generic-class"
2082
+ },
2083
+ {
2084
+ "include": "#type-name-generic"
2085
+ },
2086
+ {
2087
+ "include": "#type-name"
2088
+ }
2089
+ ]
2090
+ },
2091
+ "define-field": {
2092
+ "match": "(?i)\\s*(field)\\s+([\\w\\-#$%]+)\\s*",
2093
+ "captures": {
2094
+ "1": {
2095
+ "name": "keyword.other.abl"
2096
+ },
2097
+ "2": {
2098
+ "name": "storage.data.table.abl"
2099
+ }
2100
+ }
2101
+ },
2102
+ "define-property": {
2103
+ "begin": "(?i)\\b(property|prop)\\b",
2104
+ "beginCaptures": {
2105
+ "1": {
2106
+ "name": "keyword.other.abl"
2107
+ }
2108
+ },
2109
+ "comment": "This match just gets the definition of the property; the getter and setter are handled separately",
2110
+ "end": "(?i)\\s*(no-undo)|(?=private|public|protected|get|set)",
2111
+ "endCaptures": {
2112
+ "1": {
2113
+ "name": "keyword.other.abl"
2114
+ }
2115
+ },
2116
+ "patterns": [
2117
+ {
2118
+ "include": "#property-as"
2119
+ },
2120
+ {
2121
+ "include": "#primitive-type"
2122
+ },
2123
+ {
2124
+ "include": "#extent"
2125
+ },
2126
+ {
2127
+ "include": "#decimals"
2128
+ },
2129
+ {
2130
+ "include": "#array-literal"
2131
+ },
2132
+ {
2133
+ "include": "#timestamp-constant"
2134
+ },
2135
+ {
2136
+ "include": "#numeric"
2137
+ },
2138
+ {
2139
+ "comment": "needs to be before the #keywords include",
2140
+ "include": "#type-name-generic-progress"
2141
+ },
2142
+ {
2143
+ "comment": "needs to be before the #keywords include",
2144
+ "include": "#type-name-progress"
2145
+ },
2146
+ {
2147
+ "include": "#keywords"
2148
+ },
2149
+ {
2150
+ "include": "#string"
2151
+ },
2152
+ {
2153
+ "include": "#type-name-generic"
2154
+ },
2155
+ {
2156
+ "include": "#type-name"
2157
+ }
2158
+ ]
2159
+ },
2160
+ "define-buffer": {
2161
+ "begin": "(?i)\\s*(buffer)\\s*",
2162
+ "beginCaptures": {
2163
+ "1": {
2164
+ "name": "keyword.other.abl"
2165
+ }
2166
+ },
2167
+ "end": "(?=\\.)",
2168
+ "patterns": [
2169
+ {
2170
+ "include": "#for-table"
2171
+ },
2172
+ {
2173
+ "include": "#buffer-for-table"
2174
+ },
2175
+ {
2176
+ "include": "#keywords"
2177
+ },
2178
+ {
2179
+ "include": "#comment"
2180
+ },
2181
+ {
2182
+ "include": "#string"
2183
+ }
2184
+ ]
2185
+ },
2186
+ "define-frame": {
2187
+ "match": "(?i)\\s*(frame)\\s*([a-z][a-z0-9#$\\-_%&]*)",
2188
+ "captures": {
2189
+ "1": {
2190
+ "name": "keyword.other.abl"
2191
+ },
2192
+ "2": {
2193
+ "name": "variable.other.abl"
2194
+ }
2195
+ }
2196
+ },
2197
+ "define-variable": {
2198
+ "begin": "(?i)\\s*(variable|variabl|variab|varia|vari|var)\\s*",
2199
+ "beginCaptures": {
2200
+ "1": {
2201
+ "name": "keyword.other.abl"
2202
+ }
2203
+ },
2204
+ "end": "(?=\\.)|(?i)\\s*(no-undo)\\s*",
2205
+ "endCaptures": {
2206
+ "1": {
2207
+ "name": "keyword.other.abl"
2208
+ }
2209
+ },
2210
+ "patterns": [
2211
+ {
2212
+ "include": "#variable-as"
2213
+ },
2214
+ {
2215
+ "include": "#primitive-type"
2216
+ },
2217
+ {
2218
+ "include": "#extent"
2219
+ },
2220
+ {
2221
+ "include": "#decimals"
2222
+ },
2223
+ {
2224
+ "include": "#array-literal"
2225
+ },
2226
+ {
2227
+ "include": "#timestamp-constant"
2228
+ },
2229
+ {
2230
+ "include": "#numeric"
2231
+ },
2232
+ {
2233
+ "comment": "needs to be before the #keywords include",
2234
+ "include": "#type-name-generic-progress"
2235
+ },
2236
+ {
2237
+ "comment": "needs to be before the #keywords include",
2238
+ "include": "#type-name-progress"
2239
+ },
2240
+ {
2241
+ "include": "#keywords"
2242
+ },
2243
+ {
2244
+ "include": "#string"
2245
+ },
2246
+ {
2247
+ "include": "#type-name-generic"
2248
+ },
2249
+ {
2250
+ "include": "#type-name"
2251
+ }
2252
+ ]
2253
+ },
2254
+ "label-variable": {
2255
+ "match": "(?i)\\s*(\\w+)\\s+(label)\\s*",
2256
+ "captures": {
2257
+ "1": {
2258
+ "name": "variable.other.abl"
2259
+ },
2260
+ "2": {
2261
+ "name": "keyword.other.abl"
2262
+ }
2263
+ }
2264
+ },
2265
+ "format-constant": {
2266
+ "comment": "DATE/TIME/TZ fields can have an unquoted format if it's something like 99/99/9999",
2267
+ "match": "(?i)\\b(format)\\s+(9+\\/9+\\/9+)\\b",
2268
+ "captures": {
2269
+ "1": {
2270
+ "name": "keyword.other.abl"
2271
+ },
2272
+ "2": {
2273
+ "name": "constant.language.source.abl"
2274
+ }
2275
+ }
2276
+ },
2277
+ "define-table": {
2278
+ "match": "(?i)\\b(temp-table|like|before-table)\\s*([\\w\\-#$%]+)\\s*",
2279
+ "captures": {
2280
+ "1": {
2281
+ "name": "keyword.other.abl"
2282
+ },
2283
+ "2": {
2284
+ "name": "storage.data.table.abl"
2285
+ }
2286
+ }
2287
+ },
2288
+ "buffer-for-table": {
2289
+ "match": "(?i)\\s*(?!do|repeat|for)([\\w\\-#$%]+)\\s+(for)\\s+((temp-table)\\s+)?([\\w\\-#$%]+)\\s*",
2290
+ "captures": {
2291
+ "1": {
2292
+ "name": "storage.data.table.abl"
2293
+ },
2294
+ "2": {
2295
+ "name": "keyword.other.abl"
2296
+ },
2297
+ "4": {
2298
+ "name": "keyword.other.abl"
2299
+ },
2300
+ "5": {
2301
+ "name": "storage.data.table.abl"
2302
+ }
2303
+ }
2304
+ },
2305
+ "double-colon-field-name": {
2306
+ "match": "\\s*::([\\w\\-#$%]+)\\s*",
2307
+ "captures": {
2308
+ "1": {
2309
+ "name": "storage.data.table.abl"
2310
+ }
2311
+ }
2312
+ },
2313
+ "for-table": {
2314
+ "match": "(?i)\\s*(for)\\s+((temp-table)\\s+)?([\\w\\-#$%]+)\\s*",
2315
+ "captures": {
2316
+ "1": {
2317
+ "name": "keyword.other.abl"
2318
+ },
2319
+ "3": {
2320
+ "name": "keyword.other.abl"
2321
+ },
2322
+ "4": {
2323
+ "name": "storage.data.table.abl"
2324
+ }
2325
+ }
2326
+ },
2327
+ "access-modifier": {
2328
+ "match": "(?i)\\s*(package-private|private|package-protected|protected|public|static|override|abstract|final)\\s*",
2329
+ "captures": {
2330
+ "1": {
2331
+ "name": "keyword.other.abl"
2332
+ }
2333
+ }
2334
+ },
2335
+ "serializable": {
2336
+ "match": "(?i)\\b(non-serializable|serializable)\\b",
2337
+ "captures": {
2338
+ "1": {
2339
+ "name": "keyword.other.abl"
2340
+ }
2341
+ }
2342
+ },
2343
+ "define-stream": {
2344
+ "name": "meta.define.stream.abl",
2345
+ "match": "(?i)\\s*(stream)\\s*([\\w\\-]+)",
2346
+ "comment": "https://docs.progress.com/bundle/openedge-abl-reference-122/page/DEFINE-STREAM-statement.html",
2347
+ "captures": {
2348
+ "1": {
2349
+ "name": "keyword.other.abl"
2350
+ },
2351
+ "2": {
2352
+ "patterns": [
2353
+ {
2354
+ "include": "#variable-name"
2355
+ }
2356
+ ]
2357
+ }
2358
+ }
2359
+ },
2360
+ "define-like": {
2361
+ "match": "(?i)\\s*(like|like-sequential)\\s+([\\w\\-#$%]+)\\s*",
2362
+ "captures": {
2363
+ "1": {
2364
+ "name": "keyword.other.abl"
2365
+ },
2366
+ "2": {
2367
+ "name": "storage.data.table.abl"
2368
+ }
2369
+ }
2370
+ },
2371
+ "block-label": {
2372
+ "match": "(?i)(?!do|repeat|for)(([a-z][a-z0-9\\-\\_\\$]*):)\\s+",
2373
+ "comment": "A colon followed by a space is only legal is for block labels",
2374
+ "captures": {
2375
+ "2": {
2376
+ "name": "meta.block.label.abl"
2377
+ }
2378
+ }
2379
+ },
2380
+ "block-statement": {
2381
+ "begin": "(?i)\\s*(do|repeat)\\s*",
2382
+ "beginCaptures": {
2383
+ "1": {
2384
+ "name": "keyword.other.abl"
2385
+ }
2386
+ },
2387
+ "comment": "The end condition is look forward AND backward for the colon, since contained conditions may terminate on a line-ending, which may contain the colon",
2388
+ "end": "\\s*(?=:)|(?<=:)\\s*",
2389
+ "name": "meta.block.abl",
2390
+ "patterns": [
2391
+ {
2392
+ "include": "#for-record"
2393
+ },
2394
+ {
2395
+ "include": "#preselect-phrase"
2396
+ },
2397
+ {
2398
+ "include": "#query-tuning-phrase"
2399
+ },
2400
+ {
2401
+ "include": "#operator"
2402
+ },
2403
+ {
2404
+ "include": "#from-to-by"
2405
+ },
2406
+ {
2407
+ "include": "#while-expression"
2408
+ },
2409
+ {
2410
+ "match": "(?i)\\s*(transaction)\\s*",
2411
+ "name": "keyword.other.abl"
2412
+ },
2413
+ {
2414
+ "include": "#branch-options"
2415
+ },
2416
+ {
2417
+ "include": "#frame-phrase"
2418
+ }
2419
+ ]
2420
+ },
2421
+ "from-to-by": {
2422
+ "begin": "\\s*([\\w\\$\\-\\_\\%\\&]+)\\s+(=)\\s*",
2423
+ "beginCaptures": {
2424
+ "1": {
2425
+ "name": "variable.other.abl"
2426
+ },
2427
+ "2": {
2428
+ "name": "keyword.operator.source.abl"
2429
+ }
2430
+ },
2431
+ "comment": "End this block at the end of the line, using a lookahed.",
2432
+ "end": "(?=\\R)",
2433
+ "patterns": [
2434
+ {
2435
+ "match": "(?i)\\s+(to|by)\\s*",
2436
+ "name": "keyword.other"
2437
+ },
2438
+ {
2439
+ "include": "#numeric"
2440
+ },
2441
+ {
2442
+ "include": "#branch-options"
2443
+ }
2444
+ ]
2445
+ },
2446
+ "for-record": {
2447
+ "comment": "this regex just tries to capture a bunch (6) of tables",
2448
+ "match": "(?i)\\s*(for)\\s+([\\w\\-#$%]*)\\s*(,)?\\s*([\\w\\-#$%]*)?\\s*(,)?\\s*([\\w\\-#$%]*)?\\s*(,)?\\s*([\\w\\-#$%]*)?\\s*(,)?\\s*([\\w\\-#$%]*)?\\s*(,)?\\s*([\\w\\-#$%]*)?",
2449
+ "captures": {
2450
+ "1": {
2451
+ "name": "keyword.other.abl"
2452
+ },
2453
+ "2": {
2454
+ "name": "storage.data.table.abl"
2455
+ },
2456
+ "3": {
2457
+ "name": "separator.comma.abl"
2458
+ },
2459
+ "4": {
2460
+ "name": "storage.data.table.abl"
2461
+ },
2462
+ "5": {
2463
+ "name": "separator.comma.abl"
2464
+ },
2465
+ "6": {
2466
+ "name": "storage.data.table.abl"
2467
+ },
2468
+ "7": {
2469
+ "name": "separator.comma.abl"
2470
+ },
2471
+ "8": {
2472
+ "name": "storage.data.table.abl"
2473
+ },
2474
+ "9": {
2475
+ "name": "separator.comma.abl"
2476
+ },
2477
+ "10": {
2478
+ "name": "storage.data.table.abl"
2479
+ },
2480
+ "11": {
2481
+ "name": "separator.comma.abl"
2482
+ },
2483
+ "12": {
2484
+ "name": "storage.data.table.abl"
2485
+ }
2486
+ }
2487
+ },
2488
+ "on-error-endkey-stop": {
2489
+ "name": "meta.block.branch.abl",
2490
+ "match": "(?i)\\s*(on)\\s+(endkey|error|stop)\\s+(undo)\\s*(?!leave|next|retry|return|throw)([a-z0-9\\-\\_\\$]*)?\\s*",
2491
+ "captures": {
2492
+ "1": {
2493
+ "name": "keyword.other.abl"
2494
+ },
2495
+ "2": {
2496
+ "name": "keyword.other.abl"
2497
+ },
2498
+ "3": {
2499
+ "name": "keyword.other.abl"
2500
+ },
2501
+ "4": {
2502
+ "name": "meta.block.label.abl"
2503
+ }
2504
+ }
2505
+ },
2506
+ "branch-leave-next-retry-throw": {
2507
+ "name": "meta.block.branch.abl",
2508
+ "match": "(?i)\\s*(,)\\s*(leave|next|retry|throw)\\s*(?!on)([a-z0-9\\-\\_\\$]*)?\\s*",
2509
+ "captures": {
2510
+ "1": {
2511
+ "name": "separator.comma.abl"
2512
+ },
2513
+ "2": {
2514
+ "name": "keyword.other.abl"
2515
+ },
2516
+ "3": {
2517
+ "name": "meta.block.label.abl"
2518
+ }
2519
+ }
2520
+ },
2521
+ "branch-return-value-single": {
2522
+ "comment": "RETURN 'return-value'",
2523
+ "begin": "(?i)\\s*(return)(\\s+(error))?\\s+(')",
2524
+ "beginCaptures": {
2525
+ "1": {
2526
+ "name": "keyword.other.abl"
160
2527
  },
161
- {
162
- "include": "#method-call"
2528
+ "2": {
2529
+ "name": "keyword.other.abl"
163
2530
  },
2531
+ "3": {
2532
+ "name": "punctuation.definition.string.begin.abl"
2533
+ }
2534
+ },
2535
+ "name": "string.single.complex.abl",
2536
+ "end": "(')",
2537
+ "endCaptures": {
2538
+ "1": {
2539
+ "name": "punctuation.definition.string.end.abl"
2540
+ }
2541
+ },
2542
+ "patterns": [
164
2543
  {
165
- "include": "#function-call"
2544
+ "match": "~.",
2545
+ "name": "constant.character.escape.abl"
166
2546
  }
167
2547
  ]
168
2548
  },
169
- "define": {
170
- "begin": "(?i)\\b(def|define)\\s+",
2549
+ "branch-return-value-double": {
2550
+ "name": "meta.block.branch.abl",
2551
+ "comment": "RETURN \"return-value\"",
2552
+ "begin": "(?i)\\s*(return)(\\s+(error))?\\s+(\")",
171
2553
  "beginCaptures": {
172
2554
  "1": {
173
2555
  "name": "keyword.other.abl"
2556
+ },
2557
+ "2": {
2558
+ "name": "keyword.other.abl"
2559
+ },
2560
+ "3": {
2561
+ "name": "punctuation.definition.string.begin.abl"
2562
+ }
2563
+ },
2564
+ "end": "(\")",
2565
+ "endCaptures": {
2566
+ "1": {
2567
+ "name": "punctuation.definition.string.end.abl"
174
2568
  }
175
2569
  },
176
- "end": "(?=\\.)",
177
- "comment": "Let's assume define can't have '.' inside",
178
- "name": "meta.define.abl",
179
2570
  "patterns": [
180
2571
  {
181
- "begin": "(?i)\\b(new|shared|var|vari|varia|variab|variabl|variable|private|protected|public|static|serializable|non-serializable)\\b",
182
- "end": "(?=\\.)",
183
- "comment": "https://docs.progress.com/bundle/openedge-abl-reference-122/page/DEFINE-VARIABLE-statement.html",
184
- "name": "meta.define.variable.abl",
185
- "beginCaptures": {
186
- "1": {
187
- "name": "keyword.other.abl"
188
- }
189
- },
190
- "patterns": [
191
- {
192
- "include": "#string"
193
- },
194
- {
195
- "include": "#primitive-type"
196
- },
197
- {
198
- "include": "#numeric"
199
- },
200
- {
201
- "include": "#constant"
202
- },
203
- {
204
- "include": "#keywords"
205
- },
206
- {
207
- "include": "#variable-name"
208
- }
209
- ]
2572
+ "match": "~.",
2573
+ "name": "constant.character.escape.abl"
2574
+ }
2575
+ ]
2576
+ },
2577
+ "branch-return-no-apply": {
2578
+ "name": "meta.block.branch.abl",
2579
+ "comment": "RETURN NO-APPLY",
2580
+ "match": "(?i)\\s*(return)\\s+(no-apply)\\s*",
2581
+ "captures": {
2582
+ "1": {
2583
+ "name": "keyword.other.abl"
210
2584
  },
211
- {
212
- "begin": "(?i)\\b(?<![\\w-])(input|output|input-output|return)(?![\\w-])\\b",
213
- "end": "(?=\\.)",
214
- "comment": "https://docs.progress.com/bundle/openedge-abl-reference-122/page/DEFINE-PARAMETER-statement.html",
215
- "name": "meta.define.parameter.abl",
216
- "beginCaptures": {
217
- "1": {
218
- "name": "keyword.other.abl"
219
- }
220
- },
221
- "patterns": [
222
- {
223
- "include": "#string"
224
- },
225
- {
226
- "include": "#primitive-type"
227
- },
228
- {
229
- "include": "#numeric"
230
- },
231
- {
232
- "include": "#constant"
233
- },
234
- {
235
- "include": "#keywords"
236
- },
237
- {
238
- "include": "#parameter-name"
239
- }
240
- ]
2585
+ "2": {
2586
+ "name": "keyword.other.abl"
2587
+ }
2588
+ }
2589
+ },
2590
+ "branch-return-error-expression": {
2591
+ "name": "meta.block.branch.abl",
2592
+ "begin": "(?i)\\s*(return)\\s+(error)\\s*",
2593
+ "beginCaptures": {
2594
+ "1": {
2595
+ "name": "keyword.other.abl"
241
2596
  },
2597
+ "2": {
2598
+ "name": "keyword.other.abl"
2599
+ }
2600
+ },
2601
+ "comment": " This regex just captures to the end of the line, so if the RETURN ERROR is split across 2 lines, this will not capture",
2602
+ "end": "(?=\\R)",
2603
+ "patterns": [
242
2604
  {
243
- "match": "(?i)\\b(stream)\\b([^\\.]*)",
244
- "comment": "https://docs.progress.com/bundle/openedge-abl-reference-122/page/DEFINE-STREAM-statement.html",
245
- "name": "meta.define.stream.abl",
2605
+ "match": "(?i)\\s*(new)\\s+(.*)\\s*\\(",
246
2606
  "captures": {
247
2607
  "1": {
248
2608
  "name": "keyword.other.abl"
249
2609
  },
250
2610
  "2": {
251
- "patterns": [
252
- {
253
- "include": "#variable-name"
254
- }
255
- ]
2611
+ "name": "entity.name.type.abl"
256
2612
  }
257
2613
  }
258
2614
  },
259
2615
  {
260
- "include": "#string"
2616
+ "include": "#property-call"
261
2617
  },
262
2618
  {
263
- "include": "#primitive-type"
2619
+ "include": "#expression"
2620
+ }
2621
+ ]
2622
+ },
2623
+ "branch-options": {
2624
+ "name": "meta.block.branch.abl",
2625
+ "patterns": [
2626
+ {
2627
+ "include": "#on-error-endkey-stop"
264
2628
  },
265
2629
  {
266
- "include": "#numeric"
2630
+ "include": "#on-quit"
267
2631
  },
268
2632
  {
269
- "include": "#constant"
2633
+ "include": "#branch-leave-next-retry-throw"
270
2634
  },
271
2635
  {
272
- "include": "#keywords"
2636
+ "include": "#branch-return-value-double"
273
2637
  },
274
2638
  {
275
- "include": "#singlelinecomment"
2639
+ "include": "#branch-return-value-single"
276
2640
  },
277
2641
  {
278
- "include": "#multilinecomment"
2642
+ "include": "#branch-return-no-apply"
2643
+ },
2644
+ {
2645
+ "include": "#branch-return-error"
2646
+ },
2647
+ {
2648
+ "include": "#branch-return-error-expression"
279
2649
  }
280
2650
  ]
281
2651
  },
282
- "do-block": {
283
- "begin": "(?i)\\b(do)\\b",
2652
+ "while-expression": {
2653
+ "begin": "(?i)\\s*(while)\\s*",
284
2654
  "beginCaptures": {
285
2655
  "1": {
286
2656
  "name": "keyword.other.abl"
287
2657
  }
288
2658
  },
289
- "end": "(?=\\.)",
290
- "name": "meta.do.abl",
2659
+ "comment": " This regex just captures to the end of the line, so if the WHILE is split across 2 lines, this may not capture everything",
2660
+ "end": "(?=\\R)",
291
2661
  "patterns": [
292
2662
  {
293
- "begin": "(?i)\\b(while)\\b",
294
- "end": "(?=(?::))",
295
- "beginCaptures": {
296
- "1": {
297
- "name": "keyword.other.abl"
298
- }
299
- },
300
- "name": "meta.do.while.abl",
301
- "patterns": [
302
- {
303
- "include": "#statements"
304
- }
305
- ]
2663
+ "include": "#operator"
306
2664
  },
307
2665
  {
308
- "include": "#statements"
2666
+ "include": "#property-call"
309
2667
  },
310
2668
  {
311
- "begin": ":",
312
- "end": "(?i)(end\\s*do|end)",
313
- "endCaptures": {
314
- "1": {
315
- "name": "keyword.other.abl"
316
- }
317
- },
318
- "name": "meta.do.body.abl",
319
- "patterns": [
320
- {
321
- "include": "#code-block"
322
- }
323
- ]
2669
+ "include": "#branch-options"
2670
+ },
2671
+ {
2672
+ "include": "#statements"
324
2673
  }
325
2674
  ]
326
2675
  },
@@ -347,40 +2696,105 @@
347
2696
  }
348
2697
  ]
349
2698
  },
350
- "method-call": {
351
- "match": "(?<=\\.|:)(\\w|-)+",
352
- "name": "support.function.abl"
353
- },
354
- "function-call": {
355
- "name": "meta.function-call.abl",
356
- "begin": "([\\w-]+)\\s*(\\()",
357
- "end": "(\\))",
2699
+ "function-arguments": {
2700
+ "name": "meta.function.arguments.abl",
2701
+ "comment": "Captures what's between ( and ) when calling a function, excluding the braces ",
2702
+ "begin": "(?=\\()",
358
2703
  "beginCaptures": {
359
2704
  "1": {
360
- "name": "entity.name.function.abl"
361
- },
362
- "2": {
363
2705
  "name": "meta.brace.round.js"
364
2706
  }
365
2707
  },
2708
+ "end": "(?=\\))",
366
2709
  "endCaptures": {
367
2710
  "1": {
368
2711
  "name": "meta.brace.round.js"
369
2712
  }
370
2713
  },
371
2714
  "patterns": [
2715
+ {
2716
+ "include": "#parens"
2717
+ },
2718
+ {
2719
+ "include": "#constant"
2720
+ },
2721
+ {
2722
+ "include": "#type-reference"
2723
+ },
372
2724
  {
373
2725
  "include": "#expression"
374
2726
  },
2727
+ {
2728
+ "include": "#property-call"
2729
+ },
375
2730
  {
376
2731
  "include": "#punctuation-comma"
2732
+ },
2733
+ {
2734
+ "include": "#static-object-property-call"
2735
+ },
2736
+ {
2737
+ "include": "#function-call"
377
2738
  }
378
2739
  ]
379
2740
  },
2741
+ "static-object-property-call": {
2742
+ "match": "(?i)\\s*(([\\w\\#\\$\\%\\-]+|progress)(\\.[\\w\\#\\$\\%\\-]+)*)\\s*:([\\w-]+)\\s*",
2743
+ "captures": {
2744
+ "1": {
2745
+ "name": "entity.name.type.abl"
2746
+ },
2747
+ "4": {
2748
+ "name": "entity.name.function.abl"
2749
+ }
2750
+ }
2751
+ },
2752
+ "property-call": {
2753
+ "match": "(?<=:)([\\w-]+)\\s*",
2754
+ "captures": {
2755
+ "1": {
2756
+ "name": "entity.name.function.abl"
2757
+ }
2758
+ }
2759
+ },
380
2760
  "variable-name": {
381
- "match": "(?<=^|\\s|\\[|\\()([\\w-]+)",
2761
+ "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)",
2762
+ "match": "(?<=^|\\s|\\[|\\()([a-zA-Z][a-zA-Z0-9\\#\\$\\-\\_\\%\\&]*)",
382
2763
  "name": "variable.other.abl"
383
2764
  },
2765
+ "extent": {
2766
+ "match": "(?i)\\s*(extent)\\s*((0x[0-9a-f]+)|([0-9]+)?)",
2767
+ "captures": {
2768
+ "1": {
2769
+ "name": "keyword.other.abl"
2770
+ },
2771
+ "2": {
2772
+ "name": "constant.numeric.source.abl"
2773
+ }
2774
+ }
2775
+ },
2776
+ "decimals": {
2777
+ "match": "(?i)\\s*(decimals)\\s((0x[0-9a-f]+)|([0-9]+)?)",
2778
+ "captures": {
2779
+ "1": {
2780
+ "name": "keyword.other.abl"
2781
+ },
2782
+ "2": {
2783
+ "name": "constant.numeric.source.abl"
2784
+ }
2785
+ }
2786
+ },
2787
+ "ordinal": {
2788
+ "match": "(?i)\\s*(ordinal)\\s((0x[0-9a-f]+)|([0-9]+)?)",
2789
+ "captures": {
2790
+ "1": {
2791
+ "name": "keyword.other.abl"
2792
+ },
2793
+ "2": {
2794
+ "name": "constant.numeric.source.abl"
2795
+ }
2796
+ }
2797
+ },
384
2798
  "array-literal": {
385
2799
  "name": "meta.array.literal.abl",
386
2800
  "begin": "\\[",
@@ -404,11 +2818,37 @@
404
2818
  }
405
2819
  ]
406
2820
  },
2821
+ "array-use": {
2822
+ "name": "meta.array.literal.abl",
2823
+ "begin": "\\[",
2824
+ "beginCaptures": {
2825
+ "0": {
2826
+ "name": "meta.brace.square.abl"
2827
+ }
2828
+ },
2829
+ "end": "\\]",
2830
+ "endCaptures": {
2831
+ "0": {
2832
+ "name": "meta.brace.square.abl"
2833
+ }
2834
+ },
2835
+ "patterns": [
2836
+ {
2837
+ "include": "#expression"
2838
+ },
2839
+ {
2840
+ "include": "#punctuation-comma"
2841
+ }
2842
+ ]
2843
+ },
407
2844
  "expression": {
408
2845
  "patterns": [
409
2846
  {
410
2847
  "include": "#string"
411
2848
  },
2849
+ {
2850
+ "include": "#timestamp-constant"
2851
+ },
412
2852
  {
413
2853
  "include": "#constant"
414
2854
  },
@@ -417,6 +2857,9 @@
417
2857
  },
418
2858
  {
419
2859
  "include": "#variable-name"
2860
+ },
2861
+ {
2862
+ "include": "#double-colon-field-name"
420
2863
  }
421
2864
  ]
422
2865
  },
@@ -462,16 +2905,33 @@
462
2905
  "comment": "https://docs.progress.com/bundle/openedge-abl-reference-122/page/Include-file-reference.html"
463
2906
  },
464
2907
  "argument-reference": {
465
- "comment": "https://docs.progress.com/bundle/openedge-abl-reference-122/page/Argument-reference.html"
2908
+ "comment": "https://docs.progress.com/bundle/openedge-abl-reference-122/page/Argument-reference.html",
2909
+ "match": "\\s*((\\{\\s*\\&[\\.\\w\\\/-]+\\})|(\\{\\s*\\d+\\})|(\\{\\s*\\*\\}))\\s*",
2910
+ "captures": {
2911
+ "1": {
2912
+ "name": "storage.other.abl"
2913
+ }
2914
+ }
2915
+ },
2916
+ "comment": {
2917
+ "patterns": [
2918
+ {
2919
+ "include": "#singlelinecomment"
2920
+ },
2921
+ {
2922
+ "include": "#multilinecomment"
2923
+ }
2924
+ ]
466
2925
  },
467
2926
  "singlelinecomment": {
468
- "match": "//.*$",
469
- "name": "comment.source.abl"
2927
+ "match": "\\/\\/.*$",
2928
+ "comment": "Was comment.source.abl but should be changed, per https://macromates.com/manual/en/language_grammars",
2929
+ "name": "comment.line.double-slash.abl"
470
2930
  },
471
2931
  "multilinecomment": {
472
2932
  "begin": "(?<!=)\\/\\*",
473
2933
  "contentName": "comment",
474
- "end": "\\*/",
2934
+ "end": "\\*\\/",
475
2935
  "name": "comment.block.source.abl",
476
2936
  "patterns": [
477
2937
  {
@@ -487,19 +2947,22 @@
487
2947
  },
488
2948
  {
489
2949
  "include": "#doublequotedstring"
2950
+ },
2951
+ {
2952
+ "include": "#translation-attribute"
490
2953
  }
491
2954
  ]
492
2955
  },
493
2956
  "singlequotedstring": {
494
- "begin": "'",
2957
+ "begin": "(')",
495
2958
  "beginCaptures": {
496
- "0": {
2959
+ "1": {
497
2960
  "name": "punctuation.definition.string.begin.abl"
498
2961
  }
499
2962
  },
500
- "end": "'",
2963
+ "end": "(')",
501
2964
  "endCaptures": {
502
- "0": {
2965
+ "1": {
503
2966
  "name": "punctuation.definition.string.end.abl"
504
2967
  }
505
2968
  },
@@ -512,15 +2975,15 @@
512
2975
  ]
513
2976
  },
514
2977
  "doublequotedstring": {
515
- "begin": "\"",
2978
+ "begin": "(\")",
516
2979
  "beginCaptures": {
517
- "0": {
2980
+ "1": {
518
2981
  "name": "punctuation.definition.string.begin.abl"
519
2982
  }
520
2983
  },
521
- "end": "\"",
2984
+ "end": "(\")",
522
2985
  "endCaptures": {
523
- "0": {
2986
+ "1": {
524
2987
  "name": "punctuation.definition.string.end.abl"
525
2988
  }
526
2989
  },
@@ -532,18 +2995,53 @@
532
2995
  }
533
2996
  ]
534
2997
  },
2998
+ "dll-type": {
2999
+ "match": "(?i)\\s*(byte|unsigned-short|short|unsigned-long|long|int64|float)\\s*",
3000
+ "captures": {
3001
+ "1": {
3002
+ "name": "storage.type.abl"
3003
+ }
3004
+ },
3005
+ "comment": "https://docs.progress.com/bundle/openedge-abl-reference-122/page/Data-types.html"
3006
+ },
535
3007
  "primitive-type": {
536
3008
  "match": "(?i)(?<=^|\\s)(blob|character|characte|charact|charac|chara|char|clob|com-handle|date|datetime|datetime-tz|decimal|decima|decim|deci|dec|handle|int64|integer|intege|integ|inte|int|logical|logica|logic|logi|log|longchar|longcha|longch|memptr|raw|recid|rowid|widget-handle)(?![=\\w-])",
537
- "name": "storage.type.abl",
3009
+ "captures": {
3010
+ "1": {
3011
+ "name": "storage.type.abl"
3012
+ }
3013
+ },
538
3014
  "comment": "https://docs.progress.com/bundle/openedge-abl-reference-122/page/Data-types.html"
539
3015
  },
540
3016
  "numeric": {
541
- "match": "(?<![\\w-])((0(x|X)[0-9a-fA-F]+)|([0-9]+(\\.[0-9]+)?))",
3017
+ "match": "(?<![\\w-])((0(x|X)[0-9a-fA-F]+)|(\\-?[0-9]+(\\.[0-9]+)?))",
542
3018
  "name": "constant.numeric.source.abl"
543
3019
  },
3020
+ "abl-system-handles": {
3021
+ "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*",
3022
+ "captures": {
3023
+ "1": {
3024
+ "name": "variable.language.abl"
3025
+ },
3026
+ "2": {
3027
+ "name": "punctuation.terminator.abl"
3028
+ },
3029
+ "3": {
3030
+ "name": "meta.brace.round.js"
3031
+ }
3032
+ }
3033
+ },
3034
+ "timestamp-constant": {
3035
+ "match": "(?i)(?<=^|\\s*)(today|now)(?!\\w|-)",
3036
+ "name": "constant.language.abl"
3037
+ },
544
3038
  "constant": {
545
- "match": "(?i)(?<=^|\\s)(true|false|yes|no)(?!\\w|-)",
546
- "name": "constant.language.source.abl"
3039
+ "match": "(?i)(?<=^|\\s*)(true|false|yes|no|\\?)(?!\\w|-)",
3040
+ "name": "constant.language.abl"
3041
+ },
3042
+ "punctuation-colon": {
3043
+ "name": "punctuation.terminator.abl",
3044
+ "match": ":"
547
3045
  },
548
3046
  "punctuation-comma": {
549
3047
  "name": "punctuation.separator.comma.abl",
@@ -554,8 +3052,30 @@
554
3052
  "match": "\\."
555
3053
  },
556
3054
  "operator": {
557
- "match": "(?i)(<=|<>|>=|=|\\+| - |/|<|>|,)",
558
- "name": "keyword.operator.source.abl"
3055
+ "patterns": [
3056
+ {
3057
+ "include": "#operator-no-space"
3058
+ },
3059
+ {
3060
+ "include": "#operator-with-space"
3061
+ }
3062
+ ]
3063
+ },
3064
+ "operator-no-space": {
3065
+ "match": "(<=|<>|>=|=|\\+|\\-|\/|<|>|,|\\?\\:)",
3066
+ "captures": {
3067
+ "1": {
3068
+ "name": "keyword.operator.source.abl"
3069
+ }
3070
+ }
3071
+ },
3072
+ "operator-with-space": {
3073
+ "match": "(?i)\\s+(contains|begins|matches|eq|le|lt|ge|gt|ne)\\s+",
3074
+ "captures": {
3075
+ "1": {
3076
+ "name": "keyword.operator.source.abl"
3077
+ }
3078
+ }
559
3079
  },
560
3080
  "keywords": {
561
3081
  "patterns": [
@@ -637,39 +3157,39 @@
637
3157
  ]
638
3158
  },
639
3159
  "keywords-a": {
640
- "match": "(?i)(?<![\\w-])(abort|abs|abso|absol|absolu|absolut|absolute|abstract|accelerator|accept-changes|accept-row-changes|accum|accumu|accumul|accumula|accumulat|accumulate|across|active|active-form|active-window|actor|add|add-buffer|add-calc-col|add-calc-colu|add-calc-colum|add-calc-column|add-columns-from|add-events-proc|add-events-proce|add-events-proced|add-events-procedu|add-events-procedur|add-events-procedure|add-fields-from|add-first|add-header-entry|add-index-field|add-interval|add-last|add-like-col|add-like-colu|add-like-colum|add-like-column|add-like-field|add-like-index|add-new-field|add-new-index|add-parent-id-relation|add-rel|add-rela|add-relat|add-relati|add-relatio|add-relation|add-schema-location|add-source-buffer|add-super-proc|add-super-proce|add-super-proced|add-super-procedu|add-super-procedur|add-super-procedure|adm-data|advise|after-buffer|after-rowid|after-table|alert-box|alias|all|allow-column-searching|allow-prev-deserialization|allow-replication|alter|alternate-key|always-on-top|ambig|ambigu|ambiguo|ambiguou|ambiguous|and|ansi-only|any|any-key|any-printable|anywhere|append|append-child|append-line|appl-alert|appl-alert-|appl-alert-b|appl-alert-bo|appl-alert-box|appl-alert-boxe|appl-alert-boxes|appl-context-id|application|apply|apply-callback|appserver-info|appserver-password|appserver-userid|array-m|array-me|array-mes|array-mess|array-messa|array-messag|array-message|as|as-cursor|asc|asce|ascen|ascend|ascendi|ascendin|ascending|ask-overwrite|assembly|assign|async-request-count|async-request-handle|asynchronous|at|attach|attach-data-source|attached-pairlist|attachment|attr|attr-|attr-s|attr-sp|attr-spa|attr-spac|attr-space|attribute-names|attribute-type|audit-control|audit-enabled|audit-event-context|audit-policy|authentication-failed|authorization|auto-comp|auto-compl|auto-comple|auto-complet|auto-completi|auto-completio|auto-completion|auto-delete|auto-delete-xml|auto-end-key|auto-endkey|auto-go|auto-ind|auto-inde|auto-inden|auto-indent|auto-resize|auto-ret|auto-retu|auto-retur|auto-return|auto-synchronize|auto-val|auto-vali|auto-valid|auto-valida|auto-validat|auto-validate|auto-z|auto-za|auto-zap|automatic|avail|availa|availab|availabl|available|available-formats|ave|aver|avera|averag|average|avg)(?![\\w-])",
3160
+ "match": "(?i)(?<![\\w-])(abort|abs|abso|absol|absolu|absolut|absolute|abstract|accum|accumu|accumul|accumula|accumulat|accumulate|across|active-form|active-window|add|add-interval|advise|alert-box|alias|all|allow-replication|alter|alternate-key|ambig|ambigu|ambiguo|ambiguou|ambiguous|and|ansi-only|any|any-key|any-printable|anywhere|append|append-line|application|apply|array-m|array-me|array-mes|array-mess|array-messa|array-messag|array-message|as|as-cursor|asc|asce|ascen|ascend|ascendi|ascendin|ascending|ask-overwrite|assembly|assign|asynchronous|at|attach|attachment|attribute-type|audit-control|audit-enabled|audit-policy|authorization|automatic|avail|availa|availab|availabl|available|ave|aver|avera|averag|average|avg)(?![\\w-])",
641
3161
  "name": "keyword.other.abl"
642
3162
  },
643
3163
  "keywords-b": {
644
- "match": "(?i)(?<![\\w-])(back|back-tab|backg|backgr|backgro|backgrou|backgroun|background|backspace|backward|backwards|base-ade|base-key|base64|base64-decode|base64-encode|basic-logging|batch|batch-mode|batch-size|before-buffer|before-h|before-hi|before-hid|before-hide|before-rowid|before-table|begin-event-group|begins|bell|bell|between|bgc|bgco|bgcol|bgcolo|bgcolor|big-endian|binary|bind|bind-where|blank|blob|block|block-iteration-display|block-lev|block-leve|block-level|border-b|border-bo|border-bot|border-bott|border-botto|border-bottom|border-bottom-c|border-bottom-ch|border-bottom-cha|border-bottom-char|border-bottom-chars|border-bottom-p|border-bottom-pi|border-bottom-pix|border-bottom-pixe|border-bottom-pixel|border-bottom-pixels|border-l|border-le|border-lef|border-left|border-left-c|border-left-ch|border-left-cha|border-left-char|border-left-chars|border-left-p|border-left-pi|border-left-pix|border-left-pixe|border-left-pixel|border-left-pixels|border-r|border-ri|border-rig|border-righ|border-right|border-right-c|border-right-ch|border-right-cha|border-right-char|border-right-chars|border-right-p|border-right-pi|border-right-pix|border-right-pixe|border-right-pixel|border-right-pixels|border-t|border-to|border-top|border-top-c|border-top-ch|border-top-cha|border-top-char|border-top-chars|border-top-p|border-top-pi|border-top-pix|border-top-pixe|border-top-pixel|border-top-pixels|both|bottom|bottom-column|box|box-select|box-selecta|box-selectab|box-selectabl|box-selectable|break|break-line|browse|browse-column-data-types|browse-column-formats|browse-column-labels|browse-header|btos|buffer|buffer-chars|buffer-comp|buffer-compa|buffer-compar|buffer-compare|buffer-copy|buffer-create|buffer-delete|buffer-field|buffer-group-id|buffer-group-name|buffer-handle|buffer-lines|buffer-n|buffer-na|buffer-nam|buffer-name|buffer-partition-id|buffer-releas|buffer-release|buffer-tenant-id|buffer-tenant-name|buffer-validate|buffer-value|button|buttons|by|by-pointer|by-reference|by-value|by-variant-point|by-variant-pointe|by-variant-pointer|byte|bytes-read|bytes-written)(?![\\w-])",
3164
+ "match": "(?i)(?<![\\w-])(backspace|backward|backwards|base-key|base64|base64-decode|base64-encode|batch|before-h|before-hi|before-hid|before-hide|begins|bell|bell|between|big-endian|binary|bind|bind-where|blob|block|block-lev|block-leve|block-level|both|bottom|bottom-column|box|box-select|box-selecta|box-selectab|box-selectabl|box-selectable|break|break-line|browse|browse-column-data-types|browse-column-formats|browse-column-labels|browse-header|btos|buffer|buffer-chars|buffer-comp|buffer-compa|buffer-compar|buffer-compare|buffer-copy|button|buttons|by|by-pointer|by-reference|by-value|by-variant-point|by-variant-pointe|by-variant-pointer|byte)(?![\\w-])",
645
3165
  "name": "keyword.other.abl"
646
3166
  },
647
3167
  "keywords-c": {
648
- "match": "(?i)(?<![\\w-])(cache|cache-size|call|call-name|call-type|can-crea|can-creat|can-create|can-dele|can-delet|can-delete|can-do|can-do-domain-support|can-find|can-query|can-read|can-set|can-writ|can-write|cancel-break|cancel-button|cancel-pick|cancel-requests|cancel-requests-after|cancelled|caps|careful-paint|case|case-sen|case-sens|case-sensi|case-sensit|case-sensiti|case-sensitiv|case-sensitive|cast|catch|cdecl|center|centere|centered|chained|char|chara|charac|charact|characte|character|character_length|charset|check|check-mem-stomp|checked|child-buffer|child-num|choices|choose|choose|chr|class|class-type|clear|clear|clear-appl-context|clear-log|clear-select|clear-selecti|clear-selectio|clear-selection|clear-sort-arrow|clear-sort-arrows|client-connection-id|client-principal|client-tty|client-type|client-workstation|clipboard|clob|clone-node|close|close|close-log|code|codebase-locator|codepage|codepage-convert|col|col-of|collate|colon|colon-align|colon-aligne|colon-aligned|color|color-table|column|column-bgc|column-bgco|column-bgcol|column-bgcolo|column-bgcolor|column-codepage|column-dcolor|column-fgc|column-fgco|column-fgcol|column-fgcolo|column-fgcolor|column-font|column-lab|column-labe|column-label|column-label-bgc|column-label-bgco|column-label-bgcol|column-label-bgcolo|column-label-bgcolor|column-label-dcolor|column-label-fgc|column-label-fgco|column-label-fgcol|column-label-fgcolo|column-label-fgcolor|column-label-font|column-label-height-c|column-label-height-ch|column-label-height-cha|column-label-height-char|column-label-height-chars|column-label-height-p|column-label-height-pi|column-label-height-pix|column-label-height-pixe|column-label-height-pixel|column-label-height-pixels|column-movable|column-of|column-pfc|column-pfco|column-pfcol|column-pfcolo|column-pfcolor|column-read-only|column-resizable|column-sc|column-scr|column-scro|column-scrol|column-scroll|column-scrolli|column-scrollin|column-scrolling|columns|com-handle|com-self|combo-box|command|compare|compares|compile|compile|compiler|complete|component-handle|component-self|config-name|connect|connect|connected|constrained|constructor|container-event|contains|contents|context|context-help|context-help-file|context-help-id|context-pop|context-popu|context-popup|control|control-box|control-cont|control-conta|control-contai|control-contain|control-containe|control-container|control-fram|control-frame|convert|convert-3d|convert-3d-|convert-3d-c|convert-3d-co|convert-3d-col|convert-3d-colo|convert-3d-color|convert-3d-colors|convert-to-offs|convert-to-offse|convert-to-offset|copy|copy-dataset|copy-lob|copy-sax-attributes|copy-temp-table|count|count-of|coverage|cpcase|cpcoll|cpint|cpinte|cpinter|cpintern|cpinterna|cpinternal|cplog|cpprint|cprcodein|cprcodeout|cpstream|cpterm|crc-val|crc-valu|crc-value|create|create-like|create-like-sequential|create-node|create-node-namespace|create-on-add|create-result-list-entry|create-test-file|ctos|current|current-changed|current-column|current-env|current-envi|current-envir|current-enviro|current-environ|current-environm|current-environme|current-environmen|current-environment|current-iteration|current-lang|current-langu|current-langua|current-languag|current-language|current-query|current-request-info|current-response-info|current-result-row|current-row-modified|current-value|current-window|current_date|curs|curso|cursor|cursor-char|cursor-down|cursor-left|cursor-line|cursor-offset|cursor-right|cursor-up|cut)(?![\\w-])",
3168
+ "match": "(?i)(?<![\\w-])(cache-size|call|can-do|can-find|can-query|can-set|can-writ|cancel-break|cancel-button|cancel-pick|cancel-requests|cancel-requests-after|cancelled|caps|case|case-sen|case-sens|case-sensi|case-sensit|case-sensiti|case-sensitiv|case-sensitive|cast|catch|cdecl|center|centere|centered|chained|char|chara|charac|charact|characte|character|character_length|check|check-mem-stomp|choices|choose|choose|chr|class|clear|client-principal|clipboard|clob|close|codebase-locator|codepage-convert|col|col-of|collate|colon|colon-align|colon-aligne|colon-aligned|color|color-table|column-codepage|column-label-bgc|column-label-bgco|column-label-bgcol|column-label-bgcolo|column-label-bgcolor|column-label-dcolor|column-label-fgc|column-label-fgco|column-label-fgcol|column-label-fgcolo|column-label-fgcolor|column-label-font|column-label-height-c|column-label-height-ch|column-label-height-cha|column-label-height-char|column-label-height-chars|column-label-height-p|column-label-height-pi|column-label-height-pix|column-label-height-pixe|column-label-height-pixel|column-label-height-pixels|column-of|columns|com-handle|com-self|combo-box|command|compare|compares|compile|compile|compiler|component-handle|component-self|connect|constrained|constructor|container-event|contains|contents|context|context-pop|context-popu|context-popup|control|control-cont|control-conta|control-contai|control-contain|control-containe|control-container|control-fram|control-frame|convert|copy|copy-lob|count|count-of|create|create-on-add|create-test-file|ctos|current|current-lang|current-langu|current-langua|current-languag|current-language|current-query|current-value|current-window|current_date|cursor-down|cursor-left|cursor-right|cursor-up|cut)(?![\\w-])",
649
3169
  "name": "keyword.other.abl"
650
3170
  },
651
3171
  "keywords-d": {
652
- "match": "(?i)(?<![\\w-])(data-b|data-bi|data-bin|data-bind|data-entry-ret|data-entry-retu|data-entry-retur|data-entry-return|data-refresh-line|data-refresh-page|data-rel|data-rela|data-relat|data-relati|data-relatio|data-relation|data-source|data-source-complete-map|data-source-modified|data-source-rowid|data-t|data-ty|data-typ|data-type|database|dataservers|dataset|dataset-handle|date|date-f|date-fo|date-for|date-form|date-forma|date-format|datetime|datetime-tz|day|db-context|db-list|db-references|db-remote-host|dbcodepage|dbcollation|dbname|dbparam|dbrest|dbrestr|dbrestri|dbrestric|dbrestrict|dbrestricti|dbrestrictio|dbrestriction|dbrestrictions|dbtaskid|dbtype|dbvers|dbversi|dbversio|dbversion|dcolor|dde|dde-error|dde-i|dde-id|dde-item|dde-name|dde-notify|dde-topic|deblank|debu|debug|debug-alert|debug-list|debug-set-tenant|debugger|dec|deci|decim|decima|decimal|decimals|declare|declare-namespace|decrypt|def|default|default-action|default-buffer-handle|default-but|default-butt|default-butto|default-button|default-commit|default-ex|default-ext|default-exte|default-exten|default-extens|default-extensi|default-extensio|default-extension|default-noxl|default-noxla|default-noxlat|default-noxlate|default-pop-up|default-string|default-value|default-window|defer-lob-fetch|defi|defin|define|define-user-event-manager|defined|del|delegate|delete|delete|delete-char|delete-char|delete-character|delete-column|delete-current-row|delete-end-line|delete-field|delete-header-entry|delete-line|delete-line|delete-node|delete-result-list-entry|delete-selected-row|delete-selected-rows|delete-word|delimiter|desc|desce|descen|descend|descendi|descendin|descending|descript|descripti|descriptio|description|deselect|deselect-extend|deselect-focused-row|deselect-rows|deselect-selected-row|deselection|deselection-extend|destructor|detach|detach-data-source|dialog-box|dialog-help|dict|dicti|dictio|diction|dictiona|dictionar|dictionary|dir|directory|disable|disable-auto-zap|disable-connections|disable-dump-triggers|disable-load-triggers|disabled|discon|disconn|disconne|disconnec|disconnect|dismiss-menu|disp|displ|displa|display|display-message|display-t|display-timezone|display-ty|display-typ|display-type|distinct|dll-call-type|do|domain-description|domain-name|domain-type|dos|dos-end|dotnet-clr-loaded|double|down|down|drag-enabled|drop|drop-down|drop-down-list|drop-file-notify|drop-target|dslog-manager|dump|dump-logging-now|dynamic|dynamic-cast|dynamic-current-value|dynamic-enum|dynamic-func|dynamic-funct|dynamic-functi|dynamic-functio|dynamic-function|dynamic-invoke|dynamic-new|dynamic-next-value|dynamic-property)(?![\\w-])",
3172
+ "match": "(?i)(?<![\\w-])(data-b|data-bi|data-bin|data-bind|data-refresh-line|data-refresh-page|data-rel|data-rela|data-relat|data-relati|data-relatio|data-relation|data-source|database|dataservers|dataset|dataset-handle|date|datetime|datetime-tz|day|db-remote-host|dbcodepage|dbcollation|dbname|dbparam|dbrest|dbrestr|dbrestri|dbrestric|dbrestrict|dbrestricti|dbrestrictio|dbrestriction|dbrestrictions|dbtaskid|dbtype|dbvers|dbversi|dbversio|dbversion|dde|dde-notify|debug-list|debug-set-tenant|debugger|dec|deci|decim|decima|decimal|decimals|declare|decrypt|def|default-action|default-ex|default-ext|default-exte|default-exten|default-extens|default-extensi|default-extensio|default-extension|default-noxl|default-noxla|default-noxlat|default-noxlate|default-pop-up|default-window|defer-lob-fetch|defi|defin|define|define-user-event-manager|defined|del|delegate|delete|delete|delete-character|delete-column|delete-end-line|delete-field|delete-word|delimiter|desc|desce|descen|descend|descendi|descendin|descending|deselect|deselect-extend|deselection|deselection-extend|destructor|detach|dialog-box|dialog-help|dict|dicti|dictio|diction|dictiona|dictionar|dictionary|disable|disabled|dismiss-menu|disp|displ|displa|display|distinct|dll-call-type|do|dos|dos-end|dotnet-clr-loaded|double|down|drop|drop-down|drop-down-list|drop-file-notify|dslog-manager|dump|dynamic|dynamic-cast|dynamic-current-value|dynamic-enum|dynamic-func|dynamic-funct|dynamic-functi|dynamic-functio|dynamic-function|dynamic-invoke|dynamic-new|dynamic-next-value|dynamic-property)(?![\\w-])",
653
3173
  "name": "keyword.other.abl"
654
3174
  },
655
3175
  "keywords-e": {
656
- "match": "(?i)(?<![\\w-])(each|echo|edge|edge-c|edge-ch|edge-cha|edge-char|edge-chars|edge-p|edge-pi|edge-pix|edge-pixe|edge-pixel|edge-pixels|edit-can-paste|edit-can-undo|edit-clear|edit-copy|edit-cut|edit-paste|edit-undo|editing|editor|editor-backtab|editor-tab|else|empty|empty-dataset|empty-selection|empty-temp-table|enable|enable-connections|enabled|encode|encode-domain-access-code|encoding|encrypt|encrypt-audit-mac-key|encryption-salt|end|end|end-box-selection|end-document|end-element|end-error|end-event-group|end-file-drop|end-key|end-move|end-resize|end-row-resize|end-search|end-user-prompt|endkey|endkey|enter-menubar|entered|entity-expansion-limit|entry|entry|entry-types-list|enum|eq|error|error|error-col|error-colu|error-colum|error-column|error-object|error-object-detail|error-row|error-stack-trace|error-stat|error-statu|error-status|error-string|escape|etime|event|event-group-id|event-procedure|event-procedure-context|event-t|event-ty|event-typ|event-type|events|except|exclusive|exclusive-id|exclusive-l|exclusive-lo|exclusive-loc|exclusive-lock|exclusive-web|exclusive-web-|exclusive-web-u|exclusive-web-us|exclusive-web-use|exclusive-web-user|execute|execution-log|exists|exit|exit-code|exp|expand|expandable|expire|explicit|export|export-principal|extended|extent|external|extract)(?![\\w-])",
3176
+ "match": "(?i)(?<![\\w-])(each|echo|edge|editing|editor|editor-backtab|editor-tab|else|empty-selection|enable|enabled|encode|encrypt|end|end-box-selection|end-error|end-key|end-move|end-resize|end-row-resize|end-search|endkey|endkey|enter-menubar|entered|entry|enum|eq|error|error-stat|error-statu|error-status|escape|etime|event|events|except|exclusive|exclusive-l|exclusive-lo|exclusive-loc|exclusive-lock|exclusive-web|exclusive-web-|exclusive-web-u|exclusive-web-us|exclusive-web-use|exclusive-web-user|execute|exists|exit|exp|expire|explicit|export|extended|extent|external|extract)(?![\\w-])",
657
3177
  "name": "keyword.other.abl"
658
3178
  },
659
3179
  "keywords-f": {
660
- "match": "(?i)(?<![\\w-])(false|false-leaks|fetch|fetch-selected-row|fgc|fgco|fgcol|fgcolo|fgcolor|field|fields|file|file-access-d|file-access-da|file-access-dat|file-access-date|file-access-t|file-access-ti|file-access-tim|file-access-time|file-create-d|file-create-da|file-create-dat|file-create-date|file-create-t|file-create-ti|file-create-tim|file-create-time|file-info|file-infor|file-inform|file-informa|file-informat|file-informati|file-informatio|file-information|file-mod-d|file-mod-da|file-mod-dat|file-mod-date|file-mod-t|file-mod-ti|file-mod-tim|file-mod-time|file-name|file-off|file-offs|file-offse|file-offset|file-size|file-type|filename|fill|fill-in|fill-mode|fill-where-string|filled|filters|final|finally|find|find|find-by-rowid|find-case-sensitive|find-current|find-first|find-global|find-last|find-next|find-next-occurrence|find-prev-occurrence|find-previous|find-select|find-unique|find-wrap-around|finder|firehose-cursor|first|first-async|first-async-|first-async-r|first-async-re|first-async-req|first-async-requ|first-async-reque|first-async-reques|first-async-request|first-buffer|first-child|first-column|first-data-source|first-dataset|first-form|first-object|first-of|first-proc|first-proce|first-proced|first-procedu|first-procedur|first-procedure|first-query|first-serv|first-serve|first-server|first-server-socket|first-socket|first-tab-i|first-tab-it|first-tab-ite|first-tab-item|fit-last-column|fix-codepage|fixed-only|flags|flat-button|float|focus|focus-in|focused-row|focused-row-selected|font|font-table|for|force-file|fore|foreg|foregr|foregro|foregrou|foregroun|foreground|foreign-key-hidden|form|form-input|form-long-input|forma|format|formatte|formatted|forward|forward-only|forwards|fragmen|fragment|fram|frame|frame-col|frame-db|frame-down|frame-field|frame-file|frame-inde|frame-index|frame-line|frame-name|frame-row|frame-spa|frame-spac|frame-spaci|frame-spacin|frame-spacing|frame-val|frame-valu|frame-value|frame-x|frame-y|frequency|from|from-c|from-ch|from-cha|from-char|from-chars|from-cur|from-curr|from-curre|from-curren|from-current|from-p|from-pi|from-pix|from-pixe|from-pixel|from-pixels|fromnoreorder|full-height|full-height-c|full-height-ch|full-height-cha|full-height-char|full-height-chars|full-height-p|full-height-pi|full-height-pix|full-height-pixe|full-height-pixel|full-height-pixels|full-pathn|full-pathna|full-pathnam|full-pathname|full-width|full-width-|full-width-c|full-width-ch|full-width-cha|full-width-char|full-width-chars|full-width-p|full-width-pi|full-width-pix|full-width-pixe|full-width-pixel|full-width-pixels|function|function-call-type)(?![\\w-])",
3180
+ "match": "(?i)(?<![\\w-])(false|false-leaks|fetch|field|fields|file|file-access-d|file-access-da|file-access-dat|file-access-date|file-access-t|file-access-ti|file-access-tim|file-access-time|file-info|file-infor|file-inform|file-informa|file-informat|file-informati|file-informatio|file-information|filename|fill-in|filters|final|finally|find|find|find-case-sensitive|find-global|find-next-occurrence|find-prev-occurrence|find-select|find-wrap-around|finder|firehose-cursor|first|first-of|fix-codepage|fixed-only|flags|float|focus|focus-in|font|font-table|for|force-file|form|forma|format|forward|forwards|fram|frame|frame-db|frame-down|frame-field|frame-file|frame-inde|frame-index|frame-line|frame-val|frame-valu|frame-value|from|from-c|from-ch|from-cha|from-char|from-chars|from-cur|from-curr|from-curre|from-curren|from-current|from-p|from-pi|from-pix|from-pixe|from-pixel|from-pixels|fromnoreorder|full-width|function|function-call-type)(?![\\w-])",
661
3181
  "name": "keyword.other.abl"
662
3182
  },
663
3183
  "keywords-g": {
664
- "match": "(?i)(?<![\\w-])(gateway|gateways|ge|generate-md5|generate-pbe-key|generate-pbe-salt|generate-random-key|generate-uuid|get|get|get-attr-call-type|get-attribute|get-attribute-node|get-binary-data|get-bits|get-blue|get-blue-|get-blue-v|get-blue-va|get-blue-val|get-blue-valu|get-blue-value|get-browse-col|get-browse-colu|get-browse-colum|get-browse-column|get-buffer-handle|get-byte|get-byte-order|get-bytes|get-bytes-available|get-callback-proc-context|get-callback-proc-name|get-cgi-list|get-cgi-long-value|get-cgi-value|get-changes|get-child|get-child-rel|get-child-rela|get-child-relat|get-child-relati|get-child-relatio|get-child-relation|get-class|get-client|get-codepage|get-codepages|get-coll|get-colla|get-collat|get-collati|get-collatio|get-collation|get-collations|get-column|get-config-value|get-curr|get-curre|get-curren|get-current|get-dataset-buffer|get-db-client|get-dir|get-document-element|get-double|get-dropped-file|get-dynamic|get-effective-tenant-id|get-effective-tenant-name|get-error-column|get-error-row|get-file|get-file-name|get-file-offse|get-file-offset|get-firs|get-first|get-float|get-green|get-green-|get-green-v|get-green-va|get-green-val|get-green-valu|get-green-value|get-header-entr|get-header-entry|get-index-by-namespace-name|get-index-by-qname|get-int64|get-iteration|get-key-val|get-key-valu|get-key-value|get-last|get-localname-by-index|get-long|get-message|get-message-type|get-next|get-node|get-number|get-parent|get-pointer-value|get-prev|get-printers|get-property|get-qname-by-index|get-red|get-red-|get-red-v|get-red-va|get-red-val|get-red-valu|get-red-value|get-rel|get-rela|get-relat|get-relati|get-relatio|get-relation|get-repositioned-row|get-rgb|get-rgb-|get-rgb-v|get-rgb-va|get-rgb-val|get-rgb-valu|get-rgb-value|get-row|get-safe-user|get-selected|get-selected-|get-selected-w|get-selected-wi|get-selected-wid|get-selected-widg|get-selected-widge|get-selected-widget|get-serialized|get-short|get-signature|get-size|get-socket-option|get-source-buffer|get-string|get-tab-item|get-text-height|get-text-height-c|get-text-height-ch|get-text-height-cha|get-text-height-char|get-text-height-chars|get-text-height-p|get-text-height-pi|get-text-height-pix|get-text-height-pixe|get-text-height-pixel|get-text-height-pixels|get-text-width|get-text-width-c|get-text-width-ch|get-text-width-cha|get-text-width-char|get-text-width-chars|get-text-width-p|get-text-width-pi|get-text-width-pix|get-text-width-pixe|get-text-width-pixel|get-text-width-pixels|get-top-buffer|get-type-by-index|get-type-by-namespace-name|get-type-by-qname|get-unsigned-long|get-unsigned-short|get-uri-by-index|get-value-by-index|get-value-by-namespace-name|get-value-by-qname|get-wait|get-wait-|get-wait-s|get-wait-st|get-wait-sta|get-wait-stat|get-wait-state|getbyte|global|go|go-on|go-pend|go-pendi|go-pendin|go-pending|goto|grant|grant-archive|graphic-e|graphic-ed|graphic-edg|graphic-edge|grayed|grid-factor-h|grid-factor-ho|grid-factor-hor|grid-factor-hori|grid-factor-horiz|grid-factor-horizo|grid-factor-horizon|grid-factor-horizont|grid-factor-horizonta|grid-factor-horizontal|grid-factor-v|grid-factor-ve|grid-factor-ver|grid-factor-vert|grid-factor-verti|grid-factor-vertic|grid-factor-vertica|grid-factor-vertical|grid-set|grid-snap|grid-unit-height|grid-unit-height-c|grid-unit-height-ch|grid-unit-height-cha|grid-unit-height-char|grid-unit-height-chars|grid-unit-height-p|grid-unit-height-pi|grid-unit-height-pix|grid-unit-height-pixe|grid-unit-height-pixel|grid-unit-height-pixels|grid-unit-width|grid-unit-width-c|grid-unit-width-ch|grid-unit-width-cha|grid-unit-width-char|grid-unit-width-chars|grid-unit-width-p|grid-unit-width-pi|grid-unit-width-pix|grid-unit-width-pixe|grid-unit-width-pixel|grid-unit-width-pixels|grid-visible|group|group-box|gt|guid)(?![\\w-])",
3184
+ "match": "(?i)(?<![\\w-])(gateway|gateways|ge|generate-md5|generate-pbe-key|generate-pbe-salt|generate-random-key|generate-uuid|get|get-attr-call-type|get-bits|get-byte|get-byte-order|get-bytes|get-class|get-codepage|get-codepages|get-coll|get-colla|get-collat|get-collati|get-collatio|get-collation|get-collations|get-db-client|get-dir|get-double|get-effective-tenant-id|get-effective-tenant-name|get-file|get-float|get-int64|get-key-val|get-key-valu|get-key-value|get-long|get-pointer-value|get-property|get-short|get-signature|get-size|get-unsigned-long|get-unsigned-short|getbyte|global|go|go-on|go-pend|go-pendi|go-pendin|go-pending|goto|grant|grant-archive|grayed|grid-set|group|gt|guid)(?![\\w-])",
665
3185
  "name": "keyword.other.abl"
666
3186
  },
667
3187
  "keywords-h": {
668
- "match": "(?i)(?<![\\w-])(handle|handler|has-lobs|has-records|having|header|height|height-c|height-ch|height-cha|height-char|height-chars|height-p|height-pi|height-pix|height-pixe|height-pixel|height-pixels|help|help|help-con|help-cont|help-conte|help-contex|help-context|help-topic|helpfile-n|helpfile-na|helpfile-nam|helpfile-name|hex-decode|hex-encode|hidden|hide|hint|home|hori|horiz|horiz-end|horiz-home|horiz-scroll-drag|horizo|horizon|horizont|horizonta|horizontal|host-byte-order|html-charset|html-end-of-line|html-end-of-page|html-frame-begin|html-frame-end|html-header-begin|html-header-end|html-title-begin|html-title-end|hwnd)(?![\\w-])",
3188
+ "match": "(?i)(?<![\\w-])(having|header|help-con|help-cont|help-conte|help-contex|help-context|help-topic|helpfile-n|helpfile-na|helpfile-nam|helpfile-name|hex-decode|hex-encode|hide|hint|home|hori|horiz|horiz-end|horiz-home|horiz-scroll-drag|host-byte-order)(?![\\w-])",
669
3189
  "name": "keyword.other.abl"
670
3190
  },
671
3191
  "keywords-i": {
672
- "match": "(?i)(?<![\\w-])(icfparam|icfparame|icfparamet|icfparamete|icfparameter|icon|if|ignore-current-mod|ignore-current-modi|ignore-current-modif|ignore-current-modifi|ignore-current-modifie|ignore-current-modified|image|image-down|image-insensitive|image-size|image-size-c|image-size-ch|image-size-cha|image-size-char|image-size-chars|image-size-p|image-size-pi|image-size-pix|image-size-pixe|image-size-pixel|image-size-pixels|image-up|immediate-display|implements|import|import-node|import-principal|in|in-handle|increment-exclusive-id|index|index-hint|index-info|index-infor|index-inform|index-informa|index-informat|index-informati|index-informatio|index-information|indexed-reposition|indicator|info|infor|inform|informa|informat|informati|informatio|information|inherit-bgc|inherit-bgco|inherit-bgcol|inherit-bgcolo|inherit-bgcolor|inherit-color-mode|inherit-fgc|inherit-fgco|inherit-fgcol|inherit-fgcolo|inherit-fgcolor|inherits|init|initial|initial-dir|initial-filter|initialize|initialize-document-type|initiate|inner|inner-chars|inner-lines|input|input-o|input-ou|input-out|input-outp|input-outpu|input-output|input-value|insert|insert-attribute|insert-b|insert-ba|insert-bac|insert-back|insert-backt|insert-backta|insert-backtab|insert-before|insert-column|insert-field|insert-field-data|insert-field-label|insert-file|insert-mode|insert-row|insert-string|insert-t|insert-ta|insert-tab|instantiating-procedure|int|int64|inte|integ|intege|integer|interface|internal-entries|interval|into|invoke|is|is-attr|is-attr-|is-attr-s|is-attr-sp|is-attr-spa|is-attr-spac|is-attr-space|is-clas|is-class|is-codepage-fixed|is-column-codepage|is-db-multi-tenant|is-json|is-lead-byte|is-multi-tenant|is-open|is-parameter-set|is-partitione|is-partitioned|is-row-selected|is-selected|is-xml|iso-date|item|items-per-row|iteration-changed)(?![\\w-])",
3192
+ "match": "(?i)(?<![\\w-])(if|image-size|image-size-c|image-size-ch|image-size-cha|image-size-char|image-size-chars|image-size-p|image-size-pi|image-size-pix|image-size-pixe|image-size-pixel|image-size-pixels|implements|import|in|in-handle|increment-exclusive-id|index-hint|indexed-reposition|indicator|info|infor|inform|informa|informat|informati|informatio|information|inherit-color-mode|inherits|init|initial|initial-dir|initial-filter|inner|input|input-o|input-ou|input-out|input-outp|input-outpu|input-output|insert|insert-column|insert-field|insert-field-data|insert-field-label|insert-mode|int|int64|inte|integ|intege|integer|interface|interval|into|invoke|is|is-attr|is-attr-|is-attr-s|is-attr-sp|is-attr-spa|is-attr-spac|is-attr-space|is-clas|is-class|is-codepage-fixed|is-column-codepage|is-db-multi-tenant|is-lead-byte|iso-date|item|iteration-changed)(?![\\w-])",
673
3193
  "name": "keyword.other.abl"
674
3194
  },
675
3195
  "keywords-j": {
@@ -677,63 +3197,63 @@
677
3197
  "name": "keyword.other.abl"
678
3198
  },
679
3199
  "keywords-k": {
680
- "match": "(?i)(?<![\\w-])(kblabel|keep-connection-open|keep-frame-z|keep-frame-z-|keep-frame-z-o|keep-frame-z-or|keep-frame-z-ord|keep-frame-z-orde|keep-frame-z-order|keep-messages|keep-security-cache|keep-tab-order|key|key-code|key-func|key-funct|key-functi|key-functio|key-function|key-label|keycache-join|keycode|keyfunc|keyfunct|keyfuncti|keyfunctio|keyfunction|keylabel|keys|keyword|keyword-all)(?![\\w-])",
3200
+ "match": "(?i)(?<![\\w-])(kblabel|keep-messages|keep-tab-order|key|key-code|key-func|key-funct|key-functi|key-functio|key-function|key-label|keycache-join|keycode|keyfunc|keyfunct|keyfuncti|keyfunctio|keyfunction|keylabel|keyword|keyword-all)(?![\\w-])",
681
3201
  "name": "keyword.other.abl"
682
3202
  },
683
3203
  "keywords-l": {
684
- "match": "(?i)(?<![\\w-])(label|label-bgc|label-bgco|label-bgcol|label-bgcolo|label-bgcolor|label-dc|label-dco|label-dcol|label-dcolo|label-dcolor|label-fgc|label-fgco|label-fgcol|label-fgcolo|label-fgcolor|label-font|label-pfc|label-pfco|label-pfcol|label-pfcolo|label-pfcolor|labels|labels-have-colons|landscape|language|languages|large|large-to-small|last|last-async|last-async-|last-async-r|last-async-re|last-async-req|last-async-requ|last-async-reque|last-async-reques|last-async-request|last-batch|last-child|last-even|last-event|last-form|last-key|last-object|last-of|last-proce|last-proced|last-procedu|last-procedur|last-procedure|last-serv|last-serve|last-server|last-server-socket|last-socket|last-tab-i|last-tab-it|last-tab-ite|last-tab-item|lastkey|lc|ldbname|le|leading|leak-detection|leave|leave|left|left|left-align|left-aligne|left-aligned|left-end|left-trim|length|library|library-calling-convention|like|like-sequential|line|line-count|line-counte|line-counter|line-down|line-left|line-right|line-up|list-events|list-item-pairs|list-items|list-property-names|list-query-attrs|list-set-attrs|list-widgets|listi|listin|listing|listings|literal-question|little-endian|load|load-domains|load-from|load-icon|load-image|load-image-down|load-image-insensitive|load-image-up|load-mouse-p|load-mouse-po|load-mouse-poi|load-mouse-poin|load-mouse-point|load-mouse-pointe|load-mouse-pointer|load-picture|load-result-into|load-small-icon|lob-dir|local-host|local-name|local-port|local-version-info|locator-column-number|locator-line-number|locator-public-id|locator-system-id|locator-type|lock-registration|locked|log|log-audit-event|log-entry-types|log-id|log-manager|log-threshold|logfile-name|logging-level|logical|login-expiration-timestamp|login-host|login-state|logout|long|longch|longcha|longchar|longchar-to-node-value|lookahead|lookup|lower|lt)(?![\\w-])",
3204
+ "match": "(?i)(?<![\\w-])(label|label-bgc|label-bgco|label-bgcol|label-bgcolo|label-bgcolor|label-dc|label-dco|label-dcol|label-dcolo|label-dcolor|label-fgc|label-fgco|label-fgcol|label-fgcolo|label-fgcolor|label-font|label-pfc|label-pfco|label-pfcol|label-pfcolo|label-pfcolor|labels|landscape|last|last-key|last-of|lastkey|lc|ldbname|le|leading|leak-detection|leave|left|left-align|left-aligne|left-aligned|left-end|left-trim|length|library|like|like-sequential|line|line-count|line-counte|line-counter|line-down|line-left|line-right|line-up|list-events|list-item-pairs|list-items|list-property-names|list-query-attrs|list-set-attrs|list-widgets|listi|listin|listing|listings|little-endian|load|load-from|load-picture|load-result-into|lob-dir|locked|log|log-id|log-manager|logical|long|longch|longcha|longchar|lookahead|lookup|lower|lt)(?![\\w-])",
685
3205
  "name": "keyword.other.abl"
686
3206
  },
687
3207
  "keywords-m": {
688
- "match": "(?i)(?<![\\w-])(machine-class|main-menu|mandatory|manual-highlight|map|margin-extra|margin-height|margin-height-c|margin-height-ch|margin-height-cha|margin-height-char|margin-height-chars|margin-height-p|margin-height-pi|margin-height-pix|margin-height-pixe|margin-height-pixel|margin-height-pixels|margin-width|margin-width-c|margin-width-ch|margin-width-cha|margin-width-char|margin-width-chars|margin-width-p|margin-width-pi|margin-width-pix|margin-width-pixe|margin-width-pixel|margin-width-pixels|mark-new|mark-row-state|matches|max|max-button|max-chars|max-data-guess|max-height|max-height-c|max-height-ch|max-height-cha|max-height-char|max-height-chars|max-height-p|max-height-pi|max-height-pix|max-height-pixe|max-height-pixel|max-height-pixels|max-rows|max-size|max-val|max-valu|max-value|max-width|max-width-c|max-width-ch|max-width-cha|max-width-char|max-width-chars|max-width-p|max-width-pi|max-width-pix|max-width-pixe|max-width-pixel|max-width-pixels|maximize|maximum|maximum-level|md5-digest|md5-value|member|memptr|memptr-to-node-value|menu|menu-bar|menu-drop|menu-item|menu-k|menu-ke|menu-key|menu-m|menu-mo|menu-mou|menu-mous|menu-mouse|menubar|merge-by-field|merge-changes|merge-row-changes|message|message-area|message-area-font|message-area-msg|message-digest|message-line|message-lines|method|min|min-button|min-column-width-c|min-column-width-ch|min-column-width-cha|min-column-width-char|min-column-width-chars|min-column-width-p|min-column-width-pi|min-column-width-pix|min-column-width-pixe|min-column-width-pixel|min-column-width-pixels|min-height|min-height-c|min-height-ch|min-height-cha|min-height-char|min-height-chars|min-height-p|min-height-pi|min-height-pix|min-height-pixe|min-height-pixel|min-height-pixels|min-schema-marshal|min-schema-marshall|min-size|min-val|min-valu|min-value|min-width|min-width-c|min-width-ch|min-width-cha|min-width-char|min-width-chars|min-width-p|min-width-pi|min-width-pix|min-width-pixe|min-width-pixel|min-width-pixels|mini|minim|minimu|minimum|mod|modified|modulo|month|mouse|mouse-p|mouse-po|mouse-poi|mouse-poin|mouse-point|mouse-pointe|mouse-pointer|movable|move|move-after|move-after-|move-after-t|move-after-ta|move-after-tab|move-after-tab-|move-after-tab-i|move-after-tab-it|move-after-tab-ite|move-after-tab-item|move-befor|move-before|move-before-|move-before-t|move-before-ta|move-before-tab|move-before-tab-|move-before-tab-i|move-before-tab-it|move-before-tab-ite|move-before-tab-item|move-col|move-colu|move-colum|move-column|move-to-b|move-to-bo|move-to-bot|move-to-bott|move-to-botto|move-to-bottom|move-to-eof|move-to-t|move-to-to|move-to-top|mpe|mtime|multi-compile|multiple|multiple-key|multitasking-interval|must-exist|must-understand)(?![\\w-])",
3208
+ "match": "(?i)(?<![\\w-])(machine-class|main-menu|map|margin-extra|margin-height|margin-height-c|margin-height-ch|margin-height-cha|margin-height-char|margin-height-chars|margin-height-p|margin-height-pi|margin-height-pix|margin-height-pixe|margin-height-pixel|margin-height-pixels|margin-width|margin-width-c|margin-width-ch|margin-width-cha|margin-width-char|margin-width-chars|margin-width-p|margin-width-pi|margin-width-pix|margin-width-pixe|margin-width-pixel|margin-width-pixels|matches|max|max-chars|max-rows|max-size|maximize|maximum|maximum-level|md5-digest|md5-value|member|memptr|menu|menu-drop|menu-item|menu-k|menu-ke|menu-key|menubar|merge-row-changes|message|message-digest|message-line|message-lines|method|min|min-size|mini|minim|minimu|minimum|modulo|month|mpe|mtime|multiple|multiple-key|must-exist)(?![\\w-])",
689
3209
  "name": "keyword.other.abl"
690
3210
  },
691
3211
  "keywords-n": {
692
- "match": "(?i)(?<![\\w-])(name|namespace-prefix|namespace-uri|native|ne|needs-appserver-prompt|needs-prompt|nested|new|new|new-instance|new-line|new-row|next|next-col|next-colu|next-colum|next-column|next-error|next-frame|next-prompt|next-rowid|next-sibling|next-tab-ite|next-tab-item|next-value|next-word|no|no-apply|no-array-m|no-array-me|no-array-mes|no-array-mess|no-array-messa|no-array-messag|no-array-message|no-assign|no-attr|no-attr-l|no-attr-li|no-attr-lis|no-attr-list|no-attr-s|no-attr-sp|no-attr-spa|no-attr-spac|no-attr-space|no-auto-tri|no-auto-trim|no-auto-validate|no-bind-where|no-box|no-column-sc|no-column-scr|no-column-scro|no-column-scrol|no-column-scroll|no-column-scrolli|no-column-scrollin|no-column-scrolling|no-console|no-convert|no-convert-3d|no-convert-3d-|no-convert-3d-c|no-convert-3d-co|no-convert-3d-col|no-convert-3d-colo|no-convert-3d-color|no-convert-3d-colors|no-current-value|no-debug|no-drag|no-echo|no-empty-space|no-error|no-f|no-fi|no-fil|no-fill|no-firehose-cursor|no-focus|no-help|no-hide|no-index-hint|no-inherit-bgc|no-inherit-bgco|no-inherit-bgcol|no-inherit-bgcolo|no-inherit-bgcolor|no-inherit-fgc|no-inherit-fgco|no-inherit-fgcol|no-inherit-fgcolo|no-inherit-fgcolor|no-join-by-sqldb|no-keycache-join|no-label|no-labels|no-lobs|no-lock|no-lookahead|no-map|no-mes|no-mess|no-messa|no-messag|no-message|no-pause|no-prefe|no-prefet|no-prefetc|no-prefetch|no-query-o|no-query-or|no-query-ord|no-query-orde|no-query-order|no-query-order-|no-query-order-a|no-query-order-ad|no-query-order-add|no-query-order-adde|no-query-order-added|no-query-u|no-query-un|no-query-uni|no-query-uniq|no-query-uniqu|no-query-unique|no-query-unique-|no-query-unique-a|no-query-unique-ad|no-query-unique-add|no-query-unique-adde|no-query-unique-added|no-return-val|no-return-valu|no-return-value|no-row-markers|no-schema-marshal|no-schema-marshall|no-scrollbar-v|no-scrollbar-ve|no-scrollbar-ver|no-scrollbar-vert|no-scrollbar-verti|no-scrollbar-vertic|no-scrollbar-vertica|no-scrollbar-vertical|no-scrolling|no-separate-connection|no-separators|no-tab|no-tab-|no-tab-s|no-tab-st|no-tab-sto|no-tab-stop|no-und|no-unde|no-under|no-underl|no-underli|no-underlin|no-underline|no-undo|no-val|no-vali|no-valid|no-valida|no-validat|no-validate|no-wait|no-word-wrap|node-type|node-value|node-value-to-longchar|node-value-to-memptr|non-serializable|nonamespace-schema-location|none|normalize|not|not-active|now|null|num-ali|num-alia|num-alias|num-aliase|num-aliases|num-buffers|num-but|num-butt|num-butto|num-button|num-buttons|num-child-relations|num-children|num-col|num-colu|num-colum|num-column|num-columns|num-copies|num-dbs|num-dropped-files|num-entries|num-fields|num-formats|num-header-entries|num-items|num-iterations|num-lines|num-locked-col|num-locked-colu|num-locked-colum|num-locked-column|num-locked-columns|num-log-files|num-messages|num-parameters|num-references|num-relations|num-repl|num-repla|num-replac|num-replace|num-replaced|num-results|num-selected|num-selected-rows|num-selected-widgets|num-source-buffers|num-tabs|num-to-retain|num-top-buffers|num-visible-col|num-visible-colu|num-visible-colum|num-visible-column|num-visible-columns|numeric|numeric-dec|numeric-deci|numeric-decim|numeric-decima|numeric-decimal|numeric-decimal-|numeric-decimal-p|numeric-decimal-po|numeric-decimal-poi|numeric-decimal-poin|numeric-decimal-point|numeric-f|numeric-fo|numeric-for|numeric-form|numeric-forma|numeric-format|numeric-sep|numeric-sepa|numeric-separ|numeric-separa|numeric-separat|numeric-separato|numeric-separator)(?![\\w-])",
3212
+ "match": "(?i)(?<![\\w-])(native|ne|nested|new|new-instance|new-line|next|next-error|next-frame|next-prompt|next-value|next-word|no|no-apply|no-array-m|no-array-me|no-array-mes|no-array-mess|no-array-messa|no-array-messag|no-array-message|no-assign|no-attr|no-attr-l|no-attr-li|no-attr-lis|no-attr-list|no-attr-s|no-attr-sp|no-attr-spa|no-attr-spac|no-attr-space|no-auto-tri|no-auto-trim|no-auto-validate|no-bind-where|no-box|no-column-sc|no-column-scr|no-column-scro|no-column-scrol|no-column-scroll|no-column-scrolli|no-column-scrollin|no-column-scrolling|no-console|no-convert|no-convert-3d|no-convert-3d-|no-convert-3d-c|no-convert-3d-co|no-convert-3d-col|no-convert-3d-colo|no-convert-3d-color|no-convert-3d-colors|no-debug|no-drag|no-echo|no-error|no-f|no-fi|no-fil|no-fill|no-firehose-cursor|no-help|no-hide|no-index-hint|no-inherit-bgc|no-inherit-bgco|no-inherit-bgcol|no-inherit-bgcolo|no-inherit-bgcolor|no-inherit-fgc|no-inherit-fgco|no-inherit-fgcol|no-inherit-fgcolo|no-inherit-fgcolor|no-join-by-sqldb|no-keycache-join|no-label|no-labels|no-lobs|no-lock|no-lookahead|no-map|no-mes|no-mess|no-messa|no-messag|no-message|no-pause|no-prefe|no-prefet|no-prefetc|no-prefetch|no-query-o|no-query-or|no-query-ord|no-query-orde|no-query-order|no-query-order-|no-query-order-a|no-query-order-ad|no-query-order-add|no-query-order-adde|no-query-order-added|no-query-u|no-query-un|no-query-uni|no-query-uniq|no-query-uniqu|no-query-unique|no-query-unique-|no-query-unique-a|no-query-unique-ad|no-query-unique-add|no-query-unique-adde|no-query-unique-added|no-return-val|no-return-valu|no-return-value|no-row-markers|no-scrollbar-v|no-scrollbar-ve|no-scrollbar-ver|no-scrollbar-vert|no-scrollbar-verti|no-scrollbar-vertic|no-scrollbar-vertica|no-scrollbar-vertical|no-scrolling|no-separate-connection|no-separators|no-tab|no-tab-|no-tab-s|no-tab-st|no-tab-sto|no-tab-stop|no-und|no-unde|no-under|no-underl|no-underli|no-underlin|no-underline|no-undo|no-wait|no-word-wrap|node-type|non-serializable|none|normalize|not|not-active|now|null|num-ali|num-alia|num-alias|num-aliase|num-aliases|num-copies|num-dbs|num-entries|num-results)(?![\\w-])",
693
3213
  "name": "keyword.other.abl"
694
3214
  },
695
3215
  "keywords-o": {
696
- "match": "(?i)(?<![\\w-])(object|octet_length|of|off|off-end|off-home|ok|ok-cancel|old|ole-invoke-loca|ole-invoke-local|ole-invoke-locale|ole-names-loca|ole-names-local|ole-names-locale|on|on-frame|on-frame-|on-frame-b|on-frame-bo|on-frame-bor|on-frame-bord|on-frame-borde|on-frame-border|open|open-line-above|opsys|option|options|options|options-file|or|ordered-join|ordinal|orientation|origin-handle|origin-rowid|os-append|os-command|os-copy|os-create-dir|os-delete|os-dir|os-drive|os-drives|os-error|os-getenv|os-rename|os2|os400|otherwise|out-of-data|outer|outer-join|output|overlay|override|owner|owner-document)(?![\\w-])",
3216
+ "match": "(?i)(?<![\\w-])(object|octet_length|of|off|off-end|off-home|ok|ok-cancel|old|ole-invoke-loca|ole-invoke-local|ole-invoke-locale|ole-names-loca|ole-names-local|ole-names-locale|on|open|open-line-above|opsys|option|options-file|or|ordered-join|ordinal|orientation|os-append|os-command|os-copy|os-create-dir|os-delete|os-dir|os-drive|os-drives|os-error|os-getenv|os-rename|os2|os400|otherwise|out-of-data|outer|outer-join|output|overlay|override)(?![\\w-])",
697
3217
  "name": "keyword.other.abl"
698
3218
  },
699
3219
  "keywords-p": {
700
- "match": "(?i)(?<![\\w-])(package-private|package-protected|page|page-bot|page-bott|page-botto|page-bottom|page-down|page-left|page-num|page-numb|page-numbe|page-number|page-right|page-right-text|page-size|page-top|page-up|page-wid|page-widt|page-width|paged|param|parame|paramet|paramete|parameter|parent|parent-buffer|parent-fields-after|parent-fields-before|parent-id-field|parent-id-relation|parent-rel|parent-rela|parent-relat|parent-relati|parent-relatio|parent-relation|parent-window-close|parse-status|partial-key|pascal|password-field|paste|pathname|pause|pbe-hash-alg|pbe-hash-algo|pbe-hash-algor|pbe-hash-algori|pbe-hash-algorit|pbe-hash-algorith|pbe-hash-algorithm|pbe-key-rounds|pdbname|perf|perfo|perfor|perform|performa|performan|performanc|performance|persist|persiste|persisten|persistent|persistent-cache-disabled|persistent-procedure|pfc|pfco|pfcol|pfcolo|pfcolor|pick|pick-area|pick-both|pixels|pixels-per-col|pixels-per-colu|pixels-per-colum|pixels-per-column|pixels-per-row|popup-m|popup-me|popup-men|popup-menu|popup-o|popup-on|popup-onl|popup-only|portrait|position|precision|prefer-dataset|prepare-string|prepared|preproc|preproce|preproces|preprocess|presel|presele|preselec|preselect|prev|prev-col|prev-colu|prev-colum|prev-column|prev-frame|prev-sibling|prev-tab-i|prev-tab-it|prev-tab-ite|prev-tab-item|prev-word|primary|primary-passphrase|printer|printer-control-handle|printer-hdc|printer-name|printer-port|printer-setup|private|private-d|private-da|private-dat|private-data|privileges|proc-ha|proc-han|proc-hand|proc-handl|proc-handle|proc-st|proc-sta|proc-stat|proc-statu|proc-status|proce|proced|procedu|procedur|procedure|procedure-call-type|procedure-complete|procedure-name|procedure-type|process|process-architecture|profile-file|profiler|profiling|program-name|progress|progress-s|progress-so|progress-sou|progress-sour|progress-sourc|progress-source|prompt|prompt-f|prompt-fo|prompt-for|promsgs|propath|property|protected|provers|proversi|proversio|proversion|proxy|proxy-password|proxy-userid|public|public-id|publish|published-events|put|put|put-bits|put-byte|put-bytes|put-double|put-float|put-int64|put-key-val|put-key-valu|put-key-value|put-long|put-short|put-string|put-unsigned-long|put-unsigned-short|putbyte)(?![\\w-])",
3220
+ "match": "(?i)(?<![\\w-])(package-private|package-protected|page|page-bot|page-bott|page-botto|page-bottom|page-down|page-left|page-num|page-numb|page-numbe|page-number|page-right|page-right-text|page-size|page-top|page-up|page-wid|page-widt|page-width|paged|param|parame|paramet|paramete|parameter|parent|parent-window-close|partial-key|pascal|paste|pause|perf|perfo|perfor|perform|performa|performan|performanc|performance|persist|persiste|persisten|persistent|pick|pick-area|pick-both|pixels|portrait|precision|preproc|preproce|preproces|preprocess|preselect|preselec|presele|presel|prev|prev-frame|prev-word|primary|printer|printer-setup|private|privileges|proc-st|proc-sta|proc-stat|proc-statu|proc-status|proce|proced|procedu|procedur|procedure|procedure-call-type|procedure-complete|process|process-architecture|profile-file|profiler|progress|prompt|prompt-f|prompt-fo|prompt-for|promsgs|propath|property|protected|provers|proversi|proversio|proversion|public|publish|put|put|put-bits|put-byte|put-bytes|put-double|put-float|put-int64|put-key-val|put-key-valu|put-key-value|put-long|put-short|put-string|put-unsigned-long|put-unsigned-short|putbyte)(?![\\w\\-])",
701
3221
  "name": "keyword.other.abl"
702
3222
  },
703
3223
  "keywords-q": {
704
- "match": "(?i)(?<![\\w-])(qualified-user-id|query|query-close|query-off-end|query-open|query-prepare|query-tuning|question|quit|quoter)(?![\\w-])",
3224
+ "match": "(?i)(?<![\\w-])(query|query-tuning|question|quit)(?![\\w-])",
705
3225
  "name": "keyword.other.abl"
706
3226
  },
707
3227
  "keywords-r": {
708
- "match": "(?i)(?<![\\w-])(r-index|radio-buttons|radio-set|random|raw|raw-transfer|rcode-info|rcode-infor|rcode-inform|rcode-informa|rcode-informat|rcode-informati|rcode-informatio|rcode-information|read|read-available|read-exact-num|read-file|read-json|read-only|read-response|read-xml|read-xmlschema|readkey|real|recall|recid|record-len|record-leng|record-lengt|record-length|rect|recta|rectan|rectang|rectangl|rectangle|recursive|reference-only|refresh|refresh-audit-policy|refreshable|register-domain|reinstate|reject-changes|reject-row-changes|rejected|relation-fi|relation-fie|relation-fiel|relation-field|relation-fields|relations-active|release|remote|remote-host|remote-port|remove-attribute|remove-child|remove-events-proc|remove-events-proce|remove-events-proced|remove-events-procedu|remove-events-procedur|remove-events-procedure|remove-super-proc|remove-super-proce|remove-super-proced|remove-super-procedu|remove-super-procedur|remove-super-procedure|repeat|replace|replace|replace-child|replace-selection-text|replication-create|replication-delete|replication-write|reports|reposition|reposition-back|reposition-backw|reposition-backwa|reposition-backwar|reposition-backward|reposition-backwards|reposition-forw|reposition-forwa|reposition-forwar|reposition-forward|reposition-forwards|reposition-parent-rel|reposition-parent-rela|reposition-parent-relat|reposition-parent-relati|reposition-parent-relatio|reposition-parent-relation|reposition-to-row|reposition-to-rowid|request|request-info|reset|resiza|resizab|resizabl|resizable|resize|response-info|restart-row|restart-rowid|result|resume-display|retain|retain-s|retain-sh|retain-sha|retain-shap|retain-shape|retry|retry-cancel|return|return|return-ins|return-inse|return-inser|return-insert|return-inserte|return-inserted|return-to-start-di|return-to-start-dir|return-val|return-valu|return-value|return-value-data-type|return-value-dll-type|returns|reverse-from|revert|revoke|rgb-v|rgb-va|rgb-val|rgb-valu|rgb-value|right|right|right-align|right-aligne|right-aligned|right-end|right-trim|role|roles|round|rounded|routine-level|row|row-created|row-deleted|row-display|row-entry|row-height|row-height-c|row-height-ch|row-height-cha|row-height-char|row-height-chars|row-height-p|row-height-pi|row-height-pix|row-height-pixe|row-height-pixel|row-height-pixels|row-leave|row-ma|row-mar|row-mark|row-marke|row-marker|row-markers|row-modified|row-of|row-resizable|row-state|row-unmodified|rowid|rule|rule-row|rule-y|run|run-proc|run-proce|run-proced|run-procedu|run-procedur|run-procedure)(?![\\w-])",
3228
+ "match": "(?i)(?<![\\w-])(radio-buttons|radio-set|raw|raw-transfer|rcode-info|rcode-infor|rcode-inform|rcode-informa|rcode-informat|rcode-informati|rcode-informatio|rcode-information|read-available|read-exact-num|read-response|readkey|real|recall|recid|rect|recta|rectan|rectang|rectangl|rectangle|recursive|reference-only|refreshable|reinstate|relation-fi|relation-fie|relation-fiel|relation-field|relation-fields|release|repeat|replication-create|replication-delete|replication-write|reports|reposition-parent-rel|reposition-parent-rela|reposition-parent-relat|reposition-parent-relati|reposition-parent-relatio|reposition-parent-relation|request|reset|result|resume-display|retain|retry|retry-cancel|return|return|return-to-start-di|return-to-start-dir|return-val|return-valu|return-value|returns|reverse-from|revert|revoke|right|right|right-align|right-aligne|right-aligned|right-end|routine-level|row|row-created|row-deleted|row-display|row-entry|row-leave|row-modified|row-of|row-unmodified|rowid|rule|rule-row|rule-y|run|run-proc|run-proce|run-proced|run-procedu|run-procedur|run-procedure)(?![\\w-])",
709
3229
  "name": "keyword.other.abl"
710
3230
  },
711
3231
  "keywords-s": {
712
- "match": "(?i)(?<![\\w-])(save|save-as|save-as|save-file|save-row-changes|save-where-string|sax-attributes|sax-comple|sax-complet|sax-complete|sax-parse|sax-parse-first|sax-parse-next|sax-parser-error|sax-reader|sax-running|sax-uninitialized|sax-write-begin|sax-write-complete|sax-write-content|sax-write-element|sax-write-error|sax-write-idle|sax-write-tag|sax-writer|sax-xml|schema|schema-change|schema-location|schema-marshal|schema-path|screen|screen-io|screen-lines|screen-val|screen-valu|screen-value|scroll|scroll-bars|scroll-horizontal|scroll-left|scroll-mode|scroll-notify|scroll-right|scroll-to-current-row|scroll-to-i|scroll-to-it|scroll-to-ite|scroll-to-item|scroll-to-selected-row|scroll-vertical|scrollable|scrollbar-drag|scrollbar-h|scrollbar-ho|scrollbar-hor|scrollbar-hori|scrollbar-horiz|scrollbar-horizo|scrollbar-horizon|scrollbar-horizont|scrollbar-horizonta|scrollbar-horizontal|scrollbar-v|scrollbar-ve|scrollbar-ver|scrollbar-vert|scrollbar-verti|scrollbar-vertic|scrollbar-vertica|scrollbar-vertical|scrolled-row-pos|scrolled-row-posi|scrolled-row-posit|scrolled-row-positi|scrolled-row-positio|scrolled-row-position|scrolling|sdbname|seal|seal-timestamp|search|search-self|search-target|section|security-policy|seek|select|select|select-all|select-extend|select-focused-row|select-next-row|select-on-join|select-prev-row|select-repositioned-row|select-row|selectable|selected|selected-items|selection|selection-end|selection-extend|selection-list|selection-start|selection-text|self|send|sensitive|separate-connection|separator-fgc|separator-fgco|separator-fgcol|separator-fgcolo|separator-fgcolor|separators|serializable|serialize-hidden|serialize-name|serialize-row|server|server-connection-bo|server-connection-bou|server-connection-boun|server-connection-bound|server-connection-bound-re|server-connection-bound-req|server-connection-bound-requ|server-connection-bound-reque|server-connection-bound-reques|server-connection-bound-request|server-connection-co|server-connection-con|server-connection-cont|server-connection-conte|server-connection-contex|server-connection-context|server-connection-id|server-operating-mode|server-socket|session|session-end|session-id|set|set-actor|set-appl-context|set-attr-call-type|set-attribute|set-attribute-node|set-blue|set-blue-|set-blue-v|set-blue-va|set-blue-val|set-blue-valu|set-blue-value|set-break|set-buffers|set-byte-order|set-callback|set-callback-procedure|set-cell-focus|set-client|set-commit|set-connect-procedure|set-contents|set-db-client|set-db-logging|set-dynamic|set-effective-tenant|set-event-manager-option|set-green|set-green-|set-green-v|set-green-va|set-green-val|set-green-valu|set-green-value|set-input-source|set-must-understand|set-node|set-numeric-form|set-numeric-forma|set-numeric-format|set-option|set-output-destination|set-parameter|set-pointer-val|set-pointer-valu|set-pointer-value|set-property|set-read-response-procedure|set-red|set-red-|set-red-v|set-red-va|set-red-val|set-red-valu|set-red-value|set-repositioned-row|set-rgb|set-rgb-|set-rgb-v|set-rgb-va|set-rgb-val|set-rgb-valu|set-rgb-value|set-role|set-rollback|set-safe-user|set-selection|set-serialized|set-size|set-socket-option|set-sort-arrow|set-state|set-wait|set-wait-|set-wait-s|set-wait-st|set-wait-sta|set-wait-stat|set-wait-state|settings|setuser|setuseri|setuserid|sha1-digest|share|share-|share-l|share-lo|share-loc|share-lock|shared|short|show-in-task|show-in-taskb|show-in-taskba|show-in-taskbar|show-stat|show-stats|side-lab|side-labe|side-label|side-label-h|side-label-ha|side-label-han|side-label-hand|side-label-handl|side-label-handle|side-labels|signature|signature-value|silent|simple|single|single-character|single-run|singleton|size|size-c|size-ch|size-cha|size-char|size-chars|size-p|size-pi|size-pix|size-pixe|size-pixel|size-pixels|skip|skip-deleted-rec|skip-deleted-reco|skip-deleted-recor|skip-deleted-record|skip-group-duplicates|skip-schema-check|slider|small-icon|small-title|smallint|soap-fault|soap-fault-actor|soap-fault-code|soap-fault-detail|soap-fault-misunderstood-header|soap-fault-node|soap-fault-role|soap-fault-string|soap-fault-subcode|soap-header|soap-header-entryref|soap-version|socket|some|sort|sort-ascending|sort-number|source|source-procedure|space|sql|sqrt|ssl-server-name|standalone|start|start-box-selection|start-document|start-element|start-extend-box-selection|start-mem-check|start-move|start-resize|start-row-resize|start-search|starting|startup-parameters|state-detail|static|statistics|status|status-area|status-area-font|status-area-msg|stdcall|stomp-detection|stomp-frequency|stop|stop|stop-after|stop-display|stop-mem-check|stop-object|stop-parsing|stoppe|stopped|stored-proc|stored-proce|stored-proced|stored-procedu|stored-procedur|stored-procedure|stream|stream-handle|stream-io|stretch-to-fit|strict|strict-entity-resolution|string|string-value|string-xref|sub-ave|sub-aver|sub-avera|sub-averag|sub-average|sub-count|sub-max|sub-maxi|sub-maxim|sub-maximu|sub-maximum|sub-menu|sub-menu-help|sub-min|sub-mini|sub-minim|sub-minimu|sub-minimum|sub-total|subscribe|subst|substi|substit|substitu|substitut|substitute|substr|substri|substrin|substring|subtype|sum|summary|super|super-proc|super-proce|super-proced|super-procedu|super-procedur|super-procedure|super-procedures|suppress-namespace-processing|suppress-w|suppress-wa|suppress-war|suppress-warn|suppress-warni|suppress-warnin|suppress-warning|suppress-warnings|suppress-warnings-list|suspend|symmetric-encryption-algorithm|symmetric-encryption-iv|symmetric-encryption-key|symmetric-support|synchronize|system-alert|system-alert-|system-alert-b|system-alert-bo|system-alert-box|system-alert-boxe|system-alert-boxes|system-dialog|system-help|system-id)(?![\\w-])",
3232
+ "match": "(?i)(?<![\\w-])(sax-comple|sax-complet|sax-complete|sax-reader|sax-running|sax-uninitialized|sax-write-begin|sax-write-complete|sax-write-content|sax-write-element|sax-write-error|sax-write-idle|sax-write-tag|sax-writer|sax-xml|schema|screen|screen-io|scroll|scroll-horizontal|scroll-left|scroll-mode|scroll-notify|scroll-right|scroll-vertical|scrollbar-drag|scrollbar-h|scrollbar-ho|scrollbar-hor|scrollbar-hori|scrollbar-horiz|scrollbar-horizo|scrollbar-horizon|scrollbar-horizont|scrollbar-horizonta|scrollbar-horizontal|scrollbar-v|scrollbar-ve|scrollbar-ver|scrollbar-vert|scrollbar-verti|scrollbar-vertic|scrollbar-vertica|scrollbar-vertical|scrolled-row-pos|scrolled-row-posi|scrolled-row-posit|scrolled-row-positi|scrolled-row-positio|scrolled-row-position|scrolling|search-self|search-target|section|security-policy|seek|select|select|select-all|select-extend|select-focused-row|select-next-row|select-on-join|select-prev-row|select-repositioned-row|select-row|selectable|selected|selected-items|selection|selection-end|selection-extend|selection-list|selection-start|selection-text|self|send|sensitive|separate-connection|separator-fgc|separator-fgco|separator-fgcol|separator-fgcolo|separator-fgcolor|separators|serializable|serialize-hidden|serialize-name|serialize-row|server|server-socket|session|set|set-attr-call-type|set-cell-focus|set-contents|set-db-logging|set-event-manager-option|set-option|set-pointer-val|set-pointer-valu|set-pointer-value|set-property|set-size|set-state|settings|share|share-|share-l|share-lo|share-loc|share-lock|shared|short|show-stat|show-stats|side-lab|side-labe|side-label|side-label-h|side-label-ha|silent|simple|single|single-character|single-run|singleton|size|size-c|size-ch|size-cha|size-char|size-chars|size-p|size-pi|size-pix|size-pixe|size-pixel|size-pixels|skip|skip-group-duplicates|skip-schema-check|slider|smallint|soap-fault|soap-header|soap-header-entryref|socket|some|sort|source|source-procedure|space|sql|start|start-box-selection|start-extend-box-selection|start-mem-check|start-move|start-resize|start-row-resize|start-search|starting|static|status|status-area-msg|stdcall|stomp-detection|stomp-frequency|stop|stop|stop-after|stop-display|stop-mem-check|stored-proc|stored-proce|stored-proced|stored-procedu|stored-procedur|stored-procedure|stream|stream-handle|stream-io|stretch-to-fit|strict|strict-entity-resolution|string-value|string-xref|sub-ave|sub-aver|sub-avera|sub-averag|sub-average|sub-count|sub-max|sub-maxi|sub-maxim|sub-maximu|sub-maximum|sub-menu|sub-menu-help|sub-min|sub-mini|sub-minim|sub-minimu|sub-minimum|sub-total|subscribe|subtype|sum|summary|super|super-proc|super-proce|super-proced|super-procedu|super-procedur|super-procedure|super-procedures|suspend|system-dialog|system-help|system-id)(?![\\w-])",
713
3233
  "name": "keyword.other.abl"
714
3234
  },
715
3235
  "keywords-t": {
716
- "match": "(?i)(?<![\\w-])(tab|tab-position|tab-stop|table|table-crc-list|table-handle|table-list|table-num|table-numb|table-numbe|table-number|table-scan|target|target-procedure|temp-dir|temp-dire|temp-direc|temp-direct|temp-directo|temp-director|temp-directory|temp-table|temp-table-prepar|temp-table-prepare|tenant|tenant-id|tenant-name|tenant-name-to-id|tenant-where|term|terminal|terminate|text|text-cursor|text-seg|text-seg-|text-seg-g|text-seg-gr|text-seg-gro|text-seg-grow|text-seg-growt|text-seg-growth|text-selected|then|this-object|this-procedure|thread-safe|three-d|through|throw|thru|tic-marks|time|time-source|timezone|title|title-bgc|title-bgco|title-bgcol|title-bgcolo|title-bgcolor|title-dc|title-dco|title-dcol|title-dcolo|title-dcolor|title-fgc|title-fgco|title-fgcol|title-fgcolo|title-fgcolor|title-fo|title-fon|title-font|to|to-rowid|today|toggle-box|tooltip|tooltips|top|top-column|top-nav-query|top-only|topic|total|trace-filter|tracing|tracking-changes|trailing|trans|trans-init-proc|trans-init-proce|trans-init-proced|trans-init-procedu|trans-init-procedur|trans-init-procedure|transact|transacti|transactio|transaction|transaction-mode|transpar|transpare|transparen|transparent|trigger|triggers|trim|true|trunc|trunca|truncat|truncate|ttcodepage|type|type-of)(?![\\w-])",
3236
+ "match": "(?i)(?<![\\w-])(tab|table|table-handle|table-scan|target|target-procedure|temp-table|tenant|tenant-where|term|terminal|terminate|text|text-cursor|text-seg|text-seg-|text-seg-g|text-seg-gr|text-seg-gro|text-seg-grow|text-seg-growt|text-seg-growth|then|this-object|this-procedure|three-d|through|throw|thru|title|to|today|toggle-box|tooltip|top|top-column|top-only|topic|total|trailing|trans|transact|transacti|transactio|transaction|transaction-mode|transpar|transpare|transparen|transparent|trigger|triggers|trim|true|trunc|trunca|truncat|truncate|ttcodepage|type-of)(?![\\w-])",
717
3237
  "name": "keyword.other.abl"
718
3238
  },
719
3239
  "keywords-u": {
720
- "match": "(?i)(?<![\\w-])(unbox|unbuff|unbuffe|unbuffer|unbuffere|unbuffered|underl|underli|underlin|underline|undo|undo-throw-scope|unform|unforma|unformat|unformatt|unformatte|unformatted|union|unique|unique-id|unique-match|unix|unix-end|unless-hidden|unload|unsigned-byte|unsigned-int64|unsigned-integer|unsigned-long|unsigned-short|unsubscribe|up|up|update|update-attribute|upper|url|url-decode|url-encode|url-password|url-userid|use|use-dic|use-dict|use-dict-|use-dict-e|use-dict-ex|use-dict-exp|use-dict-exps|use-filename|use-index|use-revvideo|use-text|use-underline|use-widget-pool|user|user-data|user-id|userid|using|utc-offset)(?![\\w-])",
3240
+ "match": "(?i)(?<![\\w-])(unbuff|unbuffe|unbuffer|unbuffere|unbuffered|underl|underli|underlin|underline|undo|unform|unforma|unformat|unformatt|unformatte|unformatted|union|unique|unix|unix-end|unless-hidden|unload|unsigned-byte|unsigned-int64|unsigned-integer|unsigned-long|unsigned-short|unsubscribe|up|up|update|upper|use|use-dic|use-dict|use-dict-|use-dict-e|use-dict-ex|use-dict-exp|use-dict-exps|use-filename|use-index|use-revvideo|use-text|use-underline|use-widget-pool|user|using|utc-offset)(?![\\w-])",
721
3241
  "name": "keyword.other.abl"
722
3242
  },
723
3243
  "keywords-v": {
724
- "match": "(?i)(?<![\\w-])(v6display|v6frame|valid-event|valid-handle|valid-object|validate|validate-domain-access-code|validate-expressio|validate-expression|validate-message|validate-seal|validate-xml|validation-enabled|value|value-changed|values|var|vari|varia|variab|variabl|variable|verb|verbo|verbos|verbose|version|vert|verti|vertic|vertica|vertical|view|view-as|view-first-column-on-reopen|virtual-height|virtual-height-c|virtual-height-ch|virtual-height-cha|virtual-height-char|virtual-height-chars|virtual-height-p|virtual-height-pi|virtual-height-pix|virtual-height-pixe|virtual-height-pixel|virtual-height-pixels|virtual-width|virtual-width-c|virtual-width-ch|virtual-width-cha|virtual-width-char|virtual-width-chars|virtual-width-p|virtual-width-pi|virtual-width-pix|virtual-width-pixe|virtual-width-pixel|virtual-width-pixels|visible|vms|void)(?![\\w-])",
3244
+ "match": "(?i)(?<![\\w-])(v6frame|validate|value-changed|values|var|vari|varia|variab|variabl|variable|verb|verbo|verbos|verbose|version|vert|verti|vertic|vertica|vertical|view|view-as|vms|void)(?![\\w-])",
725
3245
  "name": "keyword.other.abl"
726
3246
  },
727
3247
  "keywords-w": {
728
- "match": "(?i)(?<![\\w-])(wait|wait-for|warning|wc-admin-app|web-con|web-cont|web-conte|web-contex|web-context|web-notify|weekday|when|where|where-string|while|widget|widget-e|widget-en|widget-ent|widget-ente|widget-enter|widget-h|widget-ha|widget-han|widget-hand|widget-handl|widget-handle|widget-id|widget-l|widget-le|widget-lea|widget-leav|widget-leave|widget-pool|width|width-c|width-ch|width-cha|width-char|width-chars|width-p|width-pi|width-pix|width-pixe|width-pixel|width-pixels|window|window-close|window-delayed-min|window-delayed-mini|window-delayed-minim|window-delayed-minimi|window-delayed-minimiz|window-delayed-minimize|window-maxim|window-maximi|window-maximiz|window-maximize|window-maximized|window-maximized|window-minim|window-minimi|window-minimiz|window-minimize|window-minimized|window-minimized|window-name|window-normal|window-resized|window-restored|window-sta|window-stat|window-state|window-sys|window-syst|window-syste|window-system|with|word-index|word-wrap|work-area-height-p|work-area-height-pi|work-area-height-pix|work-area-height-pixe|work-area-height-pixel|work-area-height-pixels|work-area-width-p|work-area-width-pi|work-area-width-pix|work-area-width-pixe|work-area-width-pixel|work-area-width-pixels|work-area-x|work-area-y|work-tab|work-tabl|work-table|workfile|write|write-cdata|write-characters|write-comment|write-data|write-data-element|write-empty-element|write-entity-ref|write-external-dtd|write-fragment|write-json|write-message|write-processing-instruction|write-status|write-xml|write-xmlschema)(?![\\w-])",
3248
+ "match": "(?i)(?<![\\w-])(wait|wait-for|web-con|web-cont|web-conte|web-contex|web-context|web-notify|when|where|while|widget|widget-e|widget-en|widget-ent|widget-ente|widget-enter|widget-h|widget-ha|widget-han|widget-hand|widget-handl|widget-handle|widget-id|widget-pool|window|window-close|window-delayed-min|window-delayed-mini|window-delayed-minim|window-delayed-minimi|window-delayed-minimiz|window-delayed-minimize|window-maxim|window-maximi|window-maximiz|window-maximize|window-maximized|window-maximized|window-minim|window-minimi|window-minimiz|window-minimize|window-minimized|window-minimized|window-name|window-normal|window-resized|window-restored|with|word-index|work-tab|work-tabl|work-table|workfile)(?![\\w-])",
729
3249
  "name": "keyword.other.abl"
730
3250
  },
731
3251
  "keywords-x": {
732
- "match": "(?i)(?<![\\w-])(x|x-document|x-noderef|x-of|xcode|xcode-session-key|xml-data-type|xml-entity-expansion-limit|xml-node-name|xml-node-type|xml-schema-pat|xml-schema-path|xml-strict-entity-resolution|xml-suppress-namespace-processing|xor|xref|xref-xml)(?![\\w-])",
3252
+ "match": "(?i)(?<![\\w-])(x-document|x-noderef|x-of|xcode|xref|xref-xml)(?![\\w-])",
733
3253
  "name": "keyword.other.abl"
734
3254
  },
735
3255
  "keywords-y": {
736
- "match": "(?i)(?<![\\w-])(y|y-of|year|year-offset|yes|yes-no|yes-no-cancel)(?![\\w-])",
3256
+ "match": "(?i)(?<![\\w-])(yes|yes-no|yes-no-cancel)(?![\\w-])",
737
3257
  "name": "keyword.other.abl"
738
3258
  }
739
3259
  },