march-cli 0.1.24 → 0.1.25

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (234) hide show
  1. package/bin/march.mjs +13 -13
  2. package/package.json +49 -49
  3. package/src/agent/command-exec-tool.mjs +172 -172
  4. package/src/agent/context-stats-tool.mjs +57 -57
  5. package/src/agent/editing/diff-apply.mjs +28 -28
  6. package/src/agent/editing/diff-format.mjs +57 -57
  7. package/src/agent/editing/lsp-report.mjs +69 -69
  8. package/src/agent/file-edit-tool.mjs +250 -250
  9. package/src/agent/file-tools/read-file-tool.mjs +112 -112
  10. package/src/agent/file-tools/read-image-tool.mjs +76 -76
  11. package/src/agent/model-payload-dumper.mjs +208 -208
  12. package/src/agent/pi-session/pi-session-sidecar-failure.mjs +10 -10
  13. package/src/agent/provider/payload-messages.mjs +138 -138
  14. package/src/agent/runner/codex-large-context-guard.mjs +87 -87
  15. package/src/agent/runner/codex-transport-compression.mjs +180 -180
  16. package/src/agent/runner/codex-transport-debug.mjs +113 -113
  17. package/src/agent/runner/codex-websocket-event-debug.mjs +130 -130
  18. package/src/agent/runner/fast-model.mjs +36 -36
  19. package/src/agent/runner/runner-cleanup.mjs +12 -12
  20. package/src/agent/runner/runner-init.mjs +15 -15
  21. package/src/agent/runner/runner-session-state.mjs +40 -40
  22. package/src/agent/runner/runner-utils.mjs +24 -24
  23. package/src/agent/runner.mjs +299 -299
  24. package/src/agent/runtime/ipc/ipc-peer.mjs +99 -99
  25. package/src/agent/runtime/ipc/process-ipc-transport.mjs +16 -16
  26. package/src/agent/runtime/remote-runner-client.mjs +73 -73
  27. package/src/agent/runtime/remote-ui-client.mjs +20 -20
  28. package/src/agent/runtime/runner-ipc-target.mjs +125 -125
  29. package/src/agent/runtime/runner-process-client.mjs +47 -47
  30. package/src/agent/runtime/runner-process-entry.mjs +11 -11
  31. package/src/agent/runtime/runner-process-factory.mjs +111 -108
  32. package/src/agent/runtime/runner-runtime-host.mjs +79 -79
  33. package/src/agent/runtime/runtime-factory.mjs +42 -42
  34. package/src/agent/runtime/runtime-host.mjs +34 -34
  35. package/src/agent/runtime/ui-event-bridge.mjs +95 -95
  36. package/src/agent/screen-tools/list-windows-tool.mjs +39 -39
  37. package/src/agent/screen-tools/screen-tool.mjs +49 -49
  38. package/src/agent/screen-tools/windows-screen.mjs +133 -133
  39. package/src/agent/session/session-auto-name.mjs +41 -41
  40. package/src/agent/session/session-binding.mjs +12 -12
  41. package/src/agent/session/session-options.mjs +47 -47
  42. package/src/agent/tool-names.mjs +1 -1
  43. package/src/agent/tool-result.mjs +3 -3
  44. package/src/agent/tool-summary.mjs +112 -112
  45. package/src/agent/tools.mjs +58 -58
  46. package/src/agent/turn/turn-events.mjs +111 -111
  47. package/src/agent/turn/turn-logging.mjs +30 -30
  48. package/src/agent/turn/turn-runner.mjs +196 -196
  49. package/src/agent/vision-capability.mjs +14 -14
  50. package/src/auth/login-command.mjs +90 -90
  51. package/src/auth/storage.mjs +34 -34
  52. package/src/cli/args.mjs +96 -79
  53. package/src/cli/commands/copy-command.mjs +87 -87
  54. package/src/cli/commands/export-command.mjs +206 -206
  55. package/src/cli/commands/extensions-command.mjs +53 -53
  56. package/src/cli/commands/help-command.mjs +7 -7
  57. package/src/cli/commands/model-command.mjs +141 -141
  58. package/src/cli/commands/paste-image-command.mjs +43 -43
  59. package/src/cli/commands/provider-command.mjs +59 -59
  60. package/src/cli/commands/status-command.mjs +196 -194
  61. package/src/cli/commands/thinking-command.mjs +87 -87
  62. package/src/cli/fallback-ui.mjs +156 -156
  63. package/src/cli/input/attachment-tokens.mjs +20 -20
  64. package/src/cli/input/autocomplete.mjs +74 -74
  65. package/src/cli/input/external-editor.mjs +39 -39
  66. package/src/cli/input/file-search/index.mjs +160 -160
  67. package/src/cli/input/history-store.mjs +35 -35
  68. package/src/cli/input/image-clipboard.mjs +55 -55
  69. package/src/cli/input/keybinding-dispatch.mjs +76 -76
  70. package/src/cli/input/keybindings.mjs +96 -96
  71. package/src/cli/input/mode-state.mjs +43 -43
  72. package/src/cli/input/prompt-templates.mjs +84 -84
  73. package/src/cli/input/select-with-keyboard.mjs +86 -86
  74. package/src/cli/permissions.mjs +103 -103
  75. package/src/cli/repl-commands.mjs +86 -86
  76. package/src/cli/repl-loop.mjs +183 -183
  77. package/src/cli/selector-list.mjs +21 -21
  78. package/src/cli/session/pi-session-switch-command.mjs +41 -41
  79. package/src/cli/session/session-command.mjs +23 -23
  80. package/src/cli/session/session-list-command.mjs +68 -68
  81. package/src/cli/session/session-name-command.mjs +26 -26
  82. package/src/cli/session/session-source-command.mjs +89 -89
  83. package/src/cli/session/session-switch-command.mjs +1 -1
  84. package/src/cli/shell/shell-command.mjs +55 -55
  85. package/src/cli/shell/shell-drawer-controls.mjs +33 -33
  86. package/src/cli/shell/shell-drawer.mjs +192 -192
  87. package/src/cli/shell/shell-split-layout.mjs +70 -70
  88. package/src/cli/slash-commands.mjs +192 -192
  89. package/src/cli/startup/create-runtime-runner.mjs +61 -61
  90. package/src/cli/startup/runtime-close.mjs +23 -23
  91. package/src/cli/startup/startup-banner.mjs +71 -71
  92. package/src/cli/startup/startup-session.mjs +51 -51
  93. package/src/cli/status-line-updater.mjs +75 -75
  94. package/src/cli/tool-output.mjs +9 -9
  95. package/src/cli/tui/editor/external-editor-runner.mjs +24 -24
  96. package/src/cli/tui/input/mouse-selection-controller.mjs +91 -91
  97. package/src/cli/tui/input/mouse-tracking.mjs +20 -20
  98. package/src/cli/tui/layout/main-pane-layout.mjs +47 -47
  99. package/src/cli/tui/layout/safe-render-boundary.mjs +46 -46
  100. package/src/cli/tui/markdown-renderer.mjs +285 -285
  101. package/src/cli/tui/output/scroll-state.mjs +79 -79
  102. package/src/cli/tui/output/text-line-renderer.mjs +50 -50
  103. package/src/cli/tui/output/tool-card-renderer.mjs +59 -59
  104. package/src/cli/tui/output/visible-lines.mjs +8 -8
  105. package/src/cli/tui/output-buffer.mjs +293 -293
  106. package/src/cli/tui/permission-request-ui.mjs +18 -18
  107. package/src/cli/tui/recall-rendering.mjs +28 -25
  108. package/src/cli/tui/render/render-scheduler.mjs +26 -26
  109. package/src/cli/tui/render/stream-delta-buffer.mjs +46 -46
  110. package/src/cli/tui/select/editor-select-list.mjs +111 -111
  111. package/src/cli/tui/selection-screen.mjs +269 -269
  112. package/src/cli/tui/status/retry-status.mjs +72 -72
  113. package/src/cli/tui/status/spinner-status.mjs +42 -42
  114. package/src/cli/tui/status/status-bar.mjs +225 -225
  115. package/src/cli/tui/syntax/highlighting.mjs +260 -260
  116. package/src/cli/tui/syntax/languages.mjs +91 -91
  117. package/src/cli/tui/syntax/tree-sitter/bash.highlights.scm +261 -261
  118. package/src/cli/tui/syntax/tree-sitter/c.highlights.scm +341 -341
  119. package/src/cli/tui/syntax/tree-sitter/cpp.highlights.scm +268 -268
  120. package/src/cli/tui/syntax/tree-sitter/csharp.highlights.scm +577 -577
  121. package/src/cli/tui/syntax/tree-sitter/css.highlights.scm +109 -109
  122. package/src/cli/tui/syntax/tree-sitter/diff.highlights.scm +49 -49
  123. package/src/cli/tui/syntax/tree-sitter/go.highlights.scm +254 -254
  124. package/src/cli/tui/syntax/tree-sitter/html.highlights.scm +13 -13
  125. package/src/cli/tui/syntax/tree-sitter/java.highlights.scm +330 -330
  126. package/src/cli/tui/syntax/tree-sitter/json.highlights.scm +38 -38
  127. package/src/cli/tui/syntax/tree-sitter/php.highlights.scm +203 -203
  128. package/src/cli/tui/syntax/tree-sitter/python.highlights.scm +137 -137
  129. package/src/cli/tui/syntax/tree-sitter/ruby.highlights.scm +309 -309
  130. package/src/cli/tui/syntax/tree-sitter/rust.highlights.scm +531 -531
  131. package/src/cli/tui/syntax/tree-sitter/toml.highlights.scm +39 -39
  132. package/src/cli/tui/syntax/tree-sitter/tsx.highlights.scm +35 -35
  133. package/src/cli/tui/syntax/tree-sitter/typescript.highlights.scm +35 -35
  134. package/src/cli/tui/syntax/tree-sitter/yaml.highlights.scm +99 -99
  135. package/src/cli/tui/tool-rendering.mjs +87 -87
  136. package/src/cli/tui/tui-diff-rendering.mjs +157 -157
  137. package/src/cli/tui/tui-handlers.mjs +111 -111
  138. package/src/cli/tui/tui-input-controller.mjs +61 -61
  139. package/src/cli/tui/ui-theme.mjs +157 -157
  140. package/src/cli/ui.mjs +297 -297
  141. package/src/config/config-json.mjs +108 -84
  142. package/src/config/dotenv.mjs +20 -20
  143. package/src/config/features.mjs +75 -75
  144. package/src/config/loader.mjs +156 -143
  145. package/src/config/settings-command.mjs +97 -97
  146. package/src/context/engine.mjs +199 -198
  147. package/src/context/injections.mjs +26 -26
  148. package/src/context/profiles.mjs +39 -39
  149. package/src/context/project-context.mjs +20 -20
  150. package/src/context/session-status.mjs +25 -17
  151. package/src/context/shell-layers.mjs +23 -23
  152. package/src/context/system-core/base.md +50 -50
  153. package/src/context/system-core/prompts/deepseek-v4-pro.md +3 -3
  154. package/src/context/system-core/prompts/default.md +3 -3
  155. package/src/context/system-core.mjs +35 -35
  156. package/src/debug/logger.mjs +141 -141
  157. package/src/debug/model-context-dumper.mjs +52 -52
  158. package/src/extensions/discovery.mjs +40 -40
  159. package/src/extensions/lifecycle-adapter.mjs +210 -210
  160. package/src/extensions/lifecycle-manifest.mjs +69 -69
  161. package/src/image-gen/index.mjs +7 -7
  162. package/src/image-gen/provider.mjs +231 -231
  163. package/src/image-gen/tool.mjs +84 -84
  164. package/src/lsp/client.mjs +257 -257
  165. package/src/lsp/diagnostic-store.mjs +42 -42
  166. package/src/lsp/diagnostics-format.mjs +72 -72
  167. package/src/lsp/managed-node-server.mjs +99 -99
  168. package/src/lsp/path-match.mjs +10 -10
  169. package/src/lsp/server-definitions.mjs +188 -188
  170. package/src/lsp/servers.mjs +165 -165
  171. package/src/lsp/service.mjs +110 -110
  172. package/src/lsp/status-message.mjs +9 -9
  173. package/src/lsp/typescript-project-resolver.mjs +186 -186
  174. package/src/main.mjs +294 -299
  175. package/src/mcp/client.mjs +195 -195
  176. package/src/mcp/config.mjs +130 -130
  177. package/src/mcp/index.mjs +48 -48
  178. package/src/mcp/tools.mjs +98 -98
  179. package/src/memory/command.mjs +120 -0
  180. package/src/memory/markdown/markdown-delete.mjs +23 -23
  181. package/src/memory/markdown/markdown-format.mjs +128 -128
  182. package/src/memory/markdown/markdown-recall.mjs +28 -28
  183. package/src/memory/markdown/ripgrep.mjs +16 -16
  184. package/src/memory/markdown/sqlite-index.mjs +87 -87
  185. package/src/memory/markdown-store.mjs +272 -286
  186. package/src/memory/markdown-tools.mjs +174 -103
  187. package/src/memory/remote/client.mjs +68 -0
  188. package/src/memory/remote/config.mjs +52 -0
  189. package/src/memory/remote/server.mjs +99 -0
  190. package/src/memory/search.mjs +183 -0
  191. package/src/network/environment.mjs +131 -131
  192. package/src/notification/desktop-notifier.mjs +262 -262
  193. package/src/platform/open-file.mjs +28 -28
  194. package/src/platform/spawn-command.mjs +27 -27
  195. package/src/provider/accept-command.mjs +89 -89
  196. package/src/provider/command.mjs +21 -21
  197. package/src/provider/config-command.mjs +129 -129
  198. package/src/provider/custom-provider.mjs +113 -113
  199. package/src/provider/hosted-tools.mjs +111 -111
  200. package/src/provider/presets.mjs +72 -72
  201. package/src/provider/share-command.mjs +79 -79
  202. package/src/provider/share-payload.mjs +52 -52
  203. package/src/session/attachment-display.mjs +16 -16
  204. package/src/session/attachment-references.mjs +65 -65
  205. package/src/session/attachments.mjs +140 -140
  206. package/src/session/persist.mjs +1 -1
  207. package/src/session/pi-manager.mjs +34 -34
  208. package/src/session/session-utils.mjs +16 -16
  209. package/src/session/sidecar-sync.mjs +19 -19
  210. package/src/session/sidecar.mjs +69 -69
  211. package/src/session/transcript.mjs +83 -83
  212. package/src/session/tree.mjs +42 -42
  213. package/src/shell/cli-runtime.mjs +11 -11
  214. package/src/shell/hints.mjs +12 -12
  215. package/src/shell/node-pty-adapter.mjs +81 -81
  216. package/src/shell/runtime-state.mjs +126 -126
  217. package/src/shell/runtime.mjs +252 -252
  218. package/src/shell/screen-buffer.mjs +136 -136
  219. package/src/shell/tool-read.mjs +74 -74
  220. package/src/shell/tools.mjs +299 -299
  221. package/src/supergrok/actions/image-generate.mjs +60 -60
  222. package/src/supergrok/actions/search.mjs +78 -78
  223. package/src/supergrok/auth.mjs +36 -36
  224. package/src/supergrok/constants.mjs +18 -18
  225. package/src/supergrok/oauth-provider.mjs +278 -278
  226. package/src/supergrok/provider.mjs +35 -35
  227. package/src/supergrok/response.mjs +76 -76
  228. package/src/supergrok/tool.mjs +61 -61
  229. package/src/text/ansi.mjs +3 -3
  230. package/src/web/config-command.mjs +43 -43
  231. package/src/web/fetch.mjs +78 -78
  232. package/src/web/presets.mjs +16 -16
  233. package/src/web/search.mjs +83 -83
  234. package/src/web/tools.mjs +107 -107
@@ -1,309 +1,309 @@
1
- ; Variables
2
- [
3
- (identifier)
4
- (global_variable)
5
- ] @variable
6
-
7
- ; Keywords
8
- [
9
- "alias"
10
- "begin"
11
- "do"
12
- "end"
13
- "ensure"
14
- "module"
15
- "rescue"
16
- "then"
17
- ] @keyword
18
-
19
- "class" @keyword.type
20
-
21
- [
22
- "return"
23
- "yield"
24
- ] @keyword.return
25
-
26
- [
27
- "and"
28
- "or"
29
- "in"
30
- "not"
31
- ] @keyword.operator
32
-
33
- [
34
- "def"
35
- "undef"
36
- ] @keyword.function
37
-
38
- (method
39
- "end" @keyword.function)
40
-
41
- [
42
- "case"
43
- "else"
44
- "elsif"
45
- "if"
46
- "unless"
47
- "when"
48
- "then"
49
- ] @keyword.conditional
50
-
51
- (if
52
- "end" @keyword.conditional)
53
-
54
- [
55
- "for"
56
- "until"
57
- "while"
58
- "break"
59
- "redo"
60
- "retry"
61
- "next"
62
- ] @keyword.repeat
63
-
64
- (constant) @constant
65
-
66
- ((identifier) @keyword.modifier
67
- (#any-of? @keyword.modifier "private" "protected" "public"))
68
-
69
- [
70
- "rescue"
71
- "ensure"
72
- ] @keyword.exception
73
-
74
- ; Function calls
75
- "defined?" @function
76
-
77
- (call
78
- receiver: (constant)? @type
79
- method: [
80
- (identifier)
81
- (constant)
82
- ] @function.call)
83
-
84
- (program
85
- (call
86
- (identifier) @keyword.import)
87
- (#any-of? @keyword.import "require" "require_relative" "load"))
88
-
89
- ; Function definitions
90
- (alias
91
- (identifier) @function)
92
-
93
- (setter
94
- (identifier) @function)
95
-
96
- (method
97
- name: [
98
- (identifier) @function
99
- (constant) @type
100
- ])
101
-
102
- (singleton_method
103
- name: [
104
- (identifier) @function
105
- (constant) @type
106
- ])
107
-
108
- (class
109
- name: (constant) @type)
110
-
111
- (module
112
- name: (constant) @type)
113
-
114
- (superclass
115
- (constant) @type)
116
-
117
- ; Identifiers
118
- [
119
- (class_variable)
120
- (instance_variable)
121
- ] @variable.member
122
-
123
- ((identifier) @constant.builtin
124
- (#any-of? @constant.builtin
125
- "__callee__" "__dir__" "__id__" "__method__" "__send__" "__ENCODING__" "__FILE__" "__LINE__"))
126
-
127
- ((identifier) @function.builtin
128
- (#any-of? @function.builtin "attr_reader" "attr_writer" "attr_accessor" "module_function"))
129
-
130
- ((call
131
- !receiver
132
- method: (identifier) @function.builtin)
133
- (#any-of? @function.builtin "include" "extend" "prepend" "refine" "using"))
134
-
135
- ((identifier) @keyword.exception
136
- (#any-of? @keyword.exception "raise" "fail" "catch" "throw"))
137
-
138
- ((constant) @type
139
- (#not-lua-match? @type "^[A-Z0-9_]+$"))
140
-
141
- [
142
- (self)
143
- (super)
144
- ] @variable.builtin
145
-
146
- (method_parameters
147
- (identifier) @variable.parameter)
148
-
149
- (lambda_parameters
150
- (identifier) @variable.parameter)
151
-
152
- (block_parameters
153
- (identifier) @variable.parameter)
154
-
155
- (splat_parameter
156
- (identifier) @variable.parameter)
157
-
158
- (hash_splat_parameter
159
- (identifier) @variable.parameter)
160
-
161
- (optional_parameter
162
- (identifier) @variable.parameter)
163
-
164
- (destructured_parameter
165
- (identifier) @variable.parameter)
166
-
167
- (block_parameter
168
- (identifier) @variable.parameter)
169
-
170
- (keyword_parameter
171
- (identifier) @variable.parameter)
172
-
173
- ; TODO: Re-enable this once it is supported
174
- ; ((identifier) @function
175
- ; (#is-not? local))
176
- ; Literals
177
- [
178
- (string_content)
179
- (heredoc_content)
180
- "\""
181
- "`"
182
- ] @string
183
-
184
- [
185
- (heredoc_beginning)
186
- (heredoc_end)
187
- ] @label
188
-
189
- [
190
- (bare_symbol)
191
- (simple_symbol)
192
- (delimited_symbol)
193
- (hash_key_symbol)
194
- ] @string.special.symbol
195
-
196
- (regex
197
- (string_content) @string.regexp)
198
-
199
- (escape_sequence) @string.escape
200
-
201
- (integer) @number
202
-
203
- (float) @number.float
204
-
205
- [
206
- (true)
207
- (false)
208
- ] @boolean
209
-
210
- (nil) @constant.builtin
211
-
212
- (comment) @comment @spell
213
-
214
- ((program
215
- .
216
- (comment) @keyword.directive @nospell)
217
- (#lua-match? @keyword.directive "^#!/"))
218
-
219
- (program
220
- (comment)+ @comment.documentation
221
- (class))
222
-
223
- (module
224
- (comment)+ @comment.documentation
225
- (body_statement
226
- (class)))
227
-
228
- (class
229
- (comment)+ @comment.documentation
230
- (body_statement
231
- (method)))
232
-
233
- (body_statement
234
- (comment)+ @comment.documentation
235
- (method))
236
-
237
- ; Operators
238
- [
239
- "!"
240
- "="
241
- "=="
242
- "==="
243
- "<=>"
244
- "=>"
245
- "->"
246
- ">>"
247
- "<<"
248
- ">"
249
- "<"
250
- ">="
251
- "<="
252
- "**"
253
- "*"
254
- "/"
255
- "%"
256
- "+"
257
- "-"
258
- "&"
259
- "|"
260
- "^"
261
- "&&"
262
- "||"
263
- "||="
264
- "&&="
265
- "!="
266
- "%="
267
- "+="
268
- "-="
269
- "*="
270
- "/="
271
- "=~"
272
- "!~"
273
- "?"
274
- ":"
275
- ".."
276
- "..."
277
- ] @operator
278
-
279
- [
280
- ","
281
- ";"
282
- "."
283
- "&."
284
- "::"
285
- ] @punctuation.delimiter
286
-
287
- (regex
288
- "/" @punctuation.bracket)
289
-
290
- (pair
291
- ":" @punctuation.delimiter)
292
-
293
- [
294
- "("
295
- ")"
296
- "["
297
- "]"
298
- "{"
299
- "}"
300
- "%w("
301
- "%i("
302
- ] @punctuation.bracket
303
-
304
- (block_parameters
305
- "|" @punctuation.bracket)
306
-
307
- (interpolation
308
- "#{" @punctuation.special
309
- "}" @punctuation.special)
1
+ ; Variables
2
+ [
3
+ (identifier)
4
+ (global_variable)
5
+ ] @variable
6
+
7
+ ; Keywords
8
+ [
9
+ "alias"
10
+ "begin"
11
+ "do"
12
+ "end"
13
+ "ensure"
14
+ "module"
15
+ "rescue"
16
+ "then"
17
+ ] @keyword
18
+
19
+ "class" @keyword.type
20
+
21
+ [
22
+ "return"
23
+ "yield"
24
+ ] @keyword.return
25
+
26
+ [
27
+ "and"
28
+ "or"
29
+ "in"
30
+ "not"
31
+ ] @keyword.operator
32
+
33
+ [
34
+ "def"
35
+ "undef"
36
+ ] @keyword.function
37
+
38
+ (method
39
+ "end" @keyword.function)
40
+
41
+ [
42
+ "case"
43
+ "else"
44
+ "elsif"
45
+ "if"
46
+ "unless"
47
+ "when"
48
+ "then"
49
+ ] @keyword.conditional
50
+
51
+ (if
52
+ "end" @keyword.conditional)
53
+
54
+ [
55
+ "for"
56
+ "until"
57
+ "while"
58
+ "break"
59
+ "redo"
60
+ "retry"
61
+ "next"
62
+ ] @keyword.repeat
63
+
64
+ (constant) @constant
65
+
66
+ ((identifier) @keyword.modifier
67
+ (#any-of? @keyword.modifier "private" "protected" "public"))
68
+
69
+ [
70
+ "rescue"
71
+ "ensure"
72
+ ] @keyword.exception
73
+
74
+ ; Function calls
75
+ "defined?" @function
76
+
77
+ (call
78
+ receiver: (constant)? @type
79
+ method: [
80
+ (identifier)
81
+ (constant)
82
+ ] @function.call)
83
+
84
+ (program
85
+ (call
86
+ (identifier) @keyword.import)
87
+ (#any-of? @keyword.import "require" "require_relative" "load"))
88
+
89
+ ; Function definitions
90
+ (alias
91
+ (identifier) @function)
92
+
93
+ (setter
94
+ (identifier) @function)
95
+
96
+ (method
97
+ name: [
98
+ (identifier) @function
99
+ (constant) @type
100
+ ])
101
+
102
+ (singleton_method
103
+ name: [
104
+ (identifier) @function
105
+ (constant) @type
106
+ ])
107
+
108
+ (class
109
+ name: (constant) @type)
110
+
111
+ (module
112
+ name: (constant) @type)
113
+
114
+ (superclass
115
+ (constant) @type)
116
+
117
+ ; Identifiers
118
+ [
119
+ (class_variable)
120
+ (instance_variable)
121
+ ] @variable.member
122
+
123
+ ((identifier) @constant.builtin
124
+ (#any-of? @constant.builtin
125
+ "__callee__" "__dir__" "__id__" "__method__" "__send__" "__ENCODING__" "__FILE__" "__LINE__"))
126
+
127
+ ((identifier) @function.builtin
128
+ (#any-of? @function.builtin "attr_reader" "attr_writer" "attr_accessor" "module_function"))
129
+
130
+ ((call
131
+ !receiver
132
+ method: (identifier) @function.builtin)
133
+ (#any-of? @function.builtin "include" "extend" "prepend" "refine" "using"))
134
+
135
+ ((identifier) @keyword.exception
136
+ (#any-of? @keyword.exception "raise" "fail" "catch" "throw"))
137
+
138
+ ((constant) @type
139
+ (#not-lua-match? @type "^[A-Z0-9_]+$"))
140
+
141
+ [
142
+ (self)
143
+ (super)
144
+ ] @variable.builtin
145
+
146
+ (method_parameters
147
+ (identifier) @variable.parameter)
148
+
149
+ (lambda_parameters
150
+ (identifier) @variable.parameter)
151
+
152
+ (block_parameters
153
+ (identifier) @variable.parameter)
154
+
155
+ (splat_parameter
156
+ (identifier) @variable.parameter)
157
+
158
+ (hash_splat_parameter
159
+ (identifier) @variable.parameter)
160
+
161
+ (optional_parameter
162
+ (identifier) @variable.parameter)
163
+
164
+ (destructured_parameter
165
+ (identifier) @variable.parameter)
166
+
167
+ (block_parameter
168
+ (identifier) @variable.parameter)
169
+
170
+ (keyword_parameter
171
+ (identifier) @variable.parameter)
172
+
173
+ ; TODO: Re-enable this once it is supported
174
+ ; ((identifier) @function
175
+ ; (#is-not? local))
176
+ ; Literals
177
+ [
178
+ (string_content)
179
+ (heredoc_content)
180
+ "\""
181
+ "`"
182
+ ] @string
183
+
184
+ [
185
+ (heredoc_beginning)
186
+ (heredoc_end)
187
+ ] @label
188
+
189
+ [
190
+ (bare_symbol)
191
+ (simple_symbol)
192
+ (delimited_symbol)
193
+ (hash_key_symbol)
194
+ ] @string.special.symbol
195
+
196
+ (regex
197
+ (string_content) @string.regexp)
198
+
199
+ (escape_sequence) @string.escape
200
+
201
+ (integer) @number
202
+
203
+ (float) @number.float
204
+
205
+ [
206
+ (true)
207
+ (false)
208
+ ] @boolean
209
+
210
+ (nil) @constant.builtin
211
+
212
+ (comment) @comment @spell
213
+
214
+ ((program
215
+ .
216
+ (comment) @keyword.directive @nospell)
217
+ (#lua-match? @keyword.directive "^#!/"))
218
+
219
+ (program
220
+ (comment)+ @comment.documentation
221
+ (class))
222
+
223
+ (module
224
+ (comment)+ @comment.documentation
225
+ (body_statement
226
+ (class)))
227
+
228
+ (class
229
+ (comment)+ @comment.documentation
230
+ (body_statement
231
+ (method)))
232
+
233
+ (body_statement
234
+ (comment)+ @comment.documentation
235
+ (method))
236
+
237
+ ; Operators
238
+ [
239
+ "!"
240
+ "="
241
+ "=="
242
+ "==="
243
+ "<=>"
244
+ "=>"
245
+ "->"
246
+ ">>"
247
+ "<<"
248
+ ">"
249
+ "<"
250
+ ">="
251
+ "<="
252
+ "**"
253
+ "*"
254
+ "/"
255
+ "%"
256
+ "+"
257
+ "-"
258
+ "&"
259
+ "|"
260
+ "^"
261
+ "&&"
262
+ "||"
263
+ "||="
264
+ "&&="
265
+ "!="
266
+ "%="
267
+ "+="
268
+ "-="
269
+ "*="
270
+ "/="
271
+ "=~"
272
+ "!~"
273
+ "?"
274
+ ":"
275
+ ".."
276
+ "..."
277
+ ] @operator
278
+
279
+ [
280
+ ","
281
+ ";"
282
+ "."
283
+ "&."
284
+ "::"
285
+ ] @punctuation.delimiter
286
+
287
+ (regex
288
+ "/" @punctuation.bracket)
289
+
290
+ (pair
291
+ ":" @punctuation.delimiter)
292
+
293
+ [
294
+ "("
295
+ ")"
296
+ "["
297
+ "]"
298
+ "{"
299
+ "}"
300
+ "%w("
301
+ "%i("
302
+ ] @punctuation.bracket
303
+
304
+ (block_parameters
305
+ "|" @punctuation.bracket)
306
+
307
+ (interpolation
308
+ "#{" @punctuation.special
309
+ "}" @punctuation.special)