diff options
| author | Christian Clason <c.clason@uni-graz.at> | 2023-06-12 09:54:30 -0600 |
|---|---|---|
| committer | Christian Clason <c.clason@uni-graz.at> | 2025-05-12 18:43:40 +0200 |
| commit | 692b051b09935653befdb8f7ba8afdb640adf17b (patch) | |
| tree | 167162b6b129ae04f68c5735078521a72917c742 /runtime/queries/teal | |
| parent | feat(c-family): inherit injections (diff) | |
| download | nvim-treesitter-692b051b09935653befdb8f7ba8afdb640adf17b.tar nvim-treesitter-692b051b09935653befdb8f7ba8afdb640adf17b.tar.gz nvim-treesitter-692b051b09935653befdb8f7ba8afdb640adf17b.tar.bz2 nvim-treesitter-692b051b09935653befdb8f7ba8afdb640adf17b.tar.lz nvim-treesitter-692b051b09935653befdb8f7ba8afdb640adf17b.tar.xz nvim-treesitter-692b051b09935653befdb8f7ba8afdb640adf17b.tar.zst nvim-treesitter-692b051b09935653befdb8f7ba8afdb640adf17b.zip | |
feat!: drop modules, general refactor and cleanup
Diffstat (limited to 'runtime/queries/teal')
| -rw-r--r-- | runtime/queries/teal/folds.scm | 13 | ||||
| -rw-r--r-- | runtime/queries/teal/highlights.scm | 237 | ||||
| -rw-r--r-- | runtime/queries/teal/indents.scm | 18 | ||||
| -rw-r--r-- | runtime/queries/teal/injections.scm | 43 | ||||
| -rw-r--r-- | runtime/queries/teal/locals.scm | 36 |
5 files changed, 347 insertions, 0 deletions
diff --git a/runtime/queries/teal/folds.scm b/runtime/queries/teal/folds.scm new file mode 100644 index 000000000..27755de20 --- /dev/null +++ b/runtime/queries/teal/folds.scm @@ -0,0 +1,13 @@ +[ + (do_statement) + (numeric_for_statement) + (generic_for_statement) + (while_statement) + (repeat_statement) + (if_statement) + (function_statement) + (record_declaration) + (enum_declaration) + (anon_function) + (table_constructor) +] @fold diff --git a/runtime/queries/teal/highlights.scm b/runtime/queries/teal/highlights.scm new file mode 100644 index 000000000..e58d588bb --- /dev/null +++ b/runtime/queries/teal/highlights.scm @@ -0,0 +1,237 @@ +; Primitives +(boolean) @boolean + +(comment) @comment @spell + +((comment) @comment.documentation + (#lua-match? @comment.documentation "^[-][-][-]")) + +((comment) @comment.documentation + (#lua-match? @comment.documentation "^[-][-](%s?)@")) + +(shebang_comment) @keyword.directive + +(identifier) @variable + +((identifier) @variable.builtin + (#eq? @variable.builtin "self")) + +(nil) @constant.builtin + +(number) @number + +(string) @string + +(table_constructor + [ + "{" + "}" + ] @constructor) + +(varargs + "..." @constant.builtin) + +[ + "," + "." + ":" + ";" +] @punctuation.delimiter + +(escape_sequence) @string.escape + +(format_specifier) @string.escape + +; Basic statements/Keywords +[ + "if" + "then" + "elseif" + "else" +] @keyword.conditional + +[ + "for" + "while" + "repeat" + "until" +] @keyword.repeat + +"return" @keyword.return + +[ + "in" + "local" + (break) + (goto) + "do" + "end" +] @keyword + +(label) @label + +; Global isn't a real keyword, but it gets special treatment in these places +(var_declaration + "global" @keyword) + +(type_declaration + "global" @keyword) + +(function_statement + "global" @keyword) + +(record_declaration + "global" @keyword) + +(enum_declaration + "global" @keyword) + +; Ops +(bin_op + (op) @operator) + +(unary_op + (op) @operator) + +[ + "=" + "as" +] @operator + +; Functions +(function_statement + "function" @keyword.function + . + name: (_) @function) + +(anon_function + "function" @keyword.function) + +(function_body + "end" @keyword.function) + +(arg + name: (identifier) @variable.parameter) + +(function_signature + (arguments + . + (arg + name: (identifier) @variable.builtin)) + (#eq? @variable.builtin "self")) + +(typeargs + "<" @punctuation.bracket + . + (_) @variable.parameter + . + ("," + . + (_) @variable.parameter)* + . + ">" @punctuation.bracket) + +(function_call + (identifier) @function + . + (arguments)) + +(function_call + (index + (_) + key: (identifier) @function) + . + (arguments)) + +(function_call + (method_index + (_) + key: (identifier) @function) + . + (arguments)) + +; Types +(record_declaration + . + "record" @keyword.type + name: (identifier) @type) + +(anon_record + . + "record" @keyword.type) + +(record_body + (record_declaration + . + "record" @keyword.type + . + name: (identifier) @type)) + +(record_body + (enum_declaration + . + "enum" @keyword.type + . + name: (identifier) @type)) + +(record_body + (typedef + . + "type" @keyword + . + name: (identifier) @type + . + "=")) + +(record_body + (metamethod + "metamethod" @keyword)) + +(record_body + (userdata) @keyword) + +(enum_declaration + "enum" @keyword.type + name: (identifier) @type) + +(type_declaration + "type" @keyword) + +(type_declaration + (identifier) @type) + +(simple_type + name: (identifier) @type) + +(type_index + (identifier) @type) + +(type_union + "|" @operator) + +(function_type + "function" @type) + +; The rest of it +(var_declaration + declarators: (var_declarators + (var + name: (identifier) @variable))) + +(var_declaration + declarators: (var_declarators + (var + "<" @punctuation.bracket + . + attribute: (attribute) @attribute + . + ">" @punctuation.bracket))) + +[ + "(" + ")" + "[" + "]" + "{" + "}" +] @punctuation.bracket diff --git a/runtime/queries/teal/indents.scm b/runtime/queries/teal/indents.scm new file mode 100644 index 000000000..77b269cd9 --- /dev/null +++ b/runtime/queries/teal/indents.scm @@ -0,0 +1,18 @@ +[ + (record_declaration) + (anon_function) + (function_body) + (table_constructor) + (if_statement) + (return_statement) + (while_statement) +] @indent.begin + +[ + "{" + "}" + "(" + ")" + "end" + "then" +] @indent.branch diff --git a/runtime/queries/teal/injections.scm b/runtime/queries/teal/injections.scm new file mode 100644 index 000000000..decb4831c --- /dev/null +++ b/runtime/queries/teal/injections.scm @@ -0,0 +1,43 @@ +((function_call + (index + (identifier) @_cdef_identifier) + (arguments + (string) @injection.content)) + (#eq? @_cdef_identifier "cdef") + (#lua-match? @injection.content "^[\"']") + (#offset! @injection.content 0 1 0 -1) + (#set! injection.language "c")) + +((function_call + (index + (identifier) @_cdef_identifier) + (arguments + (string) @injection.content)) + (#eq? @_cdef_identifier "cdef") + (#lua-match? @injection.content "^%[%[") + (#offset! @injection.content 0 2 0 -2) + (#set! injection.language "c")) + +; string.format('...') +((function_call + (index + (identifier) @_base + key: (identifier) @_entry) + (arguments + . + (string) @injection.content)) + (#eq? @_base "string") + (#eq? @_entry "format") + (#set! injection.language "printf")) + +; ('...'):format() +((function_call + (method_index + (parenthesized_expression + (string) @injection.content) + key: (identifier) @_func)) + (#eq? @_func "format") + (#set! injection.language "printf")) + +((comment) @injection.content + (#set! injection.language "comment")) diff --git a/runtime/queries/teal/locals.scm b/runtime/queries/teal/locals.scm new file mode 100644 index 000000000..c2386c632 --- /dev/null +++ b/runtime/queries/teal/locals.scm @@ -0,0 +1,36 @@ +(var_declaration + declarators: (var_declarators + (var + (identifier)) @local.definition.var)) + +(var_assignment + variables: (assignment_variables + (var + (identifier) @local.definition.var) @local.definition.associated)) + +(arg + name: (identifier) @local.definition.parameter) + +(anon_function) @local.scope + +(function_statement + (function_name) @local.definition.function) @local.scope + +(program) @local.scope + +(if_statement) @local.scope + +(generic_for_statement + (for_body) @local.scope) + +(numeric_for_statement + (for_body) @local.scope) + +(repeat_statement) @local.scope + +(while_statement + (while_body) @local.scope) + +(do_statement) @local.scope + +(identifier) @local.reference |
