march-cli 0.1.24 → 0.1.26

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 +51 -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,531 +1,531 @@
1
- ; Forked from https://github.com/tree-sitter/tree-sitter-rust
2
- ; Copyright (c) 2017 Maxim Sokolov
3
- ; Licensed under the MIT license.
4
- ; Identifier conventions
5
- (shebang) @keyword.directive
6
-
7
- (identifier) @variable
8
-
9
- ((identifier) @type
10
- (#lua-match? @type "^[A-Z]"))
11
-
12
- (const_item
13
- name: (identifier) @constant)
14
-
15
- ; Assume all-caps names are constants
16
- ((identifier) @constant
17
- (#lua-match? @constant "^[A-Z][A-Z%d_]*$"))
18
-
19
- ; Other identifiers
20
- (type_identifier) @type
21
-
22
- (primitive_type) @type.builtin
23
-
24
- (field_identifier) @variable.member
25
-
26
- (shorthand_field_identifier) @variable.member
27
-
28
- (shorthand_field_initializer
29
- (identifier) @variable.member)
30
-
31
- (mod_item
32
- name: (identifier) @module)
33
-
34
- (self) @variable.builtin
35
-
36
- "_" @character.special
37
-
38
- (label
39
- [
40
- "'"
41
- (identifier)
42
- ] @label)
43
-
44
- ; Function definitions
45
- (function_item
46
- (identifier) @function)
47
-
48
- (function_signature_item
49
- (identifier) @function)
50
-
51
- (parameter
52
- [
53
- (identifier)
54
- "_"
55
- ] @variable.parameter)
56
-
57
- (parameter
58
- (ref_pattern
59
- [
60
- (mut_pattern
61
- (identifier) @variable.parameter)
62
- (identifier) @variable.parameter
63
- ]))
64
-
65
- (closure_parameters
66
- (_) @variable.parameter)
67
-
68
- ; Function calls
69
- (call_expression
70
- function: (identifier) @function.call)
71
-
72
- (call_expression
73
- function: (scoped_identifier
74
- (identifier) @function.call .))
75
-
76
- (call_expression
77
- function: (field_expression
78
- field: (field_identifier) @function.call))
79
-
80
- (generic_function
81
- function: (identifier) @function.call)
82
-
83
- (generic_function
84
- function: (scoped_identifier
85
- name: (identifier) @function.call))
86
-
87
- (generic_function
88
- function: (field_expression
89
- field: (field_identifier) @function.call))
90
-
91
- ; Assume other uppercase names are enum constructors
92
- ((field_identifier) @constant
93
- (#lua-match? @constant "^[A-Z]"))
94
-
95
- (enum_variant
96
- name: (identifier) @constant)
97
-
98
- ; Assume that uppercase names in paths are types
99
- (scoped_identifier
100
- path: (identifier) @module)
101
-
102
- (scoped_identifier
103
- (scoped_identifier
104
- name: (identifier) @module))
105
-
106
- (scoped_type_identifier
107
- path: (identifier) @module)
108
-
109
- (scoped_type_identifier
110
- path: (identifier) @type
111
- (#lua-match? @type "^[A-Z]"))
112
-
113
- (scoped_type_identifier
114
- (scoped_identifier
115
- name: (identifier) @module))
116
-
117
- ((scoped_identifier
118
- path: (identifier) @type)
119
- (#lua-match? @type "^[A-Z]"))
120
-
121
- ((scoped_identifier
122
- name: (identifier) @type)
123
- (#lua-match? @type "^[A-Z]"))
124
-
125
- ((scoped_identifier
126
- name: (identifier) @constant)
127
- (#lua-match? @constant "^[A-Z][A-Z%d_]*$"))
128
-
129
- ((scoped_identifier
130
- path: (identifier) @type
131
- name: (identifier) @constant)
132
- (#lua-match? @type "^[A-Z]")
133
- (#lua-match? @constant "^[A-Z]"))
134
-
135
- ((scoped_type_identifier
136
- path: (identifier) @type
137
- name: (type_identifier) @constant)
138
- (#lua-match? @type "^[A-Z]")
139
- (#lua-match? @constant "^[A-Z]"))
140
-
141
- [
142
- (crate)
143
- (super)
144
- ] @module
145
-
146
- (scoped_use_list
147
- path: (identifier) @module)
148
-
149
- (scoped_use_list
150
- path: (scoped_identifier
151
- (identifier) @module))
152
-
153
- (use_list
154
- (scoped_identifier
155
- (identifier) @module
156
- .
157
- (_)))
158
-
159
- (use_list
160
- (identifier) @type
161
- (#lua-match? @type "^[A-Z]"))
162
-
163
- (use_as_clause
164
- alias: (identifier) @type
165
- (#lua-match? @type "^[A-Z]"))
166
-
167
- ; Correct enum constructors
168
- (call_expression
169
- function: (scoped_identifier
170
- "::"
171
- name: (identifier) @constant)
172
- (#lua-match? @constant "^[A-Z]"))
173
-
174
- ; Assume uppercase names in a match arm are constants.
175
- ((match_arm
176
- pattern: (match_pattern
177
- (identifier) @constant))
178
- (#lua-match? @constant "^[A-Z]"))
179
-
180
- ((match_arm
181
- pattern: (match_pattern
182
- (scoped_identifier
183
- name: (identifier) @constant)))
184
- (#lua-match? @constant "^[A-Z]"))
185
-
186
- ((identifier) @constant.builtin
187
- (#any-of? @constant.builtin "Some" "None" "Ok" "Err"))
188
-
189
- ; Macro definitions
190
- "$" @function.macro
191
-
192
- (metavariable) @function.macro
193
-
194
- (macro_definition
195
- "macro_rules!" @function.macro)
196
-
197
- ; Attribute macros
198
- (attribute_item
199
- (attribute
200
- (identifier) @function.macro))
201
-
202
- (inner_attribute_item
203
- (attribute
204
- (identifier) @function.macro))
205
-
206
- (attribute
207
- (scoped_identifier
208
- (identifier) @function.macro .))
209
-
210
- ; Derive macros (assume all arguments are types)
211
- ; (attribute
212
- ; (identifier) @_name
213
- ; arguments: (attribute (attribute (identifier) @type))
214
- ; (#eq? @_name "derive"))
215
- ; Function-like macros
216
- (macro_invocation
217
- macro: (identifier) @function.macro)
218
-
219
- (macro_invocation
220
- macro: (scoped_identifier
221
- (identifier) @function.macro .))
222
-
223
- ; Literals
224
- (boolean_literal) @boolean
225
-
226
- (integer_literal) @number
227
-
228
- (float_literal) @number.float
229
-
230
- [
231
- (raw_string_literal)
232
- (string_literal)
233
- ] @string
234
-
235
- (escape_sequence) @string.escape
236
-
237
- (char_literal) @character
238
-
239
- ; Keywords
240
- [
241
- "use"
242
- "mod"
243
- ] @keyword.import
244
-
245
- (use_as_clause
246
- "as" @keyword.import)
247
-
248
- [
249
- "default"
250
- "impl"
251
- "let"
252
- "move"
253
- "unsafe"
254
- "where"
255
- ] @keyword
256
-
257
- [
258
- "enum"
259
- "struct"
260
- "union"
261
- "trait"
262
- "type"
263
- ] @keyword.type
264
-
265
- [
266
- "async"
267
- "await"
268
- "gen"
269
- ] @keyword.coroutine
270
-
271
- "try" @keyword.exception
272
-
273
- [
274
- "ref"
275
- "pub"
276
- "raw"
277
- (mutable_specifier)
278
- "const"
279
- "static"
280
- "dyn"
281
- "extern"
282
- ] @keyword.modifier
283
-
284
- (lifetime
285
- "'" @keyword.modifier)
286
-
287
- (lifetime
288
- (identifier) @attribute)
289
-
290
- (lifetime
291
- (identifier) @attribute.builtin
292
- (#any-of? @attribute.builtin "static" "_"))
293
-
294
- "fn" @keyword.function
295
-
296
- [
297
- "return"
298
- "yield"
299
- ] @keyword.return
300
-
301
- (type_cast_expression
302
- "as" @keyword.operator)
303
-
304
- (qualified_type
305
- "as" @keyword.operator)
306
-
307
- (use_list
308
- (self) @module)
309
-
310
- (scoped_use_list
311
- (self) @module)
312
-
313
- (scoped_identifier
314
- [
315
- (crate)
316
- (super)
317
- (self)
318
- ] @module)
319
-
320
- (visibility_modifier
321
- [
322
- (crate)
323
- (super)
324
- (self)
325
- ] @module)
326
-
327
- [
328
- "if"
329
- "else"
330
- "match"
331
- ] @keyword.conditional
332
-
333
- [
334
- "break"
335
- "continue"
336
- "in"
337
- "loop"
338
- "while"
339
- ] @keyword.repeat
340
-
341
- "for" @keyword
342
-
343
- (for_expression
344
- "for" @keyword.repeat)
345
-
346
- ; Operators
347
- [
348
- "!"
349
- "!="
350
- "%"
351
- "%="
352
- "&"
353
- "&&"
354
- "&="
355
- "*"
356
- "*="
357
- "+"
358
- "+="
359
- "-"
360
- "-="
361
- ".."
362
- "..="
363
- "..."
364
- "/"
365
- "/="
366
- "<"
367
- "<<"
368
- "<<="
369
- "<="
370
- "="
371
- "=="
372
- ">"
373
- ">="
374
- ">>"
375
- ">>="
376
- "?"
377
- "@"
378
- "^"
379
- "^="
380
- "|"
381
- "|="
382
- "||"
383
- ] @operator
384
-
385
- (use_wildcard
386
- "*" @character.special)
387
-
388
- (remaining_field_pattern
389
- ".." @character.special)
390
-
391
- (range_pattern
392
- [
393
- ".."
394
- "..="
395
- "..."
396
- ] @character.special)
397
-
398
- ; Punctuation
399
- [
400
- "("
401
- ")"
402
- "["
403
- "]"
404
- "{"
405
- "}"
406
- ] @punctuation.bracket
407
-
408
- (closure_parameters
409
- "|" @punctuation.bracket)
410
-
411
- (type_arguments
412
- [
413
- "<"
414
- ">"
415
- ] @punctuation.bracket)
416
-
417
- (type_parameters
418
- [
419
- "<"
420
- ">"
421
- ] @punctuation.bracket)
422
-
423
- (bracketed_type
424
- [
425
- "<"
426
- ">"
427
- ] @punctuation.bracket)
428
-
429
- (for_lifetimes
430
- [
431
- "<"
432
- ">"
433
- ] @punctuation.bracket)
434
-
435
- [
436
- ","
437
- "."
438
- ":"
439
- "::"
440
- ";"
441
- "->"
442
- "=>"
443
- ] @punctuation.delimiter
444
-
445
- (attribute_item
446
- "#" @punctuation.special)
447
-
448
- (inner_attribute_item
449
- [
450
- "!"
451
- "#"
452
- ] @punctuation.special)
453
-
454
- (macro_invocation
455
- "!" @function.macro)
456
-
457
- (never_type
458
- "!" @type.builtin)
459
-
460
- (macro_invocation
461
- macro: (identifier) @_identifier @keyword.exception
462
- "!" @keyword.exception
463
- (#eq? @_identifier "panic"))
464
-
465
- (macro_invocation
466
- macro: (identifier) @_identifier @keyword.exception
467
- "!" @keyword.exception
468
- (#contains? @_identifier "assert"))
469
-
470
- (macro_invocation
471
- macro: (identifier) @_identifier @keyword.debug
472
- "!" @keyword.debug
473
- (#eq? @_identifier "dbg"))
474
-
475
- ; Comments
476
- [
477
- (line_comment)
478
- (block_comment)
479
- (outer_doc_comment_marker)
480
- (inner_doc_comment_marker)
481
- ] @comment @spell
482
-
483
- (line_comment
484
- (doc_comment)) @comment.documentation
485
-
486
- (block_comment
487
- (doc_comment)) @comment.documentation
488
-
489
- (call_expression
490
- function: (scoped_identifier
491
- path: (identifier) @_regex
492
- (#any-of? @_regex "Regex" "ByteRegexBuilder")
493
- name: (identifier) @_new
494
- (#eq? @_new "new"))
495
- arguments: (arguments
496
- (raw_string_literal
497
- (string_content) @string.regexp)))
498
-
499
- (call_expression
500
- function: (scoped_identifier
501
- path: (scoped_identifier
502
- (identifier) @_regex
503
- (#any-of? @_regex "Regex" "ByteRegexBuilder") .)
504
- name: (identifier) @_new
505
- (#eq? @_new "new"))
506
- arguments: (arguments
507
- (raw_string_literal
508
- (string_content) @string.regexp)))
509
-
510
- (call_expression
511
- function: (scoped_identifier
512
- path: (identifier) @_regex
513
- (#any-of? @_regex "RegexSet" "RegexSetBuilder")
514
- name: (identifier) @_new
515
- (#eq? @_new "new"))
516
- arguments: (arguments
517
- (array_expression
518
- (raw_string_literal
519
- (string_content) @string.regexp))))
520
-
521
- (call_expression
522
- function: (scoped_identifier
523
- path: (scoped_identifier
524
- (identifier) @_regex
525
- (#any-of? @_regex "RegexSet" "RegexSetBuilder") .)
526
- name: (identifier) @_new
527
- (#eq? @_new "new"))
528
- arguments: (arguments
529
- (array_expression
530
- (raw_string_literal
531
- (string_content) @string.regexp))))
1
+ ; Forked from https://github.com/tree-sitter/tree-sitter-rust
2
+ ; Copyright (c) 2017 Maxim Sokolov
3
+ ; Licensed under the MIT license.
4
+ ; Identifier conventions
5
+ (shebang) @keyword.directive
6
+
7
+ (identifier) @variable
8
+
9
+ ((identifier) @type
10
+ (#lua-match? @type "^[A-Z]"))
11
+
12
+ (const_item
13
+ name: (identifier) @constant)
14
+
15
+ ; Assume all-caps names are constants
16
+ ((identifier) @constant
17
+ (#lua-match? @constant "^[A-Z][A-Z%d_]*$"))
18
+
19
+ ; Other identifiers
20
+ (type_identifier) @type
21
+
22
+ (primitive_type) @type.builtin
23
+
24
+ (field_identifier) @variable.member
25
+
26
+ (shorthand_field_identifier) @variable.member
27
+
28
+ (shorthand_field_initializer
29
+ (identifier) @variable.member)
30
+
31
+ (mod_item
32
+ name: (identifier) @module)
33
+
34
+ (self) @variable.builtin
35
+
36
+ "_" @character.special
37
+
38
+ (label
39
+ [
40
+ "'"
41
+ (identifier)
42
+ ] @label)
43
+
44
+ ; Function definitions
45
+ (function_item
46
+ (identifier) @function)
47
+
48
+ (function_signature_item
49
+ (identifier) @function)
50
+
51
+ (parameter
52
+ [
53
+ (identifier)
54
+ "_"
55
+ ] @variable.parameter)
56
+
57
+ (parameter
58
+ (ref_pattern
59
+ [
60
+ (mut_pattern
61
+ (identifier) @variable.parameter)
62
+ (identifier) @variable.parameter
63
+ ]))
64
+
65
+ (closure_parameters
66
+ (_) @variable.parameter)
67
+
68
+ ; Function calls
69
+ (call_expression
70
+ function: (identifier) @function.call)
71
+
72
+ (call_expression
73
+ function: (scoped_identifier
74
+ (identifier) @function.call .))
75
+
76
+ (call_expression
77
+ function: (field_expression
78
+ field: (field_identifier) @function.call))
79
+
80
+ (generic_function
81
+ function: (identifier) @function.call)
82
+
83
+ (generic_function
84
+ function: (scoped_identifier
85
+ name: (identifier) @function.call))
86
+
87
+ (generic_function
88
+ function: (field_expression
89
+ field: (field_identifier) @function.call))
90
+
91
+ ; Assume other uppercase names are enum constructors
92
+ ((field_identifier) @constant
93
+ (#lua-match? @constant "^[A-Z]"))
94
+
95
+ (enum_variant
96
+ name: (identifier) @constant)
97
+
98
+ ; Assume that uppercase names in paths are types
99
+ (scoped_identifier
100
+ path: (identifier) @module)
101
+
102
+ (scoped_identifier
103
+ (scoped_identifier
104
+ name: (identifier) @module))
105
+
106
+ (scoped_type_identifier
107
+ path: (identifier) @module)
108
+
109
+ (scoped_type_identifier
110
+ path: (identifier) @type
111
+ (#lua-match? @type "^[A-Z]"))
112
+
113
+ (scoped_type_identifier
114
+ (scoped_identifier
115
+ name: (identifier) @module))
116
+
117
+ ((scoped_identifier
118
+ path: (identifier) @type)
119
+ (#lua-match? @type "^[A-Z]"))
120
+
121
+ ((scoped_identifier
122
+ name: (identifier) @type)
123
+ (#lua-match? @type "^[A-Z]"))
124
+
125
+ ((scoped_identifier
126
+ name: (identifier) @constant)
127
+ (#lua-match? @constant "^[A-Z][A-Z%d_]*$"))
128
+
129
+ ((scoped_identifier
130
+ path: (identifier) @type
131
+ name: (identifier) @constant)
132
+ (#lua-match? @type "^[A-Z]")
133
+ (#lua-match? @constant "^[A-Z]"))
134
+
135
+ ((scoped_type_identifier
136
+ path: (identifier) @type
137
+ name: (type_identifier) @constant)
138
+ (#lua-match? @type "^[A-Z]")
139
+ (#lua-match? @constant "^[A-Z]"))
140
+
141
+ [
142
+ (crate)
143
+ (super)
144
+ ] @module
145
+
146
+ (scoped_use_list
147
+ path: (identifier) @module)
148
+
149
+ (scoped_use_list
150
+ path: (scoped_identifier
151
+ (identifier) @module))
152
+
153
+ (use_list
154
+ (scoped_identifier
155
+ (identifier) @module
156
+ .
157
+ (_)))
158
+
159
+ (use_list
160
+ (identifier) @type
161
+ (#lua-match? @type "^[A-Z]"))
162
+
163
+ (use_as_clause
164
+ alias: (identifier) @type
165
+ (#lua-match? @type "^[A-Z]"))
166
+
167
+ ; Correct enum constructors
168
+ (call_expression
169
+ function: (scoped_identifier
170
+ "::"
171
+ name: (identifier) @constant)
172
+ (#lua-match? @constant "^[A-Z]"))
173
+
174
+ ; Assume uppercase names in a match arm are constants.
175
+ ((match_arm
176
+ pattern: (match_pattern
177
+ (identifier) @constant))
178
+ (#lua-match? @constant "^[A-Z]"))
179
+
180
+ ((match_arm
181
+ pattern: (match_pattern
182
+ (scoped_identifier
183
+ name: (identifier) @constant)))
184
+ (#lua-match? @constant "^[A-Z]"))
185
+
186
+ ((identifier) @constant.builtin
187
+ (#any-of? @constant.builtin "Some" "None" "Ok" "Err"))
188
+
189
+ ; Macro definitions
190
+ "$" @function.macro
191
+
192
+ (metavariable) @function.macro
193
+
194
+ (macro_definition
195
+ "macro_rules!" @function.macro)
196
+
197
+ ; Attribute macros
198
+ (attribute_item
199
+ (attribute
200
+ (identifier) @function.macro))
201
+
202
+ (inner_attribute_item
203
+ (attribute
204
+ (identifier) @function.macro))
205
+
206
+ (attribute
207
+ (scoped_identifier
208
+ (identifier) @function.macro .))
209
+
210
+ ; Derive macros (assume all arguments are types)
211
+ ; (attribute
212
+ ; (identifier) @_name
213
+ ; arguments: (attribute (attribute (identifier) @type))
214
+ ; (#eq? @_name "derive"))
215
+ ; Function-like macros
216
+ (macro_invocation
217
+ macro: (identifier) @function.macro)
218
+
219
+ (macro_invocation
220
+ macro: (scoped_identifier
221
+ (identifier) @function.macro .))
222
+
223
+ ; Literals
224
+ (boolean_literal) @boolean
225
+
226
+ (integer_literal) @number
227
+
228
+ (float_literal) @number.float
229
+
230
+ [
231
+ (raw_string_literal)
232
+ (string_literal)
233
+ ] @string
234
+
235
+ (escape_sequence) @string.escape
236
+
237
+ (char_literal) @character
238
+
239
+ ; Keywords
240
+ [
241
+ "use"
242
+ "mod"
243
+ ] @keyword.import
244
+
245
+ (use_as_clause
246
+ "as" @keyword.import)
247
+
248
+ [
249
+ "default"
250
+ "impl"
251
+ "let"
252
+ "move"
253
+ "unsafe"
254
+ "where"
255
+ ] @keyword
256
+
257
+ [
258
+ "enum"
259
+ "struct"
260
+ "union"
261
+ "trait"
262
+ "type"
263
+ ] @keyword.type
264
+
265
+ [
266
+ "async"
267
+ "await"
268
+ "gen"
269
+ ] @keyword.coroutine
270
+
271
+ "try" @keyword.exception
272
+
273
+ [
274
+ "ref"
275
+ "pub"
276
+ "raw"
277
+ (mutable_specifier)
278
+ "const"
279
+ "static"
280
+ "dyn"
281
+ "extern"
282
+ ] @keyword.modifier
283
+
284
+ (lifetime
285
+ "'" @keyword.modifier)
286
+
287
+ (lifetime
288
+ (identifier) @attribute)
289
+
290
+ (lifetime
291
+ (identifier) @attribute.builtin
292
+ (#any-of? @attribute.builtin "static" "_"))
293
+
294
+ "fn" @keyword.function
295
+
296
+ [
297
+ "return"
298
+ "yield"
299
+ ] @keyword.return
300
+
301
+ (type_cast_expression
302
+ "as" @keyword.operator)
303
+
304
+ (qualified_type
305
+ "as" @keyword.operator)
306
+
307
+ (use_list
308
+ (self) @module)
309
+
310
+ (scoped_use_list
311
+ (self) @module)
312
+
313
+ (scoped_identifier
314
+ [
315
+ (crate)
316
+ (super)
317
+ (self)
318
+ ] @module)
319
+
320
+ (visibility_modifier
321
+ [
322
+ (crate)
323
+ (super)
324
+ (self)
325
+ ] @module)
326
+
327
+ [
328
+ "if"
329
+ "else"
330
+ "match"
331
+ ] @keyword.conditional
332
+
333
+ [
334
+ "break"
335
+ "continue"
336
+ "in"
337
+ "loop"
338
+ "while"
339
+ ] @keyword.repeat
340
+
341
+ "for" @keyword
342
+
343
+ (for_expression
344
+ "for" @keyword.repeat)
345
+
346
+ ; Operators
347
+ [
348
+ "!"
349
+ "!="
350
+ "%"
351
+ "%="
352
+ "&"
353
+ "&&"
354
+ "&="
355
+ "*"
356
+ "*="
357
+ "+"
358
+ "+="
359
+ "-"
360
+ "-="
361
+ ".."
362
+ "..="
363
+ "..."
364
+ "/"
365
+ "/="
366
+ "<"
367
+ "<<"
368
+ "<<="
369
+ "<="
370
+ "="
371
+ "=="
372
+ ">"
373
+ ">="
374
+ ">>"
375
+ ">>="
376
+ "?"
377
+ "@"
378
+ "^"
379
+ "^="
380
+ "|"
381
+ "|="
382
+ "||"
383
+ ] @operator
384
+
385
+ (use_wildcard
386
+ "*" @character.special)
387
+
388
+ (remaining_field_pattern
389
+ ".." @character.special)
390
+
391
+ (range_pattern
392
+ [
393
+ ".."
394
+ "..="
395
+ "..."
396
+ ] @character.special)
397
+
398
+ ; Punctuation
399
+ [
400
+ "("
401
+ ")"
402
+ "["
403
+ "]"
404
+ "{"
405
+ "}"
406
+ ] @punctuation.bracket
407
+
408
+ (closure_parameters
409
+ "|" @punctuation.bracket)
410
+
411
+ (type_arguments
412
+ [
413
+ "<"
414
+ ">"
415
+ ] @punctuation.bracket)
416
+
417
+ (type_parameters
418
+ [
419
+ "<"
420
+ ">"
421
+ ] @punctuation.bracket)
422
+
423
+ (bracketed_type
424
+ [
425
+ "<"
426
+ ">"
427
+ ] @punctuation.bracket)
428
+
429
+ (for_lifetimes
430
+ [
431
+ "<"
432
+ ">"
433
+ ] @punctuation.bracket)
434
+
435
+ [
436
+ ","
437
+ "."
438
+ ":"
439
+ "::"
440
+ ";"
441
+ "->"
442
+ "=>"
443
+ ] @punctuation.delimiter
444
+
445
+ (attribute_item
446
+ "#" @punctuation.special)
447
+
448
+ (inner_attribute_item
449
+ [
450
+ "!"
451
+ "#"
452
+ ] @punctuation.special)
453
+
454
+ (macro_invocation
455
+ "!" @function.macro)
456
+
457
+ (never_type
458
+ "!" @type.builtin)
459
+
460
+ (macro_invocation
461
+ macro: (identifier) @_identifier @keyword.exception
462
+ "!" @keyword.exception
463
+ (#eq? @_identifier "panic"))
464
+
465
+ (macro_invocation
466
+ macro: (identifier) @_identifier @keyword.exception
467
+ "!" @keyword.exception
468
+ (#contains? @_identifier "assert"))
469
+
470
+ (macro_invocation
471
+ macro: (identifier) @_identifier @keyword.debug
472
+ "!" @keyword.debug
473
+ (#eq? @_identifier "dbg"))
474
+
475
+ ; Comments
476
+ [
477
+ (line_comment)
478
+ (block_comment)
479
+ (outer_doc_comment_marker)
480
+ (inner_doc_comment_marker)
481
+ ] @comment @spell
482
+
483
+ (line_comment
484
+ (doc_comment)) @comment.documentation
485
+
486
+ (block_comment
487
+ (doc_comment)) @comment.documentation
488
+
489
+ (call_expression
490
+ function: (scoped_identifier
491
+ path: (identifier) @_regex
492
+ (#any-of? @_regex "Regex" "ByteRegexBuilder")
493
+ name: (identifier) @_new
494
+ (#eq? @_new "new"))
495
+ arguments: (arguments
496
+ (raw_string_literal
497
+ (string_content) @string.regexp)))
498
+
499
+ (call_expression
500
+ function: (scoped_identifier
501
+ path: (scoped_identifier
502
+ (identifier) @_regex
503
+ (#any-of? @_regex "Regex" "ByteRegexBuilder") .)
504
+ name: (identifier) @_new
505
+ (#eq? @_new "new"))
506
+ arguments: (arguments
507
+ (raw_string_literal
508
+ (string_content) @string.regexp)))
509
+
510
+ (call_expression
511
+ function: (scoped_identifier
512
+ path: (identifier) @_regex
513
+ (#any-of? @_regex "RegexSet" "RegexSetBuilder")
514
+ name: (identifier) @_new
515
+ (#eq? @_new "new"))
516
+ arguments: (arguments
517
+ (array_expression
518
+ (raw_string_literal
519
+ (string_content) @string.regexp))))
520
+
521
+ (call_expression
522
+ function: (scoped_identifier
523
+ path: (scoped_identifier
524
+ (identifier) @_regex
525
+ (#any-of? @_regex "RegexSet" "RegexSetBuilder") .)
526
+ name: (identifier) @_new
527
+ (#eq? @_new "new"))
528
+ arguments: (arguments
529
+ (array_expression
530
+ (raw_string_literal
531
+ (string_content) @string.regexp))))