Skip to content

Commit 5822de7

Browse files
committed
fix(elixir): separate function from parameter matching
Previous queries were mixing the parameter matches and the function matches into the same query. This would make it so that functions that didn't have parameters wouldn't match @function.inner or @function.outer queries. Separating them makes it easier to focus on the specifics of fulfilling each query. This should resolve issue #249.
1 parent 5ebf16f commit 5822de7

File tree

1 file changed

+37
-13
lines changed

1 file changed

+37
-13
lines changed

queries/elixir/textobjects.scm

Lines changed: 37 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -28,12 +28,29 @@
2828
(do_block "do" . (_) @class.inner . "end")
2929
) @class.outer
3030

31-
; Function, Parameter, and Call Objects
31+
; Parameters
32+
(call
33+
target: ((identifier) @_identifier (#any-of? @_identifier
34+
"def"
35+
"defmacro"
36+
"defmacrop"
37+
"defn"
38+
"defnp"
39+
"defp"
40+
))
41+
(arguments (call [
42+
(arguments (_) @parameter.inner . "," @_delimiter)
43+
(arguments ((_) @parameter.inner) @_delimiter .)
44+
] (#make-range! "parameter.outer" @parameter.inner @_delimiter)))
45+
) @function.outer
46+
47+
; Function and Call Objects
3248
(anonymous_function
3349
(stab_clause
3450
right: (body) @function.inner)
3551
) @function.outer
3652

53+
; single child
3754
(call
3855
target: ((identifier) @_identifier (#any-of? @_identifier
3956
"def"
@@ -43,17 +60,26 @@
4360
"defnp"
4461
"defp"
4562
))
46-
(arguments (call [
47-
(arguments (_) @parameter.inner . "," @_delimiter)
48-
(arguments ((_) @parameter.inner) @_delimiter .)
49-
] (#make-range! "parameter.outer" @parameter.inner @_delimiter)))
50-
[
51-
(do_block "do" . (_) @_do (_) @_end . "end")
52-
(do_block "do" . ((_) @_do) @_end . "end")
53-
]
63+
(arguments (call))
64+
(do_block "do" . (_) @function.inner . "end")
65+
) @function.outer
66+
67+
; multi child
68+
(call
69+
target: ((identifier) @_identifier (#any-of? @_identifier
70+
"def"
71+
"defmacro"
72+
"defmacrop"
73+
"defn"
74+
"defnp"
75+
"defp"
76+
))
77+
(arguments (call))
78+
(do_block "do" . (_) @_do (_) @_end . "end")
5479
(#make-range! "function.inner" @_do @_end)
5580
) @function.outer
5681

82+
; def function(), do: ....
5783
(call
5884
target: ((identifier) @_identifier (#any-of? @_identifier
5985
"def"
@@ -63,10 +89,8 @@
6389
"defnp"
6490
"defp"
6591
))
66-
(arguments (call [
67-
(arguments (_) @parameter.inner . "," @_delimiter)
68-
(arguments ((_) @parameter.inner) @_delimiter .)
69-
] (#make-range! "parameter.outer" @parameter.inner @_delimiter))
92+
(arguments
93+
(call)
7094
(keywords
7195
(pair
7296
value: (_) @function.inner))

0 commit comments

Comments
 (0)