on c4aec0a help sign in
helix/runtime/queries/python/highlights.scm
220 lines 5.2 kB history raw
1; Imports
3(dotted_name
4 (identifier)* @namespace)
5
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_]{2,}$"))
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] @keyword.control.conditional
174 "while"
175 "for"
176 "break"
177 "continue"
178] @keyword.control.repeat
181 "return"
182 "yield"
183] @keyword.control.return
184(yield "from" @keyword.control.return)
187 "raise"
188 "try"
189 "except"
190 "finally"
191] @keyword.control.except
192(raise_statement "from" @keyword.control.except)
193"import" @keyword.control.import
195(for_statement "in" @keyword.control)
196(for_in_clause "in" @keyword.control)
199 "and"
200 "async"
201 "class"
202 "exec"
203 "global"
204 "nonlocal"
205 "print"
206] @keyword
208 "and"
209 "or"
210 "in"
211 "not"
212 "del"
213 "is"
214] @keyword.operator
216((identifier) @type.builtin
217 (#match? @type.builtin
218 "^(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)$"))
220(ERROR) @error