diff options
| author | Salomon Popp <hi@salomonpopp.me> | 2025-03-13 09:21:55 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-03-13 09:21:55 +0100 |
| commit | 683816f14718b257666b29f792a8d330936cf5c1 (patch) | |
| tree | ca73997c9ec2a242cfc4956e25a36901c472a950 | |
| parent | bot(lockfile): update cmake, liquid, meson, tera, v, vhdl (diff) | |
| download | nvim-treesitter-683816f14718b257666b29f792a8d330936cf5c1.tar nvim-treesitter-683816f14718b257666b29f792a8d330936cf5c1.tar.gz nvim-treesitter-683816f14718b257666b29f792a8d330936cf5c1.tar.bz2 nvim-treesitter-683816f14718b257666b29f792a8d330936cf5c1.tar.lz nvim-treesitter-683816f14718b257666b29f792a8d330936cf5c1.tar.xz nvim-treesitter-683816f14718b257666b29f792a8d330936cf5c1.tar.zst nvim-treesitter-683816f14718b257666b29f792a8d330936cf5c1.zip | |
fix(python): don't highlight parameter name as builtin (#7732)
| -rw-r--r-- | queries/python/highlights.scm | 122 | ||||
| -rw-r--r-- | tests/query/highlights/python/fields.py | 15 | ||||
| -rw-r--r-- | tests/query/highlights/python/functions.py | 5 |
3 files changed, 77 insertions, 65 deletions
diff --git a/queries/python/highlights.scm b/queries/python/highlights.scm index 60f3e14c0..855c96dfc 100644 --- a/queries/python/highlights.scm +++ b/queries/python/highlights.scm @@ -65,61 +65,6 @@ (identifier) @type)) (#eq? @_isinstance "isinstance")) -; Normal parameters -(parameters - (identifier) @variable.parameter) - -; Lambda parameters -(lambda_parameters - (identifier) @variable.parameter) - -(lambda_parameters - (tuple_pattern - (identifier) @variable.parameter)) - -; Default parameters -(keyword_argument - name: (identifier) @variable.parameter) - -; Naming parameters on call-site -(default_parameter - name: (identifier) @variable.parameter) - -(typed_parameter - (identifier) @variable.parameter) - -(typed_default_parameter - name: (identifier) @variable.parameter) - -; Variadic parameters *args, **kwargs -(parameters - (list_splat_pattern ; *args - (identifier) @variable.parameter)) - -(parameters - (dictionary_splat_pattern ; **kwargs - (identifier) @variable.parameter)) - -; Typed variadic parameters -(parameters - (typed_parameter - (list_splat_pattern ; *args: type - (identifier) @variable.parameter))) - -(parameters - (typed_parameter - (dictionary_splat_pattern ; *kwargs: type - (identifier) @variable.parameter))) - -; Lambda parameters -(lambda_parameters - (list_splat_pattern - (identifier) @variable.parameter)) - -(lambda_parameters - (dictionary_splat_pattern - (identifier) @variable.parameter)) - ; Literals (none) @constant.builtin @@ -128,12 +73,6 @@ (false) ] @boolean -((identifier) @variable.builtin - (#eq? @variable.builtin "self")) - -((identifier) @variable.builtin - (#eq? @variable.builtin "cls")) - (integer) @number (float) @number.float @@ -369,6 +308,67 @@ "bool" "int" "float" "complex" "list" "tuple" "range" "str" "bytes" "bytearray" "memoryview" "set" "frozenset" "dict" "type" "object")) +; Normal parameters +(parameters + (identifier) @variable.parameter) + +; Lambda parameters +(lambda_parameters + (identifier) @variable.parameter) + +(lambda_parameters + (tuple_pattern + (identifier) @variable.parameter)) + +; Default parameters +(keyword_argument + name: (identifier) @variable.parameter) + +; Naming parameters on call-site +(default_parameter + name: (identifier) @variable.parameter) + +(typed_parameter + (identifier) @variable.parameter) + +(typed_default_parameter + name: (identifier) @variable.parameter) + +; Variadic parameters *args, **kwargs +(parameters + (list_splat_pattern ; *args + (identifier) @variable.parameter)) + +(parameters + (dictionary_splat_pattern ; **kwargs + (identifier) @variable.parameter)) + +; Typed variadic parameters +(parameters + (typed_parameter + (list_splat_pattern ; *args: type + (identifier) @variable.parameter))) + +(parameters + (typed_parameter + (dictionary_splat_pattern ; *kwargs: type + (identifier) @variable.parameter))) + +; Lambda parameters +(lambda_parameters + (list_splat_pattern + (identifier) @variable.parameter)) + +(lambda_parameters + (dictionary_splat_pattern + (identifier) @variable.parameter)) + +((identifier) @variable.builtin + (#eq? @variable.builtin "self")) + +((identifier) @variable.builtin + (#eq? @variable.builtin "cls")) + ; After @type.builtin bacause builtins (such as `type`) are valid as attribute name ((attribute attribute: (identifier) @variable.member) diff --git a/tests/query/highlights/python/fields.py b/tests/query/highlights/python/fields.py index cea9eccb7..cbe80cdc2 100644 --- a/tests/query/highlights/python/fields.py +++ b/tests/query/highlights/python/fields.py @@ -2,12 +2,15 @@ class Fields: type: str # ^^^^ @variable.member - def __init__(self, fields: list[int]) -> None: -# ^^^ @type.builtin -# ^^^^ @constant.builtin + def __init__(self, type: str, fields: list[int]) -> None: +# ^^^^ @variable.builtin +# ^^^^ @variable.parameter +# ^^^^^^ @variable.parameter +# ^^^ @type.builtin +# ^^^^ @constant.builtin self.fields = fields # ^^^^^^ @variable.member - self.type = "foo" + self.type = type # this cannot be highlighted correctly by Treesitter # ^^^^ @variable.member self.__dunderfield__ = None # ^^^^^^^^^^^^^^^ @variable.member @@ -15,3 +18,7 @@ class Fields: # ^^^^^^^^^^^ @variable.member self.NOT_A_FIELD = "IM NOT A FIELD" # ^^^^^^^^^^^ @constant + +Fields(type="schema", fields=[0, 1]) +# ^^^^ @variable.parameter +# ^^^^^^ @variable.parameter diff --git a/tests/query/highlights/python/functions.py b/tests/query/highlights/python/functions.py index 6d3028433..7284d3fcc 100644 --- a/tests/query/highlights/python/functions.py +++ b/tests/query/highlights/python/functions.py @@ -8,6 +8,11 @@ _ = func() class Foo: def method(self) -> None: ... +# ^^^^ @variable.builtin + + @classmethod + def clsmethod(cls) -> None: ... +# ^^^ @variable.builtin Foo().method() # ^^^^^^ @function.method.call |
