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
 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