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/luau | |
| 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/luau')
| -rw-r--r-- | runtime/queries/luau/folds.scm | 3 | ||||
| -rw-r--r-- | runtime/queries/luau/highlights.scm | 305 | ||||
| -rw-r--r-- | runtime/queries/luau/indents.scm | 3 | ||||
| -rw-r--r-- | runtime/queries/luau/injections.scm | 44 | ||||
| -rw-r--r-- | runtime/queries/luau/locals.scm | 54 |
5 files changed, 409 insertions, 0 deletions
diff --git a/runtime/queries/luau/folds.scm b/runtime/queries/luau/folds.scm new file mode 100644 index 000000000..8ddaf9476 --- /dev/null +++ b/runtime/queries/luau/folds.scm @@ -0,0 +1,3 @@ +; inherits: lua + +(object_type) @fold diff --git a/runtime/queries/luau/highlights.scm b/runtime/queries/luau/highlights.scm new file mode 100644 index 000000000..f6f64b30c --- /dev/null +++ b/runtime/queries/luau/highlights.scm @@ -0,0 +1,305 @@ +; Preproc +(hash_bang_line) @keyword.directive + +; Keywords +"return" @keyword.return + +"local" @keyword + +"type" @keyword.type + +"export" @keyword.import + +(do_statement + [ + "do" + "end" + ] @keyword) + +(while_statement + [ + "while" + "do" + "end" + ] @keyword.repeat) + +(repeat_statement + [ + "repeat" + "until" + ] @keyword.repeat) + +[ + (break_statement) + (continue_statement) +] @keyword.repeat + +(if_statement + [ + "if" + "elseif" + "else" + "then" + "end" + ] @keyword.conditional) + +(if_expression + [ + "if" + "then" + ] @keyword.conditional) + +(elseif_statement + [ + "elseif" + "then" + "end" + ] @keyword.conditional) + +(elseif_clause + [ + "elseif" + "then" + ] @keyword.conditional) + +(else_statement + [ + "else" + "end" + ] @keyword.conditional) + +(else_clause + "else" @keyword.conditional) + +(for_statement + [ + "for" + "do" + "end" + ] @keyword.repeat) + +(function_declaration + [ + "function" + "end" + ] @keyword.function) + +(function_definition + [ + "function" + "end" + ] @keyword.function) + +; Operators +[ + "and" + "not" + "or" + "in" + "typeof" +] @keyword.operator + +[ + "+" + "-" + "*" + "/" + "%" + "^" + "#" + "==" + "~=" + "<=" + ">=" + "<" + ">" + "=" + "&" + "|" + "?" + "//" + ".." + "+=" + "-=" + "*=" + "/=" + "%=" + "^=" + "..=" +] @operator + +; Variables +(identifier) @variable + +; Types +(type/identifier) @type + +(generic_type + (identifier) @type) + +(builtin_type) @type.builtin + +((identifier) @type + (#lua-match? @type "^[A-Z]")) + +; Typedefs +(type_definition + "type" + . + (type) @type.definition + "=") + +; Constants +((identifier) @constant + (#lua-match? @constant "^[A-Z][A-Z_0-9]+$")) + +; Builtins +((identifier) @constant.builtin + (#eq? @constant.builtin "_VERSION")) + +((identifier) @variable.builtin + (#eq? @variable.builtin "self")) + +"..." @variable.builtin + +((identifier) @module.builtin + (#any-of? @module.builtin "_G" "debug" "io" "jit" "math" "os" "package" "string" "table" "utf8")) + +((identifier) @keyword.coroutine + (#eq? @keyword.coroutine "coroutine")) + +; Tables +(field + name: (identifier) @variable.member) + +(dot_index_expression + field: (identifier) @variable.member) + +(object_type + (identifier) @variable.member) + +(table_constructor + [ + "{" + "}" + ] @constructor) + +; Functions +(parameter + . + (identifier) @variable.parameter) + +(function_type + (identifier) @variable.parameter) + +(function_call + name: (identifier) @function.call) + +(function_declaration + name: (identifier) @function) + +(function_call + name: (dot_index_expression + field: (identifier) @function.call)) + +(function_declaration + name: (dot_index_expression + field: (identifier) @function)) + +(method_index_expression + method: (identifier) @function.method.call) + +(function_call + (identifier) @function.builtin + (#any-of? @function.builtin + ; built-in functions in Lua 5.1 + "assert" "collectgarbage" "dofile" "error" "getfenv" "getmetatable" "ipairs" "load" "loadfile" + "loadstring" "module" "next" "pairs" "pcall" "print" "rawequal" "rawget" "rawlen" "rawset" + "require" "select" "setfenv" "setmetatable" "tonumber" "tostring" "type" "unpack" "xpcall" + "typeof" "__add" "__band" "__bnot" "__bor" "__bxor" "__call" "__concat" "__div" "__eq" "__gc" + "__idiv" "__index" "__le" "__len" "__lt" "__metatable" "__mod" "__mul" "__name" "__newindex" + "__pairs" "__pow" "__shl" "__shr" "__sub" "__tostring" "__unm")) + +; Literals +(number) @number + +(string) @string + +(nil) @constant.builtin + +(vararg_expression) @variable.builtin + +[ + (false) + (true) +] @boolean + +; Punctuations +[ + ";" + ":" + "::" + "," + "." + "->" +] @punctuation.delimiter + +[ + "(" + ")" + "[" + "]" + "{" + "}" +] @punctuation.bracket + +(variable_list + attribute: (attribute + ([ + "<" + ">" + ] @punctuation.bracket + (identifier) @attribute))) + +(generic_type + [ + "<" + ">" + ] @punctuation.bracket) + +(generic_type_list + [ + "<" + ">" + ] @punctuation.bracket) + +; Comments +(comment) @comment @spell + +((comment) @comment.documentation + (#lua-match? @comment.documentation "^[-][-][-]")) + +((comment) @comment.documentation + (#lua-match? @comment.documentation "^[-][-](%s?)@")) + +; string.match("123", "%d+") +(function_call + (dot_index_expression + field: (identifier) @_method + (#any-of? @_method "find" "format" "match" "gmatch" "gsub")) + arguments: (arguments + . + (_) + . + (string + content: _ @string.regexp))) + +; ("123"):match("%d+") +(function_call + (method_index_expression + method: (identifier) @_method + (#any-of? @_method "find" "format" "match" "gmatch" "gsub")) + arguments: (arguments + . + (string + content: _ @string.regexp))) diff --git a/runtime/queries/luau/indents.scm b/runtime/queries/luau/indents.scm new file mode 100644 index 000000000..f0af4dd33 --- /dev/null +++ b/runtime/queries/luau/indents.scm @@ -0,0 +1,3 @@ +; inherits: lua + +(object_type) @indent.begin diff --git a/runtime/queries/luau/injections.scm b/runtime/queries/luau/injections.scm new file mode 100644 index 000000000..558791520 --- /dev/null +++ b/runtime/queries/luau/injections.scm @@ -0,0 +1,44 @@ +((function_call + name: [ + (identifier) @_cdef_identifier + (_ + _ + (identifier) @_cdef_identifier) + ] + arguments: (arguments + (string + content: _ @injection.content))) + (#eq? @_cdef_identifier "cdef") + (#set! injection.language "c")) + +((comment) @injection.content + (#lua-match? @injection.content "[-][-][-][%s]*@") + (#offset! @injection.content 0 3 0 0) + (#set! injection.language "luadoc")) + +; string.match("123", "%d+") +(function_call + (dot_index_expression + field: (identifier) @_method + (#any-of? @_method "find" "format" "match" "gmatch" "gsub")) + arguments: (arguments + . + (_) + . + (string + content: _ @injection.content)) + (#set! injection.language "luap")) + +; ("123"):match("%d+") +(function_call + (method_index_expression + method: (identifier) @_method + (#any-of? @_method "find" "format" "match" "gmatch" "gsub")) + arguments: (arguments + . + (string + content: _ @injection.content)) + (#set! injection.language "luap")) + +((comment) @injection.content + (#set! injection.language "comment")) diff --git a/runtime/queries/luau/locals.scm b/runtime/queries/luau/locals.scm new file mode 100644 index 000000000..d5420b4c8 --- /dev/null +++ b/runtime/queries/luau/locals.scm @@ -0,0 +1,54 @@ +; Scopes +[ + (chunk) + (do_statement) + (while_statement) + (repeat_statement) + (if_statement) + (for_statement) + (function_declaration) + (function_definition) +] @local.scope + +; References +(identifier) @local.reference + +; Definitions +(assignment_statement + (variable_list + (identifier) @local.definition.var)) + +(assignment_statement + (variable_list + (dot_index_expression + . + (_) @local.definition.associated + (identifier) @local.definition.var))) + +((function_declaration + name: (identifier) @local.definition.function) + (#set! definition.function.scope "parent")) + +((function_declaration + name: (dot_index_expression + . + (_) @local.definition.associated + (identifier) @local.definition.function)) + (#set! definition.method.scope "parent")) + +((function_declaration + name: (method_index_expression + . + (_) @local.definition.associated + (identifier) @local.definition.method)) + (#set! definition.method.scope "parent")) + +(for_generic_clause + (variable_list + (identifier) @local.definition.var)) + +(for_numeric_clause + name: (identifier) @local.definition.var) + +(parameter + (identifier) @local.definition.parameter) |
