238 lines
3.1 KiB
Scheme
238 lines
3.1 KiB
Scheme
; 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
|