Skip to content

Commit 9d7aba9

Browse files
committed
Arguments now support parameter names
1 parent b6ef4cb commit 9d7aba9

File tree

2 files changed

+85
-3
lines changed

2 files changed

+85
-3
lines changed

client/src/syntaxes/vba.tmLanguage.yaml

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -622,10 +622,18 @@ repository:
622622
end: (?=[:)'\n])
623623
patterns:
624624
- include: "#lineContinuation"
625-
- include: "#functionCall"
626625
- include: "#separator"
627626
- include: "#expression"
628627

628+
argumentName:
629+
name: meta.arg-name.vba
630+
match: (?i)([a-z][a-z0-9_]*)?(:=)
631+
captures:
632+
1:
633+
name: variable.parameter.name.vba
634+
2:
635+
name: punctuation.assignment.parameter.vba
636+
629637
comments:
630638
patterns:
631639
- include: "#blockComments"
@@ -854,7 +862,7 @@ repository:
854862
match: (?i)End\s+(Sub|Function|Property)
855863

856864
expressionList:
857-
begin: (?=.)
865+
begin:
858866
end: (?=\n|\sThen|\)|'|:)
859867
patterns:
860868
- include: "#separator"
@@ -863,10 +871,11 @@ repository:
863871
expression:
864872
# Begins and ends without consuming anything.
865873
name: meta.expression.vba
866-
begin: (?!=\n|\sThen|\)|'|,|:)
874+
begin: (?!=\n|\sThen|\)|'|,|:|\s)
867875
end: (?=\n|\sThen|\)|'|,|:)
868876
patterns:
869877
- include: "#literals"
878+
- include: "#argumentName"
870879
- include: "#operators"
871880
- include: "#functionCall"
872881
- include: "#variable"

test/textmate/unit/arguments.vba

Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,73 @@
1+
' SYNTAX TEST "source.vba" "arguments"
2+
3+
Sub Foo()
4+
' Basic implicit sub call
5+
BarSub x, 10, True = False
6+
' ^^^^^^^^^^^^^^^^^^^ meta.arguments.vba
7+
' ^ ^ punctuation.separator.vba
8+
' ^^^^^^^^^^^^ meta.expression.vba
9+
10+
' Basic explicit sub call
11+
Call BarSub(x, 10, True = False)
12+
' ^^^^^^^^^^^^^^^^^^^ meta.arguments.vba
13+
' ^ ^ punctuation.separator.vba
14+
' ^^^^^^^^^^^^ meta.expression.vba
15+
16+
' Basic function call
17+
result = BarFunc(x, 10, True = False)
18+
' ^^^^^^^^^^^^^^^^^^^ meta.arguments.vba
19+
' ^ ^ punctuation.separator.vba
20+
' ^^^^^^^^^^^^ meta.expression.vba
21+
22+
' Named args sub call
23+
BarSub x, 10, NamedArgument:=True = False
24+
' ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.arguments.vba
25+
' ^ ^ punctuation.separator.vba
26+
' ^^^^^^^^^^^^ meta.expression.vba
27+
' ^^^^^^^^^^^^^ meta.arg-name.vba variable.parameter.name.vba
28+
' ^^ meta.arg-name.vba punctuation.assignment.parameter.vba
29+
30+
' Named function sub call
31+
result = BarFunc(x, 10, NamedArgument:=True = False)
32+
' ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.arguments.vba
33+
' ^ ^ punctuation.separator.vba
34+
' ^^^^^^^^^^^^ meta.expression.vba
35+
' ^^^^^^^^^^^^^ meta.arg-name.vba variable.parameter.name.vba
36+
' ^^ meta.arg-name.vba punctuation.assignment.parameter.vba
37+
38+
39+
' Sub call multi-line
40+
BarSub _
41+
' ^ meta.arguments.vba keyword.control.line-continuation.vba
42+
validationResult, _
43+
' ^^^^^^^^^^^^^^^^^^^ meta.arguments.vba
44+
' ^ punctuation.separator.vba
45+
' ^ keyword.control.line-continuation.vba
46+
validationResult + 10, _
47+
' ^^^^^^^^^^^^^^^^^^^^^^^^ meta.arguments.vba
48+
' ^^^^^^^^^^^^^^^^^^^^^ meta.expression.vba
49+
' ^ punctuation.separator.vba
50+
' ^ keyword.control.line-continuation.vba
51+
NamedArgument:=validationResult
52+
' ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.arguments.vba
53+
' ^^^^^^^^^^^^^ variable.parameter.name.vba
54+
' ^^ punctuation.assignment.parameter.vba
55+
56+
' Function call multi-line
57+
result = BarSub( _
58+
' ^ meta.arguments.vba keyword.control.line-continuation.vba
59+
validationResult, _
60+
' ^^^^^^^^^^^^^^^^^^^ meta.arguments.vba
61+
' ^ punctuation.separator.vba
62+
' ^ keyword.control.line-continuation.vba
63+
validationResult + 10, _
64+
' ^^^^^^^^^^^^^^^^^^^^^^^^ meta.arguments.vba
65+
' ^^^^^^^^^^^^^^^^^^^^^ meta.expression.vba
66+
' ^ punctuation.separator.vba
67+
' ^ keyword.control.line-continuation.vba
68+
NamedArgument:=validationResult)
69+
' ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.arguments.vba
70+
' ^^^^^^^^^^^^^ variable.parameter.name.vba
71+
' ^^ punctuation.assignment.parameter.vba
72+
' ^ - meta.arguments.vba
73+
End Sub

0 commit comments

Comments
 (0)