march-cli 0.1.23 → 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 (237) hide show
  1. package/README.md +1 -1
  2. package/README.zh.md +1 -1
  3. package/bin/march.mjs +13 -13
  4. package/package.json +49 -43
  5. package/src/agent/command-exec-tool.mjs +172 -172
  6. package/src/agent/context-stats-tool.mjs +57 -57
  7. package/src/agent/editing/cohesion-warning.mjs +57 -0
  8. package/src/agent/editing/diff-apply.mjs +28 -28
  9. package/src/agent/editing/diff-format.mjs +57 -57
  10. package/src/agent/editing/lsp-report.mjs +69 -69
  11. package/src/agent/file-edit-tool.mjs +277 -262
  12. package/src/agent/file-tools/read-file-tool.mjs +112 -112
  13. package/src/agent/file-tools/read-image-tool.mjs +76 -76
  14. package/src/agent/model-payload-dumper.mjs +208 -208
  15. package/src/agent/pi-session/pi-session-sidecar-failure.mjs +10 -10
  16. package/src/agent/provider/payload-messages.mjs +138 -138
  17. package/src/agent/runner/codex-large-context-guard.mjs +87 -87
  18. package/src/agent/runner/codex-transport-compression.mjs +180 -180
  19. package/src/agent/runner/codex-transport-debug.mjs +113 -113
  20. package/src/agent/runner/codex-websocket-event-debug.mjs +130 -130
  21. package/src/agent/runner/fast-model.mjs +36 -36
  22. package/src/agent/runner/runner-cleanup.mjs +12 -12
  23. package/src/agent/runner/runner-init.mjs +15 -15
  24. package/src/agent/runner/runner-session-state.mjs +40 -40
  25. package/src/agent/runner/runner-utils.mjs +24 -24
  26. package/src/agent/runner.mjs +299 -299
  27. package/src/agent/runtime/ipc/ipc-peer.mjs +99 -99
  28. package/src/agent/runtime/ipc/process-ipc-transport.mjs +16 -16
  29. package/src/agent/runtime/remote-runner-client.mjs +73 -73
  30. package/src/agent/runtime/remote-ui-client.mjs +20 -20
  31. package/src/agent/runtime/runner-ipc-target.mjs +125 -125
  32. package/src/agent/runtime/runner-process-client.mjs +47 -47
  33. package/src/agent/runtime/runner-process-entry.mjs +11 -11
  34. package/src/agent/runtime/runner-process-factory.mjs +111 -108
  35. package/src/agent/runtime/runner-runtime-host.mjs +79 -79
  36. package/src/agent/runtime/runtime-factory.mjs +42 -42
  37. package/src/agent/runtime/runtime-host.mjs +34 -34
  38. package/src/agent/runtime/ui-event-bridge.mjs +95 -95
  39. package/src/agent/screen-tools/list-windows-tool.mjs +39 -39
  40. package/src/agent/screen-tools/screen-tool.mjs +49 -49
  41. package/src/agent/screen-tools/windows-screen.mjs +133 -133
  42. package/src/agent/session/session-auto-name.mjs +41 -41
  43. package/src/agent/session/session-binding.mjs +12 -12
  44. package/src/agent/session/session-options.mjs +47 -47
  45. package/src/agent/tool-names.mjs +1 -1
  46. package/src/agent/tool-result.mjs +3 -3
  47. package/src/agent/tool-summary.mjs +112 -112
  48. package/src/agent/tools.mjs +58 -58
  49. package/src/agent/turn/turn-events.mjs +111 -111
  50. package/src/agent/turn/turn-logging.mjs +30 -30
  51. package/src/agent/turn/turn-runner.mjs +196 -196
  52. package/src/agent/vision-capability.mjs +14 -14
  53. package/src/auth/login-command.mjs +90 -90
  54. package/src/auth/storage.mjs +34 -34
  55. package/src/cli/args.mjs +96 -79
  56. package/src/cli/commands/copy-command.mjs +87 -87
  57. package/src/cli/commands/export-command.mjs +206 -206
  58. package/src/cli/commands/extensions-command.mjs +53 -53
  59. package/src/cli/commands/help-command.mjs +7 -7
  60. package/src/cli/commands/model-command.mjs +141 -141
  61. package/src/cli/commands/paste-image-command.mjs +43 -43
  62. package/src/cli/commands/provider-command.mjs +59 -59
  63. package/src/cli/commands/status-command.mjs +196 -194
  64. package/src/cli/commands/thinking-command.mjs +87 -87
  65. package/src/cli/fallback-ui.mjs +156 -156
  66. package/src/cli/input/attachment-tokens.mjs +20 -20
  67. package/src/cli/input/autocomplete.mjs +74 -74
  68. package/src/cli/input/external-editor.mjs +39 -39
  69. package/src/cli/input/file-search/index.mjs +160 -160
  70. package/src/cli/input/history-store.mjs +35 -35
  71. package/src/cli/input/image-clipboard.mjs +55 -55
  72. package/src/cli/input/keybinding-dispatch.mjs +76 -76
  73. package/src/cli/input/keybindings.mjs +96 -96
  74. package/src/cli/input/mode-state.mjs +43 -43
  75. package/src/cli/input/prompt-templates.mjs +84 -84
  76. package/src/cli/input/select-with-keyboard.mjs +86 -86
  77. package/src/cli/permissions.mjs +103 -103
  78. package/src/cli/repl-commands.mjs +86 -86
  79. package/src/cli/repl-loop.mjs +183 -183
  80. package/src/cli/selector-list.mjs +21 -21
  81. package/src/cli/session/pi-session-switch-command.mjs +41 -41
  82. package/src/cli/session/session-command.mjs +23 -23
  83. package/src/cli/session/session-list-command.mjs +68 -68
  84. package/src/cli/session/session-name-command.mjs +26 -26
  85. package/src/cli/session/session-source-command.mjs +89 -89
  86. package/src/cli/session/session-switch-command.mjs +1 -1
  87. package/src/cli/shell/shell-command.mjs +55 -55
  88. package/src/cli/shell/shell-drawer-controls.mjs +33 -33
  89. package/src/cli/shell/shell-drawer.mjs +192 -192
  90. package/src/cli/shell/shell-split-layout.mjs +70 -70
  91. package/src/cli/slash-commands.mjs +192 -192
  92. package/src/cli/startup/create-runtime-runner.mjs +61 -61
  93. package/src/cli/startup/runtime-close.mjs +23 -23
  94. package/src/cli/startup/startup-banner.mjs +71 -71
  95. package/src/cli/startup/startup-session.mjs +51 -51
  96. package/src/cli/status-line-updater.mjs +75 -75
  97. package/src/cli/tool-output.mjs +9 -9
  98. package/src/cli/tui/editor/external-editor-runner.mjs +24 -24
  99. package/src/cli/tui/input/mouse-selection-controller.mjs +91 -91
  100. package/src/cli/tui/input/mouse-tracking.mjs +20 -20
  101. package/src/cli/tui/layout/main-pane-layout.mjs +47 -47
  102. package/src/cli/tui/layout/safe-render-boundary.mjs +46 -46
  103. package/src/cli/tui/markdown-renderer.mjs +285 -285
  104. package/src/cli/tui/output/scroll-state.mjs +79 -79
  105. package/src/cli/tui/output/text-line-renderer.mjs +50 -50
  106. package/src/cli/tui/output/tool-card-renderer.mjs +59 -59
  107. package/src/cli/tui/output/visible-lines.mjs +8 -8
  108. package/src/cli/tui/output-buffer.mjs +293 -293
  109. package/src/cli/tui/permission-request-ui.mjs +18 -18
  110. package/src/cli/tui/recall-rendering.mjs +28 -25
  111. package/src/cli/tui/render/render-scheduler.mjs +26 -26
  112. package/src/cli/tui/render/stream-delta-buffer.mjs +46 -46
  113. package/src/cli/tui/select/editor-select-list.mjs +111 -111
  114. package/src/cli/tui/selection-screen.mjs +269 -269
  115. package/src/cli/tui/status/retry-status.mjs +72 -72
  116. package/src/cli/tui/status/spinner-status.mjs +42 -42
  117. package/src/cli/tui/status/status-bar.mjs +225 -225
  118. package/src/cli/tui/syntax/highlighting.mjs +260 -260
  119. package/src/cli/tui/syntax/languages.mjs +91 -91
  120. package/src/cli/tui/syntax/tree-sitter/bash.highlights.scm +261 -261
  121. package/src/cli/tui/syntax/tree-sitter/c.highlights.scm +341 -341
  122. package/src/cli/tui/syntax/tree-sitter/cpp.highlights.scm +268 -268
  123. package/src/cli/tui/syntax/tree-sitter/csharp.highlights.scm +577 -577
  124. package/src/cli/tui/syntax/tree-sitter/css.highlights.scm +109 -109
  125. package/src/cli/tui/syntax/tree-sitter/diff.highlights.scm +49 -49
  126. package/src/cli/tui/syntax/tree-sitter/go.highlights.scm +254 -254
  127. package/src/cli/tui/syntax/tree-sitter/html.highlights.scm +13 -13
  128. package/src/cli/tui/syntax/tree-sitter/java.highlights.scm +330 -330
  129. package/src/cli/tui/syntax/tree-sitter/json.highlights.scm +38 -38
  130. package/src/cli/tui/syntax/tree-sitter/php.highlights.scm +203 -203
  131. package/src/cli/tui/syntax/tree-sitter/python.highlights.scm +137 -137
  132. package/src/cli/tui/syntax/tree-sitter/ruby.highlights.scm +309 -309
  133. package/src/cli/tui/syntax/tree-sitter/rust.highlights.scm +531 -531
  134. package/src/cli/tui/syntax/tree-sitter/toml.highlights.scm +39 -39
  135. package/src/cli/tui/syntax/tree-sitter/tsx.highlights.scm +35 -35
  136. package/src/cli/tui/syntax/tree-sitter/typescript.highlights.scm +35 -35
  137. package/src/cli/tui/syntax/tree-sitter/yaml.highlights.scm +99 -99
  138. package/src/cli/tui/tool-rendering.mjs +87 -87
  139. package/src/cli/tui/tui-diff-rendering.mjs +157 -157
  140. package/src/cli/tui/tui-handlers.mjs +111 -111
  141. package/src/cli/tui/tui-input-controller.mjs +61 -61
  142. package/src/cli/tui/ui-theme.mjs +157 -157
  143. package/src/cli/ui.mjs +297 -297
  144. package/src/config/config-json.mjs +108 -84
  145. package/src/config/dotenv.mjs +20 -20
  146. package/src/config/features.mjs +75 -75
  147. package/src/config/loader.mjs +156 -143
  148. package/src/config/settings-command.mjs +97 -97
  149. package/src/context/engine.mjs +199 -198
  150. package/src/context/injections.mjs +26 -26
  151. package/src/context/profiles.mjs +39 -39
  152. package/src/context/project-context.mjs +20 -20
  153. package/src/context/session-status.mjs +25 -17
  154. package/src/context/shell-layers.mjs +23 -23
  155. package/src/context/system-core/base.md +50 -50
  156. package/src/context/system-core/prompts/deepseek-v4-pro.md +3 -3
  157. package/src/context/system-core/prompts/default.md +3 -3
  158. package/src/context/system-core.mjs +35 -35
  159. package/src/debug/logger.mjs +141 -141
  160. package/src/debug/model-context-dumper.mjs +52 -52
  161. package/src/extensions/discovery.mjs +40 -40
  162. package/src/extensions/lifecycle-adapter.mjs +210 -210
  163. package/src/extensions/lifecycle-manifest.mjs +69 -69
  164. package/src/image-gen/index.mjs +7 -7
  165. package/src/image-gen/provider.mjs +231 -231
  166. package/src/image-gen/tool.mjs +84 -84
  167. package/src/lsp/client.mjs +257 -257
  168. package/src/lsp/diagnostic-store.mjs +42 -42
  169. package/src/lsp/diagnostics-format.mjs +72 -72
  170. package/src/lsp/managed-node-server.mjs +99 -99
  171. package/src/lsp/path-match.mjs +10 -10
  172. package/src/lsp/server-definitions.mjs +188 -188
  173. package/src/lsp/servers.mjs +165 -165
  174. package/src/lsp/service.mjs +110 -110
  175. package/src/lsp/status-message.mjs +9 -9
  176. package/src/lsp/typescript-project-resolver.mjs +186 -186
  177. package/src/main.mjs +294 -299
  178. package/src/mcp/client.mjs +195 -195
  179. package/src/mcp/config.mjs +130 -130
  180. package/src/mcp/index.mjs +48 -48
  181. package/src/mcp/tools.mjs +98 -98
  182. package/src/memory/command.mjs +120 -0
  183. package/src/memory/markdown/markdown-delete.mjs +23 -23
  184. package/src/memory/markdown/markdown-format.mjs +128 -128
  185. package/src/memory/markdown/markdown-recall.mjs +28 -28
  186. package/src/memory/markdown/ripgrep.mjs +16 -16
  187. package/src/memory/markdown/sqlite-index.mjs +87 -87
  188. package/src/memory/markdown-store.mjs +272 -286
  189. package/src/memory/markdown-tools.mjs +174 -103
  190. package/src/memory/remote/client.mjs +68 -0
  191. package/src/memory/remote/config.mjs +52 -0
  192. package/src/memory/remote/server.mjs +99 -0
  193. package/src/memory/search.mjs +183 -0
  194. package/src/network/environment.mjs +131 -131
  195. package/src/notification/desktop-notifier.mjs +262 -262
  196. package/src/platform/open-file.mjs +28 -28
  197. package/src/platform/spawn-command.mjs +27 -27
  198. package/src/provider/accept-command.mjs +89 -89
  199. package/src/provider/command.mjs +21 -21
  200. package/src/provider/config-command.mjs +129 -129
  201. package/src/provider/custom-provider.mjs +113 -113
  202. package/src/provider/hosted-tools.mjs +111 -111
  203. package/src/provider/presets.mjs +72 -72
  204. package/src/provider/share-command.mjs +79 -79
  205. package/src/provider/share-payload.mjs +52 -52
  206. package/src/session/attachment-display.mjs +16 -16
  207. package/src/session/attachment-references.mjs +65 -65
  208. package/src/session/attachments.mjs +140 -140
  209. package/src/session/persist.mjs +1 -1
  210. package/src/session/pi-manager.mjs +34 -34
  211. package/src/session/session-utils.mjs +16 -16
  212. package/src/session/sidecar-sync.mjs +19 -19
  213. package/src/session/sidecar.mjs +69 -69
  214. package/src/session/transcript.mjs +83 -83
  215. package/src/session/tree.mjs +42 -42
  216. package/src/shell/cli-runtime.mjs +11 -11
  217. package/src/shell/hints.mjs +12 -12
  218. package/src/shell/node-pty-adapter.mjs +81 -81
  219. package/src/shell/runtime-state.mjs +126 -126
  220. package/src/shell/runtime.mjs +252 -252
  221. package/src/shell/screen-buffer.mjs +136 -136
  222. package/src/shell/tool-read.mjs +74 -74
  223. package/src/shell/tools.mjs +299 -299
  224. package/src/supergrok/actions/image-generate.mjs +60 -60
  225. package/src/supergrok/actions/search.mjs +78 -78
  226. package/src/supergrok/auth.mjs +36 -36
  227. package/src/supergrok/constants.mjs +18 -18
  228. package/src/supergrok/oauth-provider.mjs +278 -278
  229. package/src/supergrok/provider.mjs +35 -35
  230. package/src/supergrok/response.mjs +76 -76
  231. package/src/supergrok/tool.mjs +61 -61
  232. package/src/text/ansi.mjs +3 -3
  233. package/src/web/config-command.mjs +43 -43
  234. package/src/web/fetch.mjs +78 -78
  235. package/src/web/presets.mjs +16 -16
  236. package/src/web/search.mjs +83 -83
  237. 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))))