mirror of
https://github.com/nvim-treesitter/nvim-treesitter.git
synced 2026-07-20 20:30:05 -04:00
Update locals with support for deep pattern matches
This commit is contained in:
parent
259e3f6e64
commit
1413f62c88
2 changed files with 66 additions and 75 deletions
|
|
@ -19,6 +19,9 @@
|
||||||
"%"
|
"%"
|
||||||
] @punctuation.special
|
] @punctuation.special
|
||||||
|
|
||||||
|
; Parser errors
|
||||||
|
(ERROR) @error
|
||||||
|
|
||||||
; Identifiers
|
; Identifiers
|
||||||
(identifier) @variable
|
(identifier) @variable
|
||||||
|
|
||||||
|
|
@ -201,7 +204,7 @@
|
||||||
quoted_end: _ @comment) @comment
|
quoted_end: _ @comment) @comment
|
||||||
(boolean) @comment
|
(boolean) @comment
|
||||||
]))
|
]))
|
||||||
(#any-of? @_identifier "moduledoc" "typedoc" "doc"))
|
(#any-of? @_identifier "moduledoc" "typedoc" "shortdoc" "doc"))
|
||||||
|
|
||||||
; Sigils
|
; Sigils
|
||||||
(sigil
|
(sigil
|
||||||
|
|
@ -220,5 +223,3 @@
|
||||||
((sigil_modifiers) @string)?
|
((sigil_modifiers) @string)?
|
||||||
(#any-of? @_sigil_name "s" "S")) @string
|
(#any-of? @_sigil_name "s" "S")) @string
|
||||||
|
|
||||||
; Parser errors
|
|
||||||
(ERROR) @error
|
|
||||||
|
|
|
||||||
|
|
@ -1,80 +1,70 @@
|
||||||
[
|
; Scopes
|
||||||
(after_block)
|
(call (do_block)) @scope
|
||||||
(catch_block)
|
(stab_clause) @scope
|
||||||
(do_block)
|
|
||||||
(stab_expression)
|
|
||||||
(rescue_block)
|
|
||||||
] @scope
|
|
||||||
|
|
||||||
|
; References
|
||||||
(identifier) @reference
|
(identifier) @reference
|
||||||
|
(alias) @reference
|
||||||
|
|
||||||
|
; Module Definitions
|
||||||
(call
|
(call
|
||||||
function: (function_identifier) @_call-name
|
target: ((identifier) @_identifier (#eq? @_identifier "defmodule"))
|
||||||
(module) @definition.type
|
(arguments (alias) @definition.type))
|
||||||
(#eq? @_call-name "defmodule"))
|
|
||||||
|
|
||||||
; Function definition without arguments
|
; Local Function Definitions
|
||||||
(call (function_identifier) @_call-name
|
; TODO: add support for test blocks
|
||||||
(identifier) @definition.function
|
; test "foo", %{conn: conn} do
|
||||||
(#any-of? @_call-name "def" "defp" "defguard" "defguardp"))
|
(call
|
||||||
|
target: ((identifier) @_identifier (#any-of? @_identifier "def" "defp" "defmacro" "defmacrop" "defguard" "defguardp" "defn" "defnp" "for"))
|
||||||
|
(arguments [
|
||||||
|
(identifier) @definition.function
|
||||||
|
(binary_operator left: (identifier) @definition.function)
|
||||||
|
(call target: (identifier) @definition.function (arguments [
|
||||||
|
(identifier) @definition.parameter
|
||||||
|
(_ (identifier) @definition.parameter)
|
||||||
|
(_ (_ (identifier) @definition.parameter))
|
||||||
|
(_ (_ (_ (identifier) @definition.parameter)))
|
||||||
|
(_ (_ (_ (_ (identifier) @definition.parameter))))
|
||||||
|
(_ (_ (_ (_ (_ (identifier) @definition.parameter)))))
|
||||||
|
(_ (_ (_ (_ (_ (_ (identifier) @definition.parameter))))))
|
||||||
|
(_ (_ (_ (_ (_ (_ (_ (identifier) @definition.parameter)))))))
|
||||||
|
]))
|
||||||
|
]?) (#set! definition.function.scope parent))
|
||||||
|
|
||||||
; Function definition with arguments
|
; Pattern Match Definitions
|
||||||
(call (function_identifier) @_call-name
|
(binary_operator left: [
|
||||||
(call
|
(identifier) @definition.var
|
||||||
function: (function_identifier) @definition.function
|
(_ (identifier) @definition.var)
|
||||||
(arguments
|
(_ (_ (identifier) @definition.var))
|
||||||
[(identifier) @definition.parameter
|
(_ (_ (_ (identifier) @definition.var)))
|
||||||
(tuple (identifier) @definition.parameter)
|
(_ (_ (_ (_ (identifier) @definition.var))))
|
||||||
(list (identifier) @definition.parameter)
|
(_ (_ (_ (_ (_ (identifier) @definition.var)))))
|
||||||
(_
|
(_ (_ (_ (_ (_ (_ (identifier) @definition.var))))))
|
||||||
(keyword_list (identifier) @definition.parameter))
|
(_ (_ (_ (_ (_ (_ (_ (identifier) @definition.var)))))))
|
||||||
(binary_op
|
] operator: "=")
|
||||||
left: (identifier) @definition.parameter
|
|
||||||
operator: "\\\\")]))
|
|
||||||
(#any-of? @_call-name "def" "defp"))
|
|
||||||
|
|
||||||
; Function definition with (some) arguments and guard(s)
|
; Stab Clause Definitions
|
||||||
(call (function_identifier) @_call-name
|
(stab_clause left: [
|
||||||
(binary_op
|
(_ (identifier) @definition.var)
|
||||||
left:
|
(_ (_ (identifier) @definition.var))
|
||||||
(call
|
(_ (_ (_ (identifier) @definition.var)))
|
||||||
function: (function_identifier) @definition.function
|
(_ (_ (_ (_ (identifier) @definition.var))))
|
||||||
(arguments
|
(_ (_ (_ (_ (_ (identifier) @definition.var)))))
|
||||||
[(identifier) @definition.parameter
|
(_ (_ (_ (_ (_ (_ (identifier) @definition.var))))))
|
||||||
(tuple (identifier) @definition.parameter)
|
(_ (_ (_ (_ (_ (_ (_ (identifier) @definition.var)))))))
|
||||||
(list (identifier) @definition.parameter)
|
])
|
||||||
(_
|
|
||||||
(keyword_list (identifier) @definition.parameter))]))
|
|
||||||
operator: "when")
|
|
||||||
(#any-of? @_call-name "def" "defp" "defguard" "defguardp"))
|
|
||||||
|
|
||||||
; Variable assignment and simple pattern matching
|
; Aliases
|
||||||
(binary_op
|
(call
|
||||||
left:
|
target: ((identifier) @_identifier (#any-of? @_identifier "require" "alias" "use" "import"))
|
||||||
[(identifier) @definition.var
|
(arguments [
|
||||||
(tuple (identifier) @definition.var)
|
(alias) @definition.import
|
||||||
(list (identifier) @definition.var)
|
(_ (alias) @definition.import)
|
||||||
(_
|
(_ (_ (alias) @definition.import))
|
||||||
(keyword_list (identifier) @definition.var))]
|
(_ (_ (_ (alias) @definition.import)))
|
||||||
operator: "=")
|
(_ (_ (_ (_ (alias) @definition.import))))
|
||||||
|
(_ (_ (_ (_ (_ (alias) @definition.import)))))
|
||||||
; Simple stab expression (ex. case pattern matching) without guard(s)
|
(_ (_ (_ (_ (_ (_ (alias) @definition.import))))))
|
||||||
(stab_expression
|
(_ (_ (_ (_ (_ (_ (_ (alias) @definition.import)))))))
|
||||||
left:
|
]
|
||||||
(bare_arguments
|
))
|
||||||
[(identifier) @definition.var
|
|
||||||
(tuple (identifier) @definition.var)
|
|
||||||
(list (identifier) @definition.var)
|
|
||||||
(_
|
|
||||||
(keyword_list (identifier) @definition.var))]))
|
|
||||||
|
|
||||||
; Simple stab expression (ex. case pattern matching) with guard(s)
|
|
||||||
(stab_expression
|
|
||||||
left:
|
|
||||||
(bare_arguments
|
|
||||||
(binary_op
|
|
||||||
left: [(identifier) @definition.var
|
|
||||||
(tuple (identifier) @definition.var)
|
|
||||||
(list (identifier) @definition.var)
|
|
||||||
(_
|
|
||||||
(keyword_list (identifier) @definition.var))])))
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue