1(call
2 target: (identifier) @context
3 (arguments (alias) @name)
4 (#match? @context "^(defmodule|defprotocol)$")) @item
5
6(call
7 target: (identifier) @context
8 (arguments
9 [
10 (identifier) @name
11 (call
12 target: (identifier) @name
13 (arguments
14 "(" @context.extra
15 _* @context.extra
16 ")" @context.extra))
17 (binary_operator
18 left: (call
19 target: (identifier) @name
20 (arguments
21 "(" @context.extra
22 _* @context.extra
23 ")" @context.extra))
24 operator: "when")
25 ])
26 (#match? @context "^(def|defp|defdelegate|defguard|defguardp|defmacro|defmacrop|defn|defnp)$")) @item