outline.scm

 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 (_) @name)?
 9  (#match? @context "^(setup|setup_all)$")) @item
10
11(call
12  target: (identifier) @context
13  (arguments (string) @name)
14  (#match? @context "^(describe|test)$")) @item
15
16(unary_operator
17  operator: "@" @name
18  operand: (call
19  target: (identifier) @context
20    (arguments
21      [
22        (binary_operator
23          left: (identifier) @name)
24        (binary_operator
25          left: (call
26          target: (identifier) @name
27          (arguments
28            "(" @context.extra
29            _* @context.extra
30            ")" @context.extra)))
31      ]
32    )
33)
34(#match? @context "^(callback|type|typep)$")) @item
35
36(call
37  target: (identifier) @context
38  (arguments
39    [
40      (identifier) @name
41      (call
42          target: (identifier) @name
43          (arguments
44              "(" @context.extra
45              _* @context.extra
46              ")" @context.extra))
47      (binary_operator
48        left: (call
49            target: (identifier) @name
50            (arguments
51                "(" @context.extra
52                _* @context.extra
53                ")" @context.extra))
54        operator: "when")
55    ])
56  (#match? @context "^(def|defp|defdelegate|defguard|defguardp|defmacro|defmacrop|defn|defnp)$")) @item