fix(python): highlight function calls correctly (#7728)

This commit is contained in:
Salomon Popp 2025-03-12 09:22:33 +01:00 committed by GitHub
parent db8689da4a
commit 1a314a58d6
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 77 additions and 42 deletions

View file

@ -35,48 +35,6 @@
function: (identifier) @_func))
(#any-of? @_func "TypeVar" "NewType"))
; Function calls
(call
function: (identifier) @function.call)
(call
function: (attribute
attribute: (identifier) @function.method.call))
((call
function: (identifier) @constructor)
(#lua-match? @constructor "^%u"))
((call
function: (attribute
attribute: (identifier) @constructor))
(#lua-match? @constructor "^%u"))
; Decorators
((decorator
"@" @attribute)
(#set! priority 101))
(decorator
(identifier) @attribute)
(decorator
(attribute
attribute: (identifier) @attribute))
(decorator
(call
(identifier) @attribute))
(decorator
(call
(attribute
attribute: (identifier) @attribute)))
((decorator
(identifier) @attribute.builtin)
(#any-of? @attribute.builtin "classmethod" "property" "staticmethod"))
; Builtin functions
((call
function: (identifier) @function.builtin)
@ -450,6 +408,23 @@
name: (identifier) @constructor)))
(#any-of? @constructor "__new__" "__init__"))
; Function calls
(call
function: (identifier) @function.call)
(call
function: (attribute
attribute: (identifier) @function.method.call))
((call
function: (identifier) @constructor)
(#lua-match? @constructor "^%u"))
((call
function: (attribute
attribute: (identifier) @constructor))
(#lua-match? @constructor "^%u"))
; Regex from the `re` module
(call
function: (attribute
@ -459,3 +434,28 @@
(string
(string_content) @string.regexp))
(#eq? @_re "re"))
; Decorators
((decorator
"@" @attribute)
(#set! priority 101))
(decorator
(identifier) @attribute)
(decorator
(attribute
attribute: (identifier) @attribute))
(decorator
(call
(identifier) @attribute))
(decorator
(call
(attribute
attribute: (identifier) @attribute)))
((decorator
(identifier) @attribute.builtin)
(#any-of? @attribute.builtin "classmethod" "property" "staticmethod"))

View file

@ -0,0 +1,22 @@
from dataclasses import dataclass
@dataclass
#^^^^^^^^^ @attribute
class Data:
_foo: str
@property
# ^ @attribute
# ^^^^^^^^ @attribute.builtin
def foo(self) -> str:
return self._foo
@pytest.mark.filterwarnings("ignore::DeprecationWarning")
#^^^^^^ @variable
# ^^^^ @variable.member
# ^^^^^^^^^^^^^^ @attribute
def test_func():
pass

View file

@ -0,0 +1,13 @@
def func() -> None: ...
_ = func()
# ^^^^ @function.call
"{}".format(1)
# ^^^^^^ @function.method.call
class Foo:
def method(self) -> None: ...
Foo().method()
# ^^^^^^ @function.method.call