Skip to content

Commit ed51855

Browse files
committed
Support multi-line function declarations
1 parent 8953d73 commit ed51855

File tree

2 files changed

+171
-53
lines changed

2 files changed

+171
-53
lines changed

client/src/syntaxes/vba.tmLanguage.yaml

Lines changed: 96 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,6 @@ repository:
6565
- include: "#methodSignature"
6666
- include: "#enum"
6767
- include: "#struct"
68-
- include: "#variableDeclarations"
6968
- include: "#main"
7069

7170
continuations:
@@ -89,9 +88,8 @@ repository:
8988

9089
main:
9190
patterns:
92-
- include: "#declareFunctionSignature"
9391
- include: "#methodSignature"
94-
- include: "#variableDeclarations"
92+
- include: "#declaration"
9593
- include: "#block"
9694

9795

@@ -794,36 +792,6 @@ repository:
794792
patterns:
795793
- include: "#comments"
796794

797-
declareFunctionSignature:
798-
name: source.declare.signature.vba
799-
begin: (?i)^\s*((?:Public|Private|Friend)?\b\s*Declare)\s+(PtrSafe\s+)?(Sub|Function)\s+([a-z][a-z0-9_]*)\s+(Lib)\s+("[a-z][a-z0-9._]*")(?:\s+(Alias)\s+("[a-z][a-z0-9_]*"))?\s+\(
800-
end: '(?i)(?:\))\s+(as\s+[a-z][a-z0-9_]*)'
801-
beginCaptures:
802-
1: # Public|Private|Friend Declare
803-
name: storage.type.method.vba
804-
2: # PtrSafe
805-
name: storage.type.method.vba
806-
3: # Sub|Function
807-
name: storage.type.method.vba
808-
4: # Name
809-
name: entity.name.function.vba
810-
5: # Lib
811-
name: storage.type.method.vba
812-
6: # Lib name
813-
patterns:
814-
- include: "#literals"
815-
7: # Alias
816-
name: storage.type.method.vba
817-
8: # Alias name
818-
patterns:
819-
- include: "#literals"
820-
endCaptures:
821-
1: # return type
822-
patterns:
823-
- include: "#types"
824-
patterns:
825-
- include: "#argumentsSignature"
826-
827795
methodSignature:
828796
name: source.method.signature.vba
829797
begin: (?i)^\s*((?:Public|Private)?\b\s*(?:(?:Sub|Function)|Property\s+(?:Let|Get|Set)))\s+([a-z][a-z0-9_]*)\s*(\()
@@ -884,7 +852,7 @@ repository:
884852
block:
885853
patterns:
886854
- include: "#testing"
887-
- include: "#variableDeclarations"
855+
- include: "#declaration"
888856
- include: "#valueAssignment"
889857
- include: "#methodAttribute"
890858
- include: "#methodClose"
@@ -905,23 +873,25 @@ repository:
905873
name: punctuation.separator.vba
906874
match: ','
907875

908-
variableDeclarations:
876+
declaration:
909877
patterns:
910878
- include: "#variableDeclarationVisbility"
911879
- include: "#variableDeclarationDim"
912880
- include: "#variableDeclarationConst"
881+
- include: "#methodDeclarationDeclare"
913882
repository:
914883
variableDeclarationVisbility:
915884
name: meta.declare.$1.vba
916885
begin: (?i)(global|public|private)
917886
end: (?=[':\n])
918887
beginCaptures:
919888
0:
920-
name: storage.modifier.declare-variable.vba
889+
name: storage.modifier.visibility.vba
921890
patterns:
922891
- include: "#separator"
923892
- include: "#lineContinuation"
924893
- include: "#variableDeclarationConst"
894+
- include: "#methodDeclarationDeclare"
925895
- include: "#variableDeclarationVarName"
926896

927897
variableDeclarationDim:
@@ -930,7 +900,7 @@ repository:
930900
end: (?=[':\n])
931901
beginCaptures:
932902
0:
933-
name: storage.modifier.declare-variable.vba
903+
name: storage.modifier.declare.vba
934904
patterns:
935905
- include: "#separator"
936906
- include: "#lineContinuation"
@@ -942,13 +912,12 @@ repository:
942912
end: (?=[':\n])
943913
beginCaptures:
944914
0:
945-
name: storage.modifier.declare-variable.vba
915+
name: storage.modifier.declare.vba
946916
patterns:
947917
- include: "#separator"
948918
- include: "#lineContinuation"
949919
- include: "#variableDeclarationConstName"
950920

951-
952921
variableDeclarationVarName:
953922
begin: (?i)[a-z][a-z0-9_]*
954923
end: (?=[':\n,])
@@ -1003,6 +972,94 @@ repository:
1003972
- include: "#lineContinuation"
1004973
- include: "#argumentSignatureFromTypeName"
1005974

975+
methodDeclarationDeclare:
976+
name: meta.declare.function.vba
977+
begin: (?i)declare
978+
end: (?=[':\n])
979+
beginCaptures:
980+
0:
981+
name: storage.modifier.declare.vba
982+
patterns:
983+
- include: "#lineContinuation"
984+
- include: "#methodDeclarationPtrsafe"
985+
- include: "#methodDeclarationMethod"
986+
- include: "#argumentSignatureFromTypeAs"
987+
988+
methodDeclarationPtrsafe:
989+
begin: (?i)ptrsafe
990+
end: (?=[)':\n])
991+
beginCaptures:
992+
0:
993+
name: storage.modifier.declare.vba
994+
patterns:
995+
- include: "#lineContinuation"
996+
- include: "#methodDeclarationMethod"
997+
998+
methodDeclarationMethod:
999+
begin: (?i)sub|function
1000+
end: (?=[)':\n])
1001+
beginCaptures:
1002+
0:
1003+
name: storage.type.$0.vba
1004+
patterns:
1005+
- include: "#lineContinuation"
1006+
- include: "#methodDeclarationIdentifier"
1007+
1008+
methodDeclarationIdentifier:
1009+
begin: (?i)[a-z][a-z0-9_]*
1010+
end: (?=[)':\n])
1011+
beginCaptures:
1012+
0:
1013+
name: entity.name.function.vba
1014+
patterns:
1015+
- include: "#lineContinuation"
1016+
- include: "#methodDeclarationLib"
1017+
1018+
methodDeclarationLib:
1019+
begin: (?i)lib
1020+
end: (?=[)':\n])
1021+
beginCaptures:
1022+
0:
1023+
name: storage.type.dll.vba
1024+
patterns:
1025+
- include: "#lineContinuation"
1026+
- include: "#methodDeclarationLibIdentifier"
1027+
1028+
methodDeclarationLibIdentifier:
1029+
begin: (?i)"[a-z][a-z0-9._]*"(\s+\()?
1030+
end: (?=[)':\n])
1031+
beginCaptures:
1032+
0:
1033+
patterns:
1034+
- include: "#literals"
1035+
patterns:
1036+
- include: "#separator"
1037+
- include: "#lineContinuation"
1038+
- include: "#methodDeclarationAlias"
1039+
- include: "#argumentsSignature"
1040+
1041+
methodDeclarationAlias:
1042+
begin: (?i)alias
1043+
end: (?=[)':\n])
1044+
beginCaptures:
1045+
0:
1046+
name: storage.type.dll.vba
1047+
patterns:
1048+
- include: "#lineContinuation"
1049+
- include: "#methodDeclarationAliasIdentifier"
1050+
1051+
methodDeclarationAliasIdentifier:
1052+
begin: (?i)"[a-z][a-z0-9._]*"
1053+
end: (?=[)':\n])
1054+
beginCaptures:
1055+
0:
1056+
patterns:
1057+
- include: "#literals"
1058+
patterns:
1059+
- include: "#separator"
1060+
- include: "#lineContinuation"
1061+
- include: "#argumentsSignature"
1062+
10061063
valueAssignment:
10071064
name: meta.variable-assignment.vba
10081065
begin: (?i)(?:(Let|Set)\s+)?((?:[a-z][a-z0-9_]*)?(?:\.(?:(?:[a-z][a-z0-9_]*)?\.)*)?(?:[a-z][a-z0-9_]*)?)(\s*=\s*)

0 commit comments

Comments
 (0)