diff --git a/languages.toml b/languages.toml index 1eaec8dd..b42f9cfd 100644 --- a/languages.toml +++ b/languages.toml @@ -437,7 +437,7 @@ indent = { tab-width = 4, unit = " " } [[grammar]] name = "python" -source = { git = "https://github.com/tree-sitter/tree-sitter-python", rev = "d6210ceab11e8d812d4ab59c07c81458ec6e5184" } +source = { git = "https://github.com/tree-sitter/tree-sitter-python", rev = "de221eccf9a221f5b85474a553474a69b4b5784d" } [[language]] name = "nickel" diff --git a/runtime/queries/python/highlights.scm b/runtime/queries/python/highlights.scm index 93e08d58..b622ced2 100644 --- a/runtime/queries/python/highlights.scm +++ b/runtime/queries/python/highlights.scm @@ -1,3 +1,6 @@ +(dotted_name + (identifier)* @namespace) + ; Builtin functions ((call @@ -8,6 +11,11 @@ ; Function calls +[ + "def" + "lambda" +] @keyword.function + (call function: (attribute attribute: (identifier) @constructor) (#match? @constructor "^[A-Z]")) @@ -49,6 +57,13 @@ (parameters (typed_default_parameter name: (identifier) @variable.parameter)) (keyword_argument name: (identifier) @variable.parameter) +(parameters + (list_splat_pattern ; *args + (identifier) @variable.parameter)) +(parameters + (dictionary_splat_pattern ; **kwargs + (identifier) @variable.parameter)) + ; Types ((identifier) @type.builtin @@ -81,12 +96,11 @@ (identifier) @variable ; Literals - +(none) @constant.builtin [ - (none) (true) (false) -] @constant.builtin +] @constant.builtin.boolean (integer) @constant.numeric.integer (float) @constant.numeric.float @@ -94,9 +108,11 @@ (string) @string (escape_sequence) @constant.character.escape +["," "." ":" ";" (ellipsis)] @punctuation.delimiter (interpolation "{" @punctuation.special "}" @punctuation.special) @embedded +"(" ")" "[" "]" "{" "}"] @punctuation.bracket [ "-" @@ -135,24 +151,39 @@ "as" "assert" "await" - "break" - "continue" + "from" + "pass" + + "with" +] @keyword.control + +[ + "if" "elif" "else" - "except" - "finally" +] @keyword.control.conditional + +[ + "while" "for" - "from" - "if" - "import" - "pass" - "raise" + "break" + "continue" +] @keyword.control.repeat + +[ "return" - "try" - "while" - "with" "yield" -] @keyword.control +] @keyword.control.return +(yield "from" @keyword.control.return) + +[ + "raise" + "try" + "except" + "finally" +] @keyword.control.except +(raise_statement "from" @keyword.control.except) +"import" @keyword.control.import (for_statement "in" @keyword.control) (for_in_clause "in" @keyword.control) @@ -161,16 +192,22 @@ "and" "async" "class" - "def" - "del" "exec" "global" - "in" - "is" - "lambda" "nonlocal" - "not" - "or" "print" ] @keyword +[ + "and" + "or" + "in" + "not" + "del" + "is" +] @keyword.operator + +((identifier) @type.builtin + (#match? @type.builtin + "^(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)$")) +(ERROR) @error