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/highlights.scm | |
| 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/highlights.scm')
| -rw-r--r-- | runtime/queries/luau/highlights.scm | 305 |
1 files changed, 305 insertions, 0 deletions
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))) |
