123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266 |
- ; Keywords
- "return" @keyword.return
- [
- "goto"
- "in"
- "local"
- ] @keyword
- (break_statement) @keyword
- (do_statement
- [
- "do"
- "end"
- ] @keyword)
- (while_statement
- [
- "while"
- "do"
- "end"
- ] @keyword.repeat)
- (repeat_statement
- [
- "repeat"
- "until"
- ] @keyword.repeat)
- (if_statement
- [
- "if"
- "elseif"
- "else"
- "then"
- "end"
- ] @keyword.conditional)
- (elseif_statement
- [
- "elseif"
- "then"
- "end"
- ] @keyword.conditional)
- (else_statement
- [
- "else"
- "end"
- ] @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"
- ] @keyword.operator
- [
- "+"
- "-"
- "*"
- "/"
- "%"
- "^"
- "#"
- "=="
- "~="
- "<="
- ">="
- "<"
- ">"
- "="
- "&"
- "~"
- "|"
- "<<"
- ">>"
- "//"
- ".."
- ] @operator
- ; Punctuations
- [
- ";"
- ":"
- "::"
- ","
- "."
- ] @punctuation.delimiter
- ; Brackets
- [
- "("
- ")"
- "["
- "]"
- "{"
- "}"
- ] @punctuation.bracket
- ; Variables
- (identifier) @variable
- ((identifier) @constant.builtin
- (#eq? @constant.builtin "_VERSION"))
- ((identifier) @variable.builtin
- (#eq? @variable.builtin "self"))
- ((identifier) @module.builtin
- (#any-of? @module.builtin "_G" "debug" "io" "jit" "math" "os" "package" "string" "table" "utf8"))
- ((identifier) @keyword.coroutine
- (#eq? @keyword.coroutine "coroutine"))
- (variable_list
- (attribute
- "<" @punctuation.bracket
- (identifier) @attribute
- ">" @punctuation.bracket))
- ; Labels
- (label_statement
- (identifier) @label)
- (goto_statement
- (identifier) @label)
- ; Constants
- ((identifier) @constant
- (#lua-match? @constant "^[A-Z][A-Z_0-9]*$"))
- (nil) @constant.builtin
- [
- (false)
- (true)
- ] @boolean
- ; Tables
- (field
- name: (identifier) @property)
- (dot_index_expression
- field: (identifier) @variable.member)
- (table_constructor
- [
- "{"
- "}"
- ] @constructor)
- ; Functions
- (parameters
- (identifier) @variable.parameter)
- (vararg_expression) @variable.parameter.builtin
- (function_declaration
- name: [
- (identifier) @function
- (dot_index_expression
- field: (identifier) @function)
- ])
- (function_declaration
- name: (method_index_expression
- method: (identifier) @function.method))
- (assignment_statement
- (variable_list
- .
- name: [
- (identifier) @function
- (dot_index_expression
- field: (identifier) @function)
- ])
- (expression_list
- .
- value: (function_definition)))
- (table_constructor
- (field
- name: (identifier) @function
- value: (function_definition)))
- (function_call
- name: [
- (identifier) @function.call
- (dot_index_expression
- field: (identifier) @function.call)
- (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"
- "__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"))
- ; Others
- (comment) @comment @spell
- ((comment) @comment.documentation
- (#lua-match? @comment.documentation "^[-][-][-]"))
- ((comment) @comment.documentation
- (#lua-match? @comment.documentation "^[-][-](%s?)@"))
- (hash_bang_line) @keyword.directive
- (number) @number
- (string) @string
- (escape_sequence) @string.escape
- ; string.match("123", "%d+")
- (function_call
- (dot_index_expression
- field: (identifier) @_method
- (#any-of? @_method "find" "match" "gmatch" "gsub"))
- arguments: (arguments
- .
- (_)
- .
- (string
- content: (string_content) @string.regexp)))
- ;("123"):match("%d+")
- (function_call
- (method_index_expression
- method: (identifier) @_method
- (#any-of? @_method "find" "match" "gmatch" "gsub"))
- arguments: (arguments
- .
- (string
- content: (string_content) @string.regexp)))
|