python: Add capture groups for builtin types, builtin attribute decorators, class inheritance, function arguments and definition keywords (#21454)
Add capture groups for builtin types, builtin attribute decorators, class inheritance, function arguments and definition keywords. Related to #14892 Release Notes: - Improved syntax highlight for Python: new capture groups for `@function.arguments`, `@function.kwargs`, `@type.class.inheritance`, `@keyword.definition`, `@attribute.builtin` and `@type.builtin`.
This commit is contained in:
parent
3282398987
commit
73001a72e3
1 changed files with 53 additions and 1 deletions
|
@ -36,6 +36,7 @@
|
||||||
(call
|
(call
|
||||||
function: (identifier) @function.call)
|
function: (identifier) @function.call)
|
||||||
|
|
||||||
|
(decorator "@" @punctuation.special)
|
||||||
(decorator
|
(decorator
|
||||||
"@" @punctuation.special
|
"@" @punctuation.special
|
||||||
[
|
[
|
||||||
|
@ -50,11 +51,32 @@
|
||||||
(function_definition
|
(function_definition
|
||||||
name: (identifier) @function.definition)
|
name: (identifier) @function.definition)
|
||||||
|
|
||||||
|
; Function arguments
|
||||||
|
(function_definition
|
||||||
|
parameters: (parameters
|
||||||
|
[
|
||||||
|
(identifier) @function.arguments ; Simple parameters
|
||||||
|
(typed_parameter
|
||||||
|
(identifier) @function.arguments) ; Typed parameters
|
||||||
|
(default_parameter
|
||||||
|
name: (identifier) @function.arguments) ; Default parameters
|
||||||
|
]))
|
||||||
|
|
||||||
|
; Keyword arguments
|
||||||
|
(call
|
||||||
|
arguments: (argument_list
|
||||||
|
(keyword_argument
|
||||||
|
name: (identifier) @function.kwargs)))
|
||||||
|
|
||||||
; Class definitions and calling: needs to come after the regex matching above
|
; Class definitions and calling: needs to come after the regex matching above
|
||||||
|
|
||||||
(class_definition
|
(class_definition
|
||||||
name: (identifier) @type.class.definition)
|
name: (identifier) @type.class.definition)
|
||||||
|
|
||||||
|
(class_definition
|
||||||
|
superclasses: (argument_list
|
||||||
|
(identifier) @type.class.inheritance))
|
||||||
|
|
||||||
(call
|
(call
|
||||||
function: (identifier) @type.class.call
|
function: (identifier) @type.class.call
|
||||||
(#match? @type.class.call "^_*[A-Z][A-Za-z0-9_]*$"))
|
(#match? @type.class.call "^_*[A-Z][A-Za-z0-9_]*$"))
|
||||||
|
@ -221,3 +243,33 @@
|
||||||
"match"
|
"match"
|
||||||
"case"
|
"case"
|
||||||
] @keyword
|
] @keyword
|
||||||
|
|
||||||
|
; Definition keywords def, class, async def, lambda
|
||||||
|
[
|
||||||
|
"async"
|
||||||
|
"def"
|
||||||
|
"class"
|
||||||
|
"lambda"
|
||||||
|
] @keyword.definition
|
||||||
|
|
||||||
|
((identifier) @attribute.builtin
|
||||||
|
(#any-of? @attribute.builtin "classmethod" "staticmethod" "property"))
|
||||||
|
|
||||||
|
; Builtin types as identifiers
|
||||||
|
[
|
||||||
|
(call
|
||||||
|
function: (identifier) @type.builtin)
|
||||||
|
(call
|
||||||
|
arguments: (argument_list
|
||||||
|
(identifier) @type.builtin))
|
||||||
|
(call
|
||||||
|
arguments: (argument_list
|
||||||
|
(keyword_argument
|
||||||
|
value: (identifier) @type.builtin)))
|
||||||
|
(type (identifier) @type.builtin)
|
||||||
|
; also check if type binary operator left identifier for union types
|
||||||
|
(type
|
||||||
|
(binary_operator
|
||||||
|
left: (identifier) @type.builtin))
|
||||||
|
(#any-of? @type.builtin "bool" "bytearray" "bytes" "complex" "dict" "float" "frozenset" "int" "list" "memoryview" "object" "range" "set" "slice" "str" "tuple")
|
||||||
|
] @type.builtin
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue