diff options
| author | Thomas Vigouroux <39092278+vigoux@users.noreply.github.com> | 2020-05-23 15:19:03 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2020-05-23 15:19:03 +0200 |
| commit | 9afad9698ec395afb837908031ca03e3c6a7470b (patch) | |
| tree | a27ba10c44ffcdf57de7e7b43104271687f2c49e /queries/python | |
| parent | Merge pull request #61 from theHamsta/cleanup-postspace (diff) | |
| parent | Introduce `@include` (diff) | |
| download | nvim-treesitter-9afad9698ec395afb837908031ca03e3c6a7470b.tar nvim-treesitter-9afad9698ec395afb837908031ca03e3c6a7470b.tar.gz nvim-treesitter-9afad9698ec395afb837908031ca03e3c6a7470b.tar.bz2 nvim-treesitter-9afad9698ec395afb837908031ca03e3c6a7470b.tar.lz nvim-treesitter-9afad9698ec395afb837908031ca03e3c6a7470b.tar.xz nvim-treesitter-9afad9698ec395afb837908031ca03e3c6a7470b.tar.zst nvim-treesitter-9afad9698ec395afb837908031ca03e3c6a7470b.zip | |
Merge pull request #56 from theHamsta/python-locals
Add python locals.scm
Diffstat (limited to 'queries/python')
| -rw-r--r-- | queries/python/highlights.scm | 176 | ||||
| -rw-r--r-- | queries/python/locals.scm | 71 |
2 files changed, 247 insertions, 0 deletions
diff --git a/queries/python/highlights.scm b/queries/python/highlights.scm new file mode 100644 index 000000000..4cd8b8998 --- /dev/null +++ b/queries/python/highlights.scm @@ -0,0 +1,176 @@ +;; From tree-sitter-python licensed under MIT License +; Copyright (c) 2016 Max Brunsfeld + +; Identifier naming conventions + + +((import_from_statement + name: (dotted_name + (identifier)) @type) + (match? @type "^[A-Z]")) + +((identifier) @constant + (match? @constant "^[A-Z][A-Z_]*$")) + +; Function calls + +(decorator) @function + +(call + function: (attribute + attribute: (identifier) @method)) + +(call + function: (identifier) @function) + +((call + (identifier) @constructor) + (match? @constructor "^[A-Z]")) + +;; Builtin functions + +((call + function: (identifier) @function.builtin) + (match? + @function.builtin + "^(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__)$")) + +;; Function definitions + +(function_definition + name: (identifier) @function) + +(identifier) @variable +(attribute attribute: (identifier) @property) +(type (identifier) @type) +(parameters + (identifier) @parameter) + +; Literals + +(none) @constant.builtin +(true) @boolean +(false) @boolean +((identifier) @constant.builtin + (match? @constant.builtin "self")) + +(integer) @number +(float) @float + +(comment) @comment +(string) @string +(escape_sequence) @escape + +(interpolation + "{" @punctuation.special + "}" @punctuation.special) @embedded + +; Tokens + +"-" @operator +"-=" @operator +"!=" @operator +"*" @operator +"**" @operator +"**=" @operator +"*=" @operator +"/" @operator +"//" @operator +"//=" @operator +"/=" @operator +"&" @operator +"%" @operator +"%=" @operator +"^" @operator +"+" @operator +"+=" @operator +"<" @operator +"<<" @operator +"<=" @operator +"<>" @operator +"=" @operator +"==" @operator +">" @operator +">=" @operator +">>" @operator +"|" @operator +"~" @operator +"and" @operator +"in" @operator +"is" @operator +"not" @operator +"or" @operator + +; Keywords + +"as" @include +"assert" @keyword +"async" @keyword +"await" @keyword +"break" @repeat +"class" @keyword +"continue" @repeat +"def" @keyword +"del" @keyword +"elif" @conditional +"else" @conditional +"except" @keyword +"exec" @keyword +"finally" @keyword +"for" @repeat +"from" @include +"global" @keyword +"if" @conditional +"import" @include +"lambda" @keyword +"nonlocal" @keyword +"pass" @keyword +"print" @keyword +"raise" @keyword +"return" @keyword +"try" @keyword +"while" @repeat +"with" @keyword +"yield" @keyword + +; Additions for nvim-treesitter +"(" @punctuation.bracket +")" @punctuation.bracket +"[" @punctuation.bracket +"]" @punctuation.bracket + +"," @punctuation.delimiter +"." @punctuation.delimiter +":" @punctuation.delimiter + +(class_definition + name: (identifier) @type) + +(attribute + attribute: (identifier) @field) + +((attribute + attribute: (identifier) @constant) + (match? @constant "^[A-Z][A-Z_]*$")) + +((attribute + attribute: (identifier) @type) + (match? @type "^[A-Z][a-z_]+")) + +(class_definition + body: (block + (expression_statement + (assignment + left: (expression_list + (identifier) @field))))) + +((class_definition + body: (block + (expression_statement + (assignment + left: (expression_list + (identifier) @constant))))) + (match? @constant "^[A-Z][A-Z_]*$")) + +;; Error +(ERROR) @error diff --git a/queries/python/locals.scm b/queries/python/locals.scm new file mode 100644 index 000000000..bc33d306b --- /dev/null +++ b/queries/python/locals.scm @@ -0,0 +1,71 @@ +;;; Programm structure +(module) @scope + +(class_definition + body: (block + (expression_statement + (assignment + left: (expression_list + (identifier) @definition.associated))))) @scope + +; Function with parameters, defines parameters +(function_definition + name: (identifier) + parameters: (parameters + (identifier) @definition.var)) + +; Function defines function and scope +(function_definition + name: (identifier) @definition.function) @scope + +;; Should be extended to when syntax supported +;(function_definition + ;name: (identifier) @definition.function + ;body: (block (expression_statement (string) @definition.function.doc)?)) @scope + + +(class_definition + name: (identifier) @definition.type) @scope + +(class_definition + body: (block + (function_definition + name: (identifier) @definition.method))) + +;;; Loops +; not a scope! +(for_statement + left: (variables + (identifier) @definition.var)) + +; not a scope! +;(while_statement) @scope + +; for in list comprehension +(for_in_clause + left: (variables + (identifier) @definition.var)) + +(dictionary_comprehension) @scope +(list_comprehension) @scope +(set_comprehension) @scope + +;;; Assignments + +(assignment + left: (expression_list + (identifier) @definition.var)) + +(assignment + left: (expression_list + (attribute + (identifier) + (identifier) @definition.field))) + +; Walrus operator x := 1 +(named_expression + (identifier) @definition.var) + + +;;; REFERENCES +(identifier) @reference |
