summaryrefslogtreecommitdiff
path: root/queries/lua.scm
diff options
context:
space:
mode:
Diffstat (limited to 'queries/lua.scm')
-rw-r--r--queries/lua.scm172
1 files changed, 172 insertions, 0 deletions
diff --git a/queries/lua.scm b/queries/lua.scm
new file mode 100644
index 0000000..f5c042c
--- /dev/null
+++ b/queries/lua.scm
@@ -0,0 +1,172 @@
1;;; Highlighting for lua
2
3;;; Builtins
4;; Keywords
5
6[(if_start)
7 (if_then)
8 (if_elseif)
9 (if_else)
10 (if_end)] @keyword.conditional
11
12[(for_start)
13 (for_in)
14 (for_do)
15 (for_end)] @keyword.repeat
16
17[(while_start)
18 (while_do)
19 (while_end)] @keyword.repeat
20
21[(repeat_start)
22 (repeat_until)] @keyword.repeat
23
24(break_statement) @keyword.repeat
25
26[(return_statement)
27 (module_return_statement)] @keyword.return
28
29[(do_start)
30 (do_end)] @keyword
31
32; [
33; "goto"
34; ] @keyword
35
36;; Operators
37
38; TODO: I think I've made a bunch of these nodes.
39; we might be able to just use those!
40
41[
42 "not"
43 "and"
44 "or"] @keyword.operator
45
46["="
47 "~="
48 "=="
49 "<="
50 ">="
51 "<"
52 ">"
53 "+"
54 "-"
55 "%"
56 "/"
57 "//"
58 "*"
59 "^"
60 "&"
61 "~"
62 "|"
63 ">>"
64 "<<"
65 ".."
66 "#"] @operator
67
68
69
70;; Punctuation
71["," "."] @punctuation.delimiter
72
73;; Brackets
74[(left_paren)
75 (right_paren)
76 "["
77 "]"
78 "{"
79 "}"] @punctuation.bracket
80
81;; Variables
82(identifier) @variable
83(
84 (identifier) @variable.builtin
85 (#match? @variable.builtin "self"))
86
87; (preproc_call
88; directive: (preproc_directive) @_u
89; argument: (_) @constant
90; (#eq? @_u "#undef"))
91
92;; Constants
93(boolean) @boolean
94(nil) @constant.builtin
95(ellipsis) @constant ;; "..."
96(local) @keyword
97
98;; Functions
99(function_call_paren) @function.bracket
100
101[
102 (function_start)
103 (function_end)] @keyword.function
104
105(emmy_type) @type
106(emmy_literal) @string
107(emmy_parameter
108 (identifier) @parameter
109 description: (_)? @comment) @comment
110
111(emmy_class) @comment
112(emmy_field name: (_) @property) @comment
113(emmy_function_parameter
114 name: (_) @parameter)
115
116(emmy_type_dictionary_value key: (identifier) @property)
117
118(emmy_note) @comment
119(emmy_see) @comment
120
121; TODO: Make the container so we can still highlight the beginning of the line
122; (emmy_eval_container) @comment
123; (_emmy_eval_container) @comment
124
125(emmy_return) @comment
126
127; TODO: returns
128
129(emmy_header) @comment
130(emmy_ignore) @comment
131(documentation_brief) @comment
132
133(documentation_command) @comment
134
135(function_call
136 [
137 ((identifier)+ @identifier . (identifier) @function.call . (function_call_paren))
138 ((identifier) @function.call.lua . (function_call_paren))])
139
140(function_call
141 prefix: (identifier) @function.call.lua
142 args: (string_argument) @string)
143
144(function_call
145 prefix: (identifier) @function.call.lua
146 args: (table_argument))
147
148; (function [(function_name) (identifier)] @function)
149; (function ["function" "end"] @keyword.function)
150; (local_function [(function_name) (identifier)] @function)
151; (local_function ["function" "end"] @keyword.function)
152; (function_definition ["function" "end"] @keyword.function)
153
154; TODO: Do I have replacements for these.
155; (property_identifier) @property
156; (method) @method
157
158; (function_call (identifier) @function . (arguments))
159; (function_call (field (property_identifier) @function) . (arguments))
160
161;; Parameters
162; (parameters (identifier) @parameter)
163
164;; Nodes
165; (table ["{" "}"] @constructor)
166(comment) @comment
167(string) @string
168(number) @number
169; (label_statement) @label
170
171;; Error
172(ERROR) @error \ No newline at end of file