on 4bc4334 help sign in
helix/runtime/queries/python/highlights.scm
222 lines 5.2 kB history raw
1; Imports
3(dotted_name
4 (identifier)* @namespace)
6(aliased_import
7 alias: (identifier) @namespace)
9; Builtin functions
11((call
12 function: (identifier) @function.builtin)
13 (#match?
14 @function.builtin
15 "^(abs|all|any|ascii|bin|bool|breakpoint|bytearray|bytes|callable|chr|classmethod|compile|complex|delattr|dict|dir|divmod|enumerate|eval|exec|filter|float|format|frozenset|getattr|globals|hasattr|hash|help|hex|id|input|int|isinstance|issubclass|iter|len|list|locals|map|max|memoryview|min|next|object|oct|open|ord|pow|print|property|range|repr|reversed|round|set|setattr|slice|sorted|staticmethod|str|sum|super|tuple|type|vars|zip|__import__)$"))
17; Function calls
20 "def"
21 "lambda"
22] @keyword.function
24(call
25 function: (attribute attribute: (identifier) @constructor)
26 (#match? @constructor "^[A-Z]"))
27(call
28 function: (identifier) @constructor
29 (#match? @constructor "^[A-Z]"))
31(call
32 function: (attribute attribute: (identifier) @function.method))
34(call
35 function: (identifier) @function)
37; Function definitions
39(function_definition
40 name: (identifier) @constructor
41 (#match? @constructor "^(__new__|__init__)$"))
43(function_definition
44 name: (identifier) @function)
46; Decorators
48(decorator) @function
49(decorator (identifier) @function)
50(decorator (attribute attribute: (identifier) @function))
51(decorator (call
52 function: (attribute attribute: (identifier) @function)))
54; Parameters
56((identifier) @variable.builtin
57 (#match? @variable.builtin "^(self|cls)$"))
59(parameters (identifier) @variable.parameter)
60(parameters (typed_parameter (identifier) @variable.parameter))
61(parameters (default_parameter name: (identifier) @variable.parameter))
62(parameters (typed_default_parameter name: (identifier) @variable.parameter))
64(parameters
65 (list_splat_pattern ; *args
66 (identifier) @variable.parameter))
67(parameters
68 (dictionary_splat_pattern ; **kwargs
69 (identifier) @variable.parameter))
71(lambda_parameters
72 (identifier) @variable.parameter)
74; Types
76((identifier) @type.builtin
77 (#match?
78 @type.builtin
79 "^(bool|bytes|dict|float|frozenset|int|list|set|str|tuple)$"))
81; In type hints make everything types to catch non-conforming identifiers
82; (e.g., datetime.datetime) and None
83(type [(identifier) (none)] @type)
84; Handle [] . and | nesting 4 levels deep
85(type
86 (_ [(identifier) (none)]? @type
87 (_ [(identifier) (none)]? @type
88 (_ [(identifier) (none)]? @type
89 (_ [(identifier) (none)]? @type)))))
91(class_definition name: (identifier) @type)
92(class_definition superclasses: (argument_list (identifier) @type))
94; Variables
96((identifier) @constant
97 (#match? @constant "^_*[A-Z][A-Z\\d_]*$"))
99((identifier) @type
100 (#match? @type "^[A-Z]"))
102(attribute attribute: (identifier) @variable.other.member)
103(identifier) @variable
105; Literals
106(none) @constant.builtin
108 (true)
109 (false)
110] @constant.builtin.boolean
112(integer) @constant.numeric.integer
113(float) @constant.numeric.float
114(comment) @comment
115(string) @string
116(escape_sequence) @constant.character.escape
118["," "." ":" ";" (ellipsis)] @punctuation.delimiter
119(interpolation
120 "{" @punctuation.special
121 "}" @punctuation.special) @embedded
122["(" ")" "[" "]" "{" "}"] @punctuation.bracket
125 "-"
126 "-="
127 "!="
128 "*"
129 "**"
130 "**="
131 "*="
132 "/"
133 "//"
134 "//="
135 "/="
136 "&"
137 "%"
138 "%="
139 "^"
140 "+"
141 "->"
142 "+="
143 "<"
144 "<<"
145 "<="
146 "<>"
147 "="
148 ":="
149 "=="
150 ">"
151 ">="
152 ">>"
153 "|"
154 "~"
155] @operator
158 "as"
159 "assert"
160 "await"
161 "from"
162 "pass"
164 "with"
165] @keyword.control
168 "if"
169 "elif"
170 "else"
171 "match"
172 "case"
173] @keyword.control.conditional
176 "while"
177 "for"
178 "break"
179 "continue"
180] @keyword.control.repeat
183 "return"
184 "yield"
185] @keyword.control.return
186(yield "from" @keyword.control.return)
189 "raise"
190 "try"
191 "except"
192 "finally"
193] @keyword.control.except
194(raise_statement "from" @keyword.control.except)
195"import" @keyword.control.import
197(for_statement "in" @keyword.control)
198(for_in_clause "in" @keyword.control)
201 "and"
202 "async"
203 "class"
204 "exec"
205 "global"
206 "nonlocal"
207 "print"
208] @keyword
210 "and"
211 "or"
212 "in"
213 "not"
214 "del"
215 "is"
216] @keyword.operator
218((identifier) @type.builtin
219 (#match? @type.builtin
220 "^(BaseException|Exception|ArithmeticError|BufferError|LookupError|AssertionError|AttributeError|EOFError|FloatingPointError|GeneratorExit|ImportError|ModuleNotFoundError|IndexError|KeyError|KeyboardInterrupt|MemoryError|NameError|NotImplementedError|OSError|OverflowError|RecursionError|ReferenceError|RuntimeError|StopIteration|StopAsyncIteration|SyntaxError|IndentationError|TabError|SystemError|SystemExit|TypeError|UnboundLocalError|UnicodeError|UnicodeEncodeError|UnicodeDecodeError|UnicodeTranslateError|ValueError|ZeroDivisionError|EnvironmentError|IOError|WindowsError|BlockingIOError|ChildProcessError|ConnectionError|BrokenPipeError|ConnectionAbortedError|ConnectionRefusedError|ConnectionResetError|FileExistsError|FileNotFoundError|InterruptedError|IsADirectoryError|NotADirectoryError|PermissionError|ProcessLookupError|TimeoutError|Warning|UserWarning|DeprecationWarning|PendingDeprecationWarning|SyntaxWarning|RuntimeWarning|FutureWarning|ImportWarning|UnicodeWarning|BytesWarning|ResourceWarning)$"))
222(ERROR) @error