pub const TAGS_QUERY: &str = "; Definitions\n\n; * modules and protocols\n(call\n target: (identifier) @ignore\n (arguments (alias) @name)\n (#any-of? @ignore \"defmodule\" \"defprotocol\")) @definition.module\n\n; * functions/macros\n(call\n target: (identifier) @ignore\n (arguments\n [\n ; zero-arity functions with no parentheses\n (identifier) @name\n ; regular function clause\n (call target: (identifier) @name)\n ; function clause with a guard clause\n (binary_operator\n left: (call target: (identifier) @name)\n operator: \"when\")\n ])\n (#any-of? @ignore \"def\" \"defp\" \"defdelegate\" \"defguard\" \"defguardp\" \"defmacro\" \"defmacrop\" \"defn\" \"defnp\")) @definition.function\n\n; References\n\n; ignore calls to kernel/special-forms keywords\n(call\n target: (identifier) @ignore\n (#any-of? @ignore \"def\" \"defp\" \"defdelegate\" \"defguard\" \"defguardp\" \"defmacro\" \"defmacrop\" \"defn\" \"defnp\" \"defmodule\" \"defprotocol\" \"defimpl\" \"defstruct\" \"defexception\" \"defoverridable\" \"alias\" \"case\" \"cond\" \"else\" \"for\" \"if\" \"import\" \"quote\" \"raise\" \"receive\" \"require\" \"reraise\" \"super\" \"throw\" \"try\" \"unless\" \"unquote\" \"unquote_splicing\" \"use\" \"with\"))\n\n; ignore module attributes\n(unary_operator\n operator: \"@\"\n operand: (call\n target: (identifier) @ignore))\n\n; * function call\n(call\n target: [\n ; local\n (identifier) @name\n ; remote\n (dot\n right: (identifier) @name)\n ]) @reference.call\n\n; * pipe into function call\n(binary_operator\n operator: \"|>\"\n right: (identifier) @name) @reference.call\n\n; * modules\n(alias) @name @reference.module\n";