march-cli 0.1.21 → 0.1.23

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