Skip to content

Commit 133e606

Browse files
committed
Implement syntax highlighting for unicode identifiers in VBA
1 parent 2633e97 commit 133e606

File tree

4 files changed

+152
-76
lines changed

4 files changed

+152
-76
lines changed

client/syntaxes/vba.tmLanguage.json

Lines changed: 47 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,15 @@
2929
"name": "keyword.control.line-continuation.vba",
3030
"match": "(?<=\\s)_\\s*\\n"
3131
},
32+
"identifierFirstChar": {
33+
"match": "[A-Za-z\\u00C0-\\u00D6\\u00D8-\\u017F]"
34+
},
35+
"identifierChar": {
36+
"match": "[A-Za-z0-9_\\u00C0-\\u00D6\\u00D8-\\u017F]"
37+
},
38+
"identifier": {
39+
"match": "[A-Za-z\\u00C0-\\u00D6\\u00D8-\\u017F][A-Za-z0-9_\\u00C0-\\u00D6\\u00D8-\\u017F]*"
40+
},
3241
"main": {
3342
"patterns": [
3443
{
@@ -530,14 +539,14 @@
530539
"include": "#literals"
531540
},
532541
{
533-
"match": "(?i)([a-z][a-z0-9_]*)",
542+
"match": "(?i)([A-Za-z\\u00C0-\\u00D6\\u00D8-\\u017F][A-Za-z0-9_\\u00C0-\\u00D6\\u00D8-\\u017F]*)",
534543
"name": "variable.other.constant.label.vba"
535544
}
536545
]
537546
},
538547
"goToGoSubReturnStatement": {
539548
"name": "meta.goToGoSubReturnStatement.vba",
540-
"match": "(?i)\\b(gosub|return|goto)(?:\\s+([a-z][a-z0-9_]*|\\d+))?\\b",
549+
"match": "(?i)\\b(gosub|return|goto)(?:\\s+([A-Za-z\\u00C0-\\u00D6\\u00D8-\\u017F][A-Za-z0-9_\\u00C0-\\u00D6\\u00D8-\\u017F]*|\\d+))?\\b",
541550
"captures": {
542551
"1": {
543552
"name": "keyword.control.jump.vba"
@@ -611,7 +620,7 @@
611620
"match": "(?i)^(#if|#then|#elseif|#else)\\b"
612621
},
613622
"directiveConst": {
614-
"match": "(?i)^\\s*(#const)\\s+([a-z][a-z0-9_]*)(\\s+=.*)",
623+
"match": "(?i)^\\s*(#const)\\s+([A-Za-zÀ-ÖØ-ſ][A-Za-z0-9_À-ÖØ-ſ]*)(\\s+=.*)",
615624
"captures": {
616625
"1": {
617626
"name": "constant.language.vba"
@@ -965,7 +974,7 @@
965974
"forLoop": {
966975
"name": "meta.flow.for-loop.vba",
967976
"begin": "(?i)\\bfor\\s+(?=[^'\\n])",
968-
"end": "(?i)(next)(\\s+[a-z]\\w*)?",
977+
"end": "(?i)(next)(\\s+[A-Za-z\\u00C0-\\u00D6\\u00D8-\\u017F]\\w*)?",
969978
"beginCaptures": {
970979
"0": {
971980
"name": "keyword.control.flow.loop.vba"
@@ -998,7 +1007,7 @@
9981007
"forLoopEach": {
9991008
"name": "meta.for-each-loop.vba",
10001009
"begin": "(?i)each\\s+(?=[^'\\n])",
1001-
"end": "(?i)(?=(next)(['\\n]|\\s+[a-z][a-z_0-9]*|\\s+_))",
1010+
"end": "(?i)(?=(next)(['\\n]|\\s+[A-Za-z\\u00C0-\\u00D6\\u00D8-\\u017F][A-Za-z0-9_\\u00C0-\\u00D6\\u00D8-\\u017F]*|\\s+_))",
10021011
"beginCaptures": {
10031012
"0": {
10041013
"name": "keyword.control.flow.loop.vba"
@@ -1016,7 +1025,7 @@
10161025
"forLoopEachVar": {
10171026
"name": "meta.forLoopEachVar.vba",
10181027
"begin": "(?i)[\\w]*",
1019-
"end": "(?i)(?=(next)(['\\n]|\\s+[a-z][a-z_0-9]*|\\s+_))",
1028+
"end": "(?i)(?=(next)(['\\n]|\\s+[A-Za-z\\u00C0-\\u00D6\\u00D8-\\u017F][A-Za-z0-9_\\u00C0-\\u00D6\\u00D8-\\u017F]*|\\s+_))",
10201029
"beginCaptures": {
10211030
"0": {
10221031
"patterns": [
@@ -1041,7 +1050,7 @@
10411050
"forLoopEachIn": {
10421051
"name": "meta.forLoopEachIn.vba",
10431052
"begin": "(?i)in\\s+",
1044-
"end": "(?i)(?=(next)(['\\n]|\\s+[a-z][a-z_0-9]*|\\s+_))",
1053+
"end": "(?i)(?=(next)(['\\n]|\\s+[A-Za-z\\u00C0-\\u00D6\\u00D8-\\u017F][A-Za-z0-9_\\u00C0-\\u00D6\\u00D8-\\u017F]*|\\s+_))",
10451054
"beginCaptures": {
10461055
"0": {
10471056
"name": "keyword.control.flow.loop.vba"
@@ -1059,7 +1068,7 @@
10591068
"forLoopEachSet": {
10601069
"name": "meta.forLoopEachSet.vba",
10611070
"begin": "(?i)[.\\w()]*",
1062-
"end": "(?i)(?=(next)(['\\n]|\\s+[a-z][a-z_0-9]*|\\s+_))",
1071+
"end": "(?i)(?=(next)(['\\n]|\\s+[A-Za-z\\u00C0-\\u00D6\\u00D8-\\u017F][A-Za-z0-9_\\u00C0-\\u00D6\\u00D8-\\u017F]*|\\s+_))",
10631072
"beginCaptures": {
10641073
"0": {
10651074
"patterns": [
@@ -1080,8 +1089,8 @@
10801089
},
10811090
"forLoopIter": {
10821091
"name": "meta.for-iterator-loop.vba",
1083-
"begin": "(?i)[a-z][\\w]*",
1084-
"end": "(?i)(?=(next)(['\\n]|\\s+[a-z][a-z_0-9]*|\\s+_))",
1092+
"begin": "(?i)[A-Za-z\\u00C0-\\u00D6\\u00D8-\\u017F][\\w]*",
1093+
"end": "(?i)(?=(next)(['\\n]|\\s+[A-Za-z\\u00C0-\\u00D6\\u00D8-\\u017F][A-Za-z0-9_\\u00C0-\\u00D6\\u00D8-\\u017F]*|\\s+_))",
10851094
"beginCaptures": {
10861095
"0": {
10871096
"patterns": [
@@ -1103,7 +1112,7 @@
11031112
"forLoopIterAssignment": {
11041113
"name": "meta.forLoopIterAssignment.vba",
11051114
"begin": "=",
1106-
"end": "(?i)(?=(next)(['\\n]|\\s+[a-z][a-z_0-9]*|\\s+_))",
1115+
"end": "(?i)(?=(next)(['\\n]|\\s+[A-Za-z\\u00C0-\\u00D6\\u00D8-\\u017F][A-Za-z0-9_\\u00C0-\\u00D6\\u00D8-\\u017F]*|\\s+_))",
11071116
"beginCaptures": {
11081117
"0": {
11091118
"name": "keyword.operator.assignment.vba"
@@ -1121,7 +1130,7 @@
11211130
"forLoopIterAssignRangeFrom": {
11221131
"name": "meta.forLoopIterAssignRangeFrom.vba",
11231132
"begin": "(?i)[-.\\w()]+",
1124-
"end": "(?i)(?=(next)(['\\n]|\\s+[a-z][a-z_0-9]*|\\s+_))",
1133+
"end": "(?i)(?=(next)(['\\n]|\\s+[A-Za-z\\u00C0-\\u00D6\\u00D8-\\u017F][A-Za-z0-9_\\u00C0-\\u00D6\\u00D8-\\u017F]*|\\s+_))",
11251134
"beginCaptures": {
11261135
"0": {
11271136
"patterns": [
@@ -1149,7 +1158,7 @@
11491158
"forLoopIterAssignTo": {
11501159
"name": "meta.forLoopIterAssignTo.vba",
11511160
"begin": "(?i)to",
1152-
"end": "(?i)(?=(next)(['\\n]|\\s+[a-z][a-z_0-9]*|\\s+_))",
1161+
"end": "(?i)(?=(next)(['\\n]|\\s+[A-Za-z\\u00C0-\\u00D6\\u00D8-\\u017F][A-Za-z0-9_\\u00C0-\\u00D6\\u00D8-\\u017F]*|\\s+_))",
11531162
"beginCaptures": {
11541163
"0": {
11551164
"name": "keyword.control.flow.loop.vba"
@@ -1167,7 +1176,7 @@
11671176
"forLoopIterAssignRangeTo": {
11681177
"name": "meta.forLoopIterAssignRangeTo.vba",
11691178
"begin": "(?i)[-.\\w()]+",
1170-
"end": "(?i)(?=(next)(['\\n]|\\s+[a-z][a-z_0-9]*|\\s+_))",
1179+
"end": "(?i)(?=(next)(['\\n]|\\s+[A-Za-z\\u00C0-\\u00D6\\u00D8-\\u017F][A-Za-z0-9_\\u00C0-\\u00D6\\u00D8-\\u017F]*|\\s+_))",
11711180
"beginCaptures": {
11721181
"0": {
11731182
"patterns": [
@@ -1198,7 +1207,7 @@
11981207
"forLoopIterRangeStep": {
11991208
"name": "meta.forLoopIterRangeStep.vba",
12001209
"begin": "(?i)step",
1201-
"end": "(?i)(?=(next)(['\\n]|\\s+[a-z][a-z_0-9]*|\\s+_))",
1210+
"end": "(?i)(?=(next)(['\\n]|\\s+[A-Za-z\\u00C0-\\u00D6\\u00D8-\\u017F][A-Za-z0-9_\\u00C0-\\u00D6\\u00D8-\\u017F]*|\\s+_))",
12021211
"beginCaptures": {
12031212
"0": {
12041213
"name": "keyword.control.flow.loop.vba"
@@ -1216,7 +1225,7 @@
12161225
"forLoopIterRangeStepAmount": {
12171226
"name": "meta.forLoopIterRangeStepAmount.vba",
12181227
"begin": "(?i)[-.\\w()]+",
1219-
"end": "(?i)(?=(next)(['\\n]|\\s+[a-z][a-z_0-9]*|\\s+_))",
1228+
"end": "(?i)(?=(next)(['\\n]|\\s+[A-Za-z\\u00C0-\\u00D6\\u00D8-\\u017F][A-Za-z0-9_\\u00C0-\\u00D6\\u00D8-\\u017F]*|\\s+_))",
12201229
"beginCaptures": {
12211230
"0": {
12221231
"patterns": [
@@ -1253,7 +1262,7 @@
12531262
]
12541263
},
12551264
"labels": {
1256-
"match": "(?i)^(\\s*[a-z][a-z0-9_]*|\\d+):",
1265+
"match": "(?i)^(\\s*[A-Za-z\\u00C0-\\u00D6\\u00D8-\\u017F][A-Za-z0-9_\\u00C0-\\u00D6\\u00D8-\\u017F]*|\\d+):",
12571266
"captures": {
12581267
"1": {
12591268
"name": "variable.other.constant.label.vba"
@@ -1316,7 +1325,7 @@
13161325
},
13171326
"AsTypeObject": {
13181327
"name": "support.type.object.$1.vba",
1319-
"match": "(?i)([a-z][a-z0-9._]*)"
1328+
"match": "(?i)([A-Za-z\\u00C0-\\u00D6\\u00D8-\\u017F][A-Za-z0-9._\\u00C0-\\u00D6\\u00D8-\\u017F]*)"
13201329
},
13211330
"argumentsSignature": {
13221331
"name": "meta.arguments.signature.vba",
@@ -1402,7 +1411,7 @@
14021411
},
14031412
"argumentSignatureFromParam": {
14041413
"name": "meta.argument-signature.param.vba",
1405-
"begin": "(?i)[a-z][a-z0-9_]*(\\(\\))?",
1414+
"begin": "(?i)[A-Za-z\\u00C0-\\u00D6\\u00D8-\\u017F][A-Za-z0-9_\\u00C0-\\u00D6\\u00D8-\\u017F]*(\\(\\))?",
14061415
"end": "(?=[,):'\\n])",
14071416
"beginCaptures": {
14081417
"0": {
@@ -1442,7 +1451,7 @@
14421451
},
14431452
"argumentSignatureFromTypeName": {
14441453
"name": "meta.argument-signature.type.vba",
1445-
"begin": "(?i)([a-z][a-z0-9._]*)",
1454+
"begin": "(?i)([A-Za-z\\u00C0-\\u00D6\\u00D8-\\u017F][A-Za-z0-9._\\u00C0-\\u00D6\\u00D8-\\u017F]*)",
14461455
"end": "(?=[,):'\\n])",
14471456
"beginCaptures": {
14481457
"0": {
@@ -1487,7 +1496,7 @@
14871496
},
14881497
"argumentName": {
14891498
"name": "meta.arg-name.vba",
1490-
"match": "(?i)([a-z][a-z0-9_]*)?(:=)",
1499+
"match": "(?i)([A-Za-z\\u00C0-\\u00D6\\u00D8-\\u017F][A-Za-z0-9_\\u00C0-\\u00D6\\u00D8-\\u017F]*)?(:=)",
14911500
"captures": {
14921501
"1": {
14931502
"name": "variable.parameter.name.vba"
@@ -1624,7 +1633,7 @@
16241633
},
16251634
"enum": {
16261635
"name": "meta.enum.declaration.vba",
1627-
"begin": "(?i)^\\s*((?:(?:Public|Private)\\s+)?\\s*Enum)\\s+([a-z][a-z0-9_]+)(\\s+(?:'|Rem).*)?",
1636+
"begin": "(?i)^\\s*((?:(?:Public|Private)\\s+)?\\s*Enum)\\s+([A-Za-z\\u00C0-\\u00D6\\u00D8-\\u017F][A-Za-z0-9_\\u00C0-\\u00D6\\u00D8-\\u017F]+)(\\s+(?:'|Rem).*)?",
16281637
"beginCaptures": {
16291638
"1": {
16301639
"name": "storage.type.enum.vba"
@@ -1663,7 +1672,7 @@
16631672
}
16641673
},
16651674
"enumMember": {
1666-
"match": "(?i)^\\s*([a-z][a-z0-9_]*)(?:\\s*(=)\\s*([^\\n']*))?(\\s*(?:'|Rem).*)?",
1675+
"match": "(?i)^\\s*([A-Za-z\\u00C0-\\u00D6\\u00D8-\\u017F][A-Za-z0-9_\\u00C0-\\u00D6\\u00D8-\\u017F]*)(?:\\s*(=)\\s*([^\\n']*))?(\\s*(?:'|Rem).*)?",
16671676
"captures": {
16681677
"1": {
16691678
"name": "variable.other.enummember.vba"
@@ -1689,7 +1698,7 @@
16891698
},
16901699
"struct": {
16911700
"name": "meta.struct.declaration.vba",
1692-
"begin": "(?i)^\\s*((?:(?:Public|Private)\\s+)?Type)\\s+([a-z][a-z0-9_]*)?(\\s+(?:'|Rem).*)?",
1701+
"begin": "(?i)^\\s*((?:(?:Public|Private)\\s+)?Type)\\s+([A-Za-z\\u00C0-\\u00D6\\u00D8-\\u017F][A-Za-z0-9_\\u00C0-\\u00D6\\u00D8-\\u017F]*)?(\\s+(?:'|Rem).*)?",
16931702
"beginCaptures": {
16941703
"1": {
16951704
"name": "storage.type.struct.vba"
@@ -1728,7 +1737,7 @@
17281737
}
17291738
},
17301739
"structProperty": {
1731-
"match": "(?i)^\\s*([a-z][a-z0-9_]*)(\\(.*\\))?(\\s+As\\s+[a-z][a-z0-9_]*)?(\\s+(?:'|Rem).*)?",
1740+
"match": "(?i)^\\s*([A-Za-z\\u00C0-\\u00D6\\u00D8-\\u017F][A-Za-z0-9_\\u00C0-\\u00D6\\u00D8-\\u017F]*)(\\(.*\\))?(\\s+As\\s+[A-Za-z\\u00C0-\\u00D6\\u00D8-\\u017F][A-Za-z0-9_\\u00C0-\\u00D6\\u00D8-\\u017F]*)?(\\s+(?:'|Rem).*)?",
17321741
"captures": {
17331742
"1": {
17341743
"name": "variable.other.readwrite.vba"
@@ -1758,8 +1767,8 @@
17581767
},
17591768
"methodSignature": {
17601769
"name": "source.method.signature.vba",
1761-
"begin": "(?i)^\\s*((?:Public|Private)?\\b\\s*(?:(?:Sub|Function)|Property\\s+(?:Let|Get|Set)))\\s+([a-z][a-z0-9_]*)\\s*(\\()",
1762-
"end": "(?i)(?<=\\))(\\s+as\\s+[a-z][a-z0-9_]*)?",
1770+
"begin": "(?i)^\\s*((?:Public|Private)?\\b\\s*(?:(?:Sub|Function)|Property\\s+(?:Let|Get|Set)))\\s+([A-Za-z\\u00C0-\\u00D6\\u00D8-\\u017F][A-Za-z0-9_\\u00C0-\\u00D6\\u00D8-\\u017F]*)\\s*(\\()",
1771+
"end": "(?i)(?<=\\))(\\s+as\\s+[A-Za-z\\u00C0-\\u00D6\\u00D8-\\u017F][A-Za-z0-9_\\u00C0-\\u00D6\\u00D8-\\u017F]*)?",
17631772
"beginCaptures": {
17641773
"1": {
17651774
"name": "storage.type.method.vba"
@@ -1788,7 +1797,7 @@
17881797
},
17891798
"methodAttribute": {
17901799
"name": "source.method.attribute.vba",
1791-
"match": "(?i)^\\s*(Attribute)\\s+([a-z][a-z0-9_]*)(\\.VB_(?:Description|UserMemId))\\s+(=)\\s+(.*)",
1800+
"match": "(?i)^\\s*(Attribute)\\s+([A-Za-z\\u00C0-\\u00D6\\u00D8-\\u017F][A-Za-z0-9_\\u00C0-\\u00D6\\u00D8-\\u017F]*)(\\.VB_(?:Description|UserMemId))\\s+(=)\\s+(.*)",
17921801
"captures": {
17931802
"1": {
17941803
"name": "keyword.attribute.vba"
@@ -1961,7 +1970,7 @@
19611970
]
19621971
},
19631972
"variableDeclarationVarName": {
1964-
"begin": "(?i)[a-z][a-z0-9_]*",
1973+
"begin": "(?i)[A-Za-z\\u00C0-\\u00D6\\u00D8-\\u017F][A-Za-z0-9_\\u00C0-\\u00D6\\u00D8-\\u017F]*",
19651974
"end": "(?=[':\\n,])",
19661975
"beginCaptures": {
19671976
"0": {
@@ -1998,7 +2007,7 @@
19982007
]
19992008
},
20002009
"variableDeclarationConstName": {
2001-
"begin": "(?i)[a-z][a-z0-9_]*",
2010+
"begin": "(?i)[A-Za-z\\u00C0-\\u00D6\\u00D8-\\u017F][A-Za-z0-9_\\u00C0-\\u00D6\\u00D8-\\u017F]*",
20022011
"end": "(?=[':\\n,])",
20032012
"beginCaptures": {
20042013
"0": {
@@ -2125,7 +2134,7 @@
21252134
]
21262135
},
21272136
"methodDeclarationIdentifier": {
2128-
"begin": "(?i)[a-z][a-z0-9_]*",
2137+
"begin": "(?i)[A-Za-z\\u00C0-\\u00D6\\u00D8-\\u017F][A-Za-z0-9_\\u00C0-\\u00D6\\u00D8-\\u017F]*",
21292138
"end": "(?=[)':\\n])",
21302139
"beginCaptures": {
21312140
"0": {
@@ -2230,7 +2239,7 @@
22302239
},
22312240
"valueAssignment": {
22322241
"name": "meta.variable-assignment.vba",
2233-
"begin": "(?i)(?:(Let|Set)\\s+)?((?:[a-z][a-z0-9_]*)?(?:[.!](?:(?:[a-z][a-z0-9_]*)?[.!])*)?(?:[a-z][a-z0-9_]*)?)(\\s*=\\s*)",
2242+
"begin": "(?i)(?:(Let|Set)\\s+)?((?:[A-Za-z\\u00C0-\\u00D6\\u00D8-\\u017F][A-Za-z0-9_\\u00C0-\\u00D6\\u00D8-\\u017F]*)?(?:[.!](?:(?:[A-Za-z\\u00C0-\\u00D6\\u00D8-\\u017F][A-Za-z0-9_\\u00C0-\\u00D6\\u00D8-\\u017F]*)?[.!])*)?(?:[A-Za-z\\u00C0-\\u00D6\\u00D8-\\u017F][A-Za-z0-9_\\u00C0-\\u00D6\\u00D8-\\u017F]*)?)(\\s*=\\s*)",
22342243
"end": "(?=[',:)\\n])",
22352244
"beginCaptures": {
22362245
"1": {
@@ -2270,7 +2279,7 @@
22702279
"match": "(?i)\\."
22712280
},
22722281
"propertyChain": {
2273-
"match": "(?i)([.!])([a-z][a-z0-9_]*)*",
2282+
"match": "(?i)([.!])([A-Za-z\\u00C0-\\u00D6\\u00D8-\\u017F][A-Za-z0-9_\\u00C0-\\u00D6\\u00D8-\\u017F]*)*",
22742283
"captures": {
22752284
"1": {
22762285
"patterns": [
@@ -2286,7 +2295,7 @@
22862295
},
22872296
"variable": {
22882297
"name": "meta.variable-or-property.vba",
2289-
"match": "(?i)(?:(?:(\\bMe\\b|[.!])|([a-z][a-z0-9_]*)))((?:[.!](?:[a-z][a-z0-9_]*))+)?",
2298+
"match": "(?i)(?:(?:(\\bMe\\b|[.!])|([A-Za-z\\u00C0-\\u00D6\\u00D8-\\u017F][A-Za-z0-9_\\u00C0-\\u00D6\\u00D8-\\u017F]*)))((?:[.!](?:[A-Za-z\\u00C0-\\u00D6\\u00D8-\\u017F][A-Za-z0-9_\\u00C0-\\u00D6\\u00D8-\\u017F]*))+)?",
22902299
"captures": {
22912300
"1": {
22922301
"patterns": [
@@ -2306,7 +2315,7 @@
23062315
},
23072316
{
23082317
"name": "variable.other.readwrite.vba",
2309-
"match": "(?i)([a-z][a-z0-9_]*)"
2318+
"match": "(?i)([A-Za-z\\u00C0-\\u00D6\\u00D8-\\u017F][A-Za-z0-9_\\u00C0-\\u00D6\\u00D8-\\u017F]*)"
23102319
}
23112320
]
23122321
},
@@ -2321,7 +2330,7 @@
23212330
},
23222331
"functionCall": {
23232332
"name": "meta.function.call.vba",
2324-
"begin": "(?i)(?:([a-z][a-z0-9_]*)(?=\\.))?(\\.(?:(?:[a-z][a-z0-9_]*)?\\.)*)?([a-z][a-z0-9_]*)([&%#!@$^])?(?=\\()",
2333+
"begin": "(?i)(?:([A-Za-z\\u00C0-\\u00D6\\u00D8-\\u017F][A-Za-z0-9_\\u00C0-\\u00D6\\u00D8-\\u017F]*)(?=\\.))?(\\.(?:(?:[A-Za-z\\u00C0-\\u00D6\\u00D8-\\u017F][A-Za-z0-9_\\u00C0-\\u00D6\\u00D8-\\u017F]*)?\\.)*)?([A-Za-z\\u00C0-\\u00D6\\u00D8-\\u017F][A-Za-z0-9_\\u00C0-\\u00D6\\u00D8-\\u017F]*)([&%#!@$^])?(?=\\()",
23252334
"end": "(\\)|(?='))",
23262335
"beginCaptures": {
23272336
"1": {
@@ -2356,7 +2365,7 @@
23562365
},
23572366
"subCall": {
23582367
"name": "meta.sub-call.vba",
2359-
"begin": "(?i)(?:([a-z][a-z0-9_]*)(?=\\.))?(\\.(?:(?:[a-z][a-z0-9_]*)?\\.)*)?([a-z][a-z0-9_]*)\\s*(?=\\s[^,'\\n])",
2368+
"begin": "(?i)(?:([A-Za-z\\u00C0-\\u00D6\\u00D8-\\u017F][A-Za-z0-9_\\u00C0-\\u00D6\\u00D8-\\u017F]*)(?=\\.))?(\\.(?:(?:[A-Za-z\\u00C0-\\u00D6\\u00D8-\\u017F][A-Za-z0-9_\\u00C0-\\u00D6\\u00D8-\\u017F]*)?\\.)*)?([A-Za-z\\u00C0-\\u00D6\\u00D8-\\u017F][A-Za-z0-9_\\u00C0-\\u00D6\\u00D8-\\u017F]*)\\s*(?=\\s[^,'\\n])",
23602369
"end": "(?=[:'\\n])",
23612370
"beginCaptures": {
23622371
"1": {
@@ -2385,7 +2394,7 @@
23852394
},
23862395
"subCallNoArgs": {
23872396
"name": "meta.sub-call.vba",
2388-
"match": "(?i)(?:([a-z][a-z0-9_]*)(?=\\.))?(\\.(?:(?:[a-z][a-z0-9_]*)?\\.)*)?([a-z][a-z0-9_]*)",
2397+
"match": "(?i)(?:([A-Za-z\\u00C0-\\u00D6\\u00D8-\\u017F][A-Za-z0-9_\\u00C0-\\u00D6\\u00D8-\\u017F]*)(?=\\.))?(\\.(?:(?:[A-Za-z\\u00C0-\\u00D6\\u00D8-\\u017F][A-Za-z0-9_\\u00C0-\\u00D6\\u00D8-\\u017F]*)?\\.)*)?([A-Za-z\\u00C0-\\u00D6\\u00D8-\\u017F][A-Za-z0-9_\\u00C0-\\u00D6\\u00D8-\\u017F]*)",
23892398
"captures": {
23902399
"1": {
23912400
"patterns": [

0 commit comments

Comments
 (0)