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,341 +1,341 @@
1
- ; Lower priority to prefer @variable.parameter when identifier appears in parameter_declaration.
2
- ((identifier) @variable
3
- (#set! priority 95))
4
-
5
- (preproc_def
6
- (preproc_arg) @variable)
7
-
8
- [
9
- "default"
10
- "goto"
11
- "asm"
12
- "__asm__"
13
- ] @keyword
14
-
15
- [
16
- "enum"
17
- "struct"
18
- "union"
19
- "typedef"
20
- ] @keyword.type
21
-
22
- [
23
- "sizeof"
24
- "offsetof"
25
- ] @keyword.operator
26
-
27
- (alignof_expression
28
- .
29
- _ @keyword.operator)
30
-
31
- "return" @keyword.return
32
-
33
- [
34
- "while"
35
- "for"
36
- "do"
37
- "continue"
38
- "break"
39
- ] @keyword.repeat
40
-
41
- [
42
- "if"
43
- "else"
44
- "case"
45
- "switch"
46
- ] @keyword.conditional
47
-
48
- [
49
- "#if"
50
- "#ifdef"
51
- "#ifndef"
52
- "#else"
53
- "#elif"
54
- "#endif"
55
- "#elifdef"
56
- "#elifndef"
57
- (preproc_directive)
58
- ] @keyword.directive
59
-
60
- "#define" @keyword.directive.define
61
-
62
- "#include" @keyword.import
63
-
64
- [
65
- ";"
66
- ":"
67
- ","
68
- "."
69
- "::"
70
- ] @punctuation.delimiter
71
-
72
- "..." @punctuation.special
73
-
74
- [
75
- "("
76
- ")"
77
- "["
78
- "]"
79
- "{"
80
- "}"
81
- ] @punctuation.bracket
82
-
83
- [
84
- "="
85
- "-"
86
- "*"
87
- "/"
88
- "+"
89
- "%"
90
- "~"
91
- "|"
92
- "&"
93
- "^"
94
- "<<"
95
- ">>"
96
- "->"
97
- "<"
98
- "<="
99
- ">="
100
- ">"
101
- "=="
102
- "!="
103
- "!"
104
- "&&"
105
- "||"
106
- "-="
107
- "+="
108
- "*="
109
- "/="
110
- "%="
111
- "|="
112
- "&="
113
- "^="
114
- ">>="
115
- "<<="
116
- "--"
117
- "++"
118
- ] @operator
119
-
120
- ; Make sure the comma operator is given a highlight group after the comma
121
- ; punctuator so the operator is highlighted properly.
122
- (comma_expression
123
- "," @operator)
124
-
125
- [
126
- (true)
127
- (false)
128
- ] @boolean
129
-
130
- (conditional_expression
131
- [
132
- "?"
133
- ":"
134
- ] @keyword.conditional.ternary)
135
-
136
- (string_literal) @string
137
-
138
- (system_lib_string) @string
139
-
140
- (escape_sequence) @string.escape
141
-
142
- (null) @constant.builtin
143
-
144
- (number_literal) @number
145
-
146
- (char_literal) @character
147
-
148
- (preproc_defined) @function.macro
149
-
150
- ((field_expression
151
- (field_identifier) @property) @_parent
152
- (#not-has-parent? @_parent template_method function_declarator call_expression))
153
-
154
- (field_designator) @property
155
-
156
- ((field_identifier) @property
157
- (#has-ancestor? @property field_declaration)
158
- (#not-has-ancestor? @property function_declarator))
159
-
160
- (statement_identifier) @label
161
-
162
- (declaration
163
- type: (type_identifier) @_type
164
- declarator: (identifier) @label
165
- (#eq? @_type "__label__"))
166
-
167
- [
168
- (type_identifier)
169
- (type_descriptor)
170
- ] @type
171
-
172
- (storage_class_specifier) @keyword.modifier
173
-
174
- [
175
- (type_qualifier)
176
- (gnu_asm_qualifier)
177
- "__extension__"
178
- ] @keyword.modifier
179
-
180
- (linkage_specification
181
- "extern" @keyword.modifier)
182
-
183
- (type_definition
184
- declarator: (type_identifier) @type.definition)
185
-
186
- (primitive_type) @type.builtin
187
-
188
- (sized_type_specifier
189
- _ @type.builtin
190
- type: _?)
191
-
192
- ((identifier) @constant
193
- (#lua-match? @constant "^[A-Z][A-Z0-9_]+$"))
194
-
195
- (preproc_def
196
- (preproc_arg) @constant
197
- (#lua-match? @constant "^[A-Z][A-Z0-9_]+$"))
198
-
199
- (enumerator
200
- name: (identifier) @constant)
201
-
202
- (case_statement
203
- value: (identifier) @constant)
204
-
205
- ((identifier) @constant.builtin
206
- ; format-ignore
207
- (#any-of? @constant.builtin
208
- "stderr" "stdin" "stdout"
209
- "__FILE__" "__LINE__" "__DATE__" "__TIME__"
210
- "__STDC__" "__STDC_VERSION__" "__STDC_HOSTED__"
211
- "__cplusplus" "__OBJC__" "__ASSEMBLER__"
212
- "__BASE_FILE__" "__FILE_NAME__" "__INCLUDE_LEVEL__"
213
- "__TIMESTAMP__" "__clang__" "__clang_major__"
214
- "__clang_minor__" "__clang_patchlevel__"
215
- "__clang_version__" "__clang_literal_encoding__"
216
- "__clang_wide_literal_encoding__"
217
- "__FUNCTION__" "__func__" "__PRETTY_FUNCTION__"
218
- "__VA_ARGS__" "__VA_OPT__"))
219
-
220
- (preproc_def
221
- (preproc_arg) @constant.builtin
222
- ; format-ignore
223
- (#any-of? @constant.builtin
224
- "stderr" "stdin" "stdout"
225
- "__FILE__" "__LINE__" "__DATE__" "__TIME__"
226
- "__STDC__" "__STDC_VERSION__" "__STDC_HOSTED__"
227
- "__cplusplus" "__OBJC__" "__ASSEMBLER__"
228
- "__BASE_FILE__" "__FILE_NAME__" "__INCLUDE_LEVEL__"
229
- "__TIMESTAMP__" "__clang__" "__clang_major__"
230
- "__clang_minor__" "__clang_patchlevel__"
231
- "__clang_version__" "__clang_literal_encoding__"
232
- "__clang_wide_literal_encoding__"
233
- "__FUNCTION__" "__func__" "__PRETTY_FUNCTION__"
234
- "__VA_ARGS__" "__VA_OPT__"))
235
-
236
- (attribute_specifier
237
- (argument_list
238
- (identifier) @variable.builtin))
239
-
240
- (attribute_specifier
241
- (argument_list
242
- (call_expression
243
- function: (identifier) @variable.builtin)))
244
-
245
- ((call_expression
246
- function: (identifier) @function.builtin)
247
- (#lua-match? @function.builtin "^__builtin_"))
248
-
249
- ((call_expression
250
- function: (identifier) @function.builtin)
251
- (#has-ancestor? @function.builtin attribute_specifier))
252
-
253
- ; Preproc def / undef
254
- (preproc_def
255
- name: (_) @constant.macro)
256
-
257
- (preproc_call
258
- directive: (preproc_directive) @_u
259
- argument: (_) @constant.macro
260
- (#eq? @_u "#undef"))
261
-
262
- (preproc_ifdef
263
- name: (identifier) @constant.macro)
264
-
265
- (preproc_elifdef
266
- name: (identifier) @constant.macro)
267
-
268
- (preproc_defined
269
- (identifier) @constant.macro)
270
-
271
- (call_expression
272
- function: (identifier) @function.call)
273
-
274
- (call_expression
275
- function: (field_expression
276
- field: (field_identifier) @function.call))
277
-
278
- (function_declarator
279
- declarator: (identifier) @function)
280
-
281
- (function_declarator
282
- declarator: (parenthesized_declarator
283
- (pointer_declarator
284
- declarator: (field_identifier) @function)))
285
-
286
- (preproc_function_def
287
- name: (identifier) @function.macro)
288
-
289
- (comment) @comment @spell
290
-
291
- ((comment) @comment.documentation
292
- (#lua-match? @comment.documentation "^/[*][*][^*].*[*]/$"))
293
-
294
- ; Parameters
295
- (parameter_declaration
296
- declarator: (identifier) @variable.parameter)
297
-
298
- (parameter_declaration
299
- declarator: (array_declarator) @variable.parameter)
300
-
301
- (parameter_declaration
302
- declarator: (pointer_declarator) @variable.parameter)
303
-
304
- ; K&R functions
305
- ; To enable support for K&R functions,
306
- ; add the following lines to your own query config and uncomment them.
307
- ; They are commented out as they'll conflict with C++
308
- ; Note that you'll need to have `; extends` at the top of your query file.
309
- ;
310
- ; (parameter_list (identifier) @variable.parameter)
311
- ;
312
- ; (function_definition
313
- ; declarator: _
314
- ; (declaration
315
- ; declarator: (identifier) @variable.parameter))
316
- ;
317
- ; (function_definition
318
- ; declarator: _
319
- ; (declaration
320
- ; declarator: (array_declarator) @variable.parameter))
321
- ;
322
- ; (function_definition
323
- ; declarator: _
324
- ; (declaration
325
- ; declarator: (pointer_declarator) @variable.parameter))
326
- (preproc_params
327
- (identifier) @variable.parameter)
328
-
329
- [
330
- "__attribute__"
331
- "__declspec"
332
- "__based"
333
- "__cdecl"
334
- "__clrcall"
335
- "__stdcall"
336
- "__fastcall"
337
- "__thiscall"
338
- "__vectorcall"
339
- (ms_pointer_modifier)
340
- (attribute_declaration)
341
- ] @attribute
1
+ ; Lower priority to prefer @variable.parameter when identifier appears in parameter_declaration.
2
+ ((identifier) @variable
3
+ (#set! priority 95))
4
+
5
+ (preproc_def
6
+ (preproc_arg) @variable)
7
+
8
+ [
9
+ "default"
10
+ "goto"
11
+ "asm"
12
+ "__asm__"
13
+ ] @keyword
14
+
15
+ [
16
+ "enum"
17
+ "struct"
18
+ "union"
19
+ "typedef"
20
+ ] @keyword.type
21
+
22
+ [
23
+ "sizeof"
24
+ "offsetof"
25
+ ] @keyword.operator
26
+
27
+ (alignof_expression
28
+ .
29
+ _ @keyword.operator)
30
+
31
+ "return" @keyword.return
32
+
33
+ [
34
+ "while"
35
+ "for"
36
+ "do"
37
+ "continue"
38
+ "break"
39
+ ] @keyword.repeat
40
+
41
+ [
42
+ "if"
43
+ "else"
44
+ "case"
45
+ "switch"
46
+ ] @keyword.conditional
47
+
48
+ [
49
+ "#if"
50
+ "#ifdef"
51
+ "#ifndef"
52
+ "#else"
53
+ "#elif"
54
+ "#endif"
55
+ "#elifdef"
56
+ "#elifndef"
57
+ (preproc_directive)
58
+ ] @keyword.directive
59
+
60
+ "#define" @keyword.directive.define
61
+
62
+ "#include" @keyword.import
63
+
64
+ [
65
+ ";"
66
+ ":"
67
+ ","
68
+ "."
69
+ "::"
70
+ ] @punctuation.delimiter
71
+
72
+ "..." @punctuation.special
73
+
74
+ [
75
+ "("
76
+ ")"
77
+ "["
78
+ "]"
79
+ "{"
80
+ "}"
81
+ ] @punctuation.bracket
82
+
83
+ [
84
+ "="
85
+ "-"
86
+ "*"
87
+ "/"
88
+ "+"
89
+ "%"
90
+ "~"
91
+ "|"
92
+ "&"
93
+ "^"
94
+ "<<"
95
+ ">>"
96
+ "->"
97
+ "<"
98
+ "<="
99
+ ">="
100
+ ">"
101
+ "=="
102
+ "!="
103
+ "!"
104
+ "&&"
105
+ "||"
106
+ "-="
107
+ "+="
108
+ "*="
109
+ "/="
110
+ "%="
111
+ "|="
112
+ "&="
113
+ "^="
114
+ ">>="
115
+ "<<="
116
+ "--"
117
+ "++"
118
+ ] @operator
119
+
120
+ ; Make sure the comma operator is given a highlight group after the comma
121
+ ; punctuator so the operator is highlighted properly.
122
+ (comma_expression
123
+ "," @operator)
124
+
125
+ [
126
+ (true)
127
+ (false)
128
+ ] @boolean
129
+
130
+ (conditional_expression
131
+ [
132
+ "?"
133
+ ":"
134
+ ] @keyword.conditional.ternary)
135
+
136
+ (string_literal) @string
137
+
138
+ (system_lib_string) @string
139
+
140
+ (escape_sequence) @string.escape
141
+
142
+ (null) @constant.builtin
143
+
144
+ (number_literal) @number
145
+
146
+ (char_literal) @character
147
+
148
+ (preproc_defined) @function.macro
149
+
150
+ ((field_expression
151
+ (field_identifier) @property) @_parent
152
+ (#not-has-parent? @_parent template_method function_declarator call_expression))
153
+
154
+ (field_designator) @property
155
+
156
+ ((field_identifier) @property
157
+ (#has-ancestor? @property field_declaration)
158
+ (#not-has-ancestor? @property function_declarator))
159
+
160
+ (statement_identifier) @label
161
+
162
+ (declaration
163
+ type: (type_identifier) @_type
164
+ declarator: (identifier) @label
165
+ (#eq? @_type "__label__"))
166
+
167
+ [
168
+ (type_identifier)
169
+ (type_descriptor)
170
+ ] @type
171
+
172
+ (storage_class_specifier) @keyword.modifier
173
+
174
+ [
175
+ (type_qualifier)
176
+ (gnu_asm_qualifier)
177
+ "__extension__"
178
+ ] @keyword.modifier
179
+
180
+ (linkage_specification
181
+ "extern" @keyword.modifier)
182
+
183
+ (type_definition
184
+ declarator: (type_identifier) @type.definition)
185
+
186
+ (primitive_type) @type.builtin
187
+
188
+ (sized_type_specifier
189
+ _ @type.builtin
190
+ type: _?)
191
+
192
+ ((identifier) @constant
193
+ (#lua-match? @constant "^[A-Z][A-Z0-9_]+$"))
194
+
195
+ (preproc_def
196
+ (preproc_arg) @constant
197
+ (#lua-match? @constant "^[A-Z][A-Z0-9_]+$"))
198
+
199
+ (enumerator
200
+ name: (identifier) @constant)
201
+
202
+ (case_statement
203
+ value: (identifier) @constant)
204
+
205
+ ((identifier) @constant.builtin
206
+ ; format-ignore
207
+ (#any-of? @constant.builtin
208
+ "stderr" "stdin" "stdout"
209
+ "__FILE__" "__LINE__" "__DATE__" "__TIME__"
210
+ "__STDC__" "__STDC_VERSION__" "__STDC_HOSTED__"
211
+ "__cplusplus" "__OBJC__" "__ASSEMBLER__"
212
+ "__BASE_FILE__" "__FILE_NAME__" "__INCLUDE_LEVEL__"
213
+ "__TIMESTAMP__" "__clang__" "__clang_major__"
214
+ "__clang_minor__" "__clang_patchlevel__"
215
+ "__clang_version__" "__clang_literal_encoding__"
216
+ "__clang_wide_literal_encoding__"
217
+ "__FUNCTION__" "__func__" "__PRETTY_FUNCTION__"
218
+ "__VA_ARGS__" "__VA_OPT__"))
219
+
220
+ (preproc_def
221
+ (preproc_arg) @constant.builtin
222
+ ; format-ignore
223
+ (#any-of? @constant.builtin
224
+ "stderr" "stdin" "stdout"
225
+ "__FILE__" "__LINE__" "__DATE__" "__TIME__"
226
+ "__STDC__" "__STDC_VERSION__" "__STDC_HOSTED__"
227
+ "__cplusplus" "__OBJC__" "__ASSEMBLER__"
228
+ "__BASE_FILE__" "__FILE_NAME__" "__INCLUDE_LEVEL__"
229
+ "__TIMESTAMP__" "__clang__" "__clang_major__"
230
+ "__clang_minor__" "__clang_patchlevel__"
231
+ "__clang_version__" "__clang_literal_encoding__"
232
+ "__clang_wide_literal_encoding__"
233
+ "__FUNCTION__" "__func__" "__PRETTY_FUNCTION__"
234
+ "__VA_ARGS__" "__VA_OPT__"))
235
+
236
+ (attribute_specifier
237
+ (argument_list
238
+ (identifier) @variable.builtin))
239
+
240
+ (attribute_specifier
241
+ (argument_list
242
+ (call_expression
243
+ function: (identifier) @variable.builtin)))
244
+
245
+ ((call_expression
246
+ function: (identifier) @function.builtin)
247
+ (#lua-match? @function.builtin "^__builtin_"))
248
+
249
+ ((call_expression
250
+ function: (identifier) @function.builtin)
251
+ (#has-ancestor? @function.builtin attribute_specifier))
252
+
253
+ ; Preproc def / undef
254
+ (preproc_def
255
+ name: (_) @constant.macro)
256
+
257
+ (preproc_call
258
+ directive: (preproc_directive) @_u
259
+ argument: (_) @constant.macro
260
+ (#eq? @_u "#undef"))
261
+
262
+ (preproc_ifdef
263
+ name: (identifier) @constant.macro)
264
+
265
+ (preproc_elifdef
266
+ name: (identifier) @constant.macro)
267
+
268
+ (preproc_defined
269
+ (identifier) @constant.macro)
270
+
271
+ (call_expression
272
+ function: (identifier) @function.call)
273
+
274
+ (call_expression
275
+ function: (field_expression
276
+ field: (field_identifier) @function.call))
277
+
278
+ (function_declarator
279
+ declarator: (identifier) @function)
280
+
281
+ (function_declarator
282
+ declarator: (parenthesized_declarator
283
+ (pointer_declarator
284
+ declarator: (field_identifier) @function)))
285
+
286
+ (preproc_function_def
287
+ name: (identifier) @function.macro)
288
+
289
+ (comment) @comment @spell
290
+
291
+ ((comment) @comment.documentation
292
+ (#lua-match? @comment.documentation "^/[*][*][^*].*[*]/$"))
293
+
294
+ ; Parameters
295
+ (parameter_declaration
296
+ declarator: (identifier) @variable.parameter)
297
+
298
+ (parameter_declaration
299
+ declarator: (array_declarator) @variable.parameter)
300
+
301
+ (parameter_declaration
302
+ declarator: (pointer_declarator) @variable.parameter)
303
+
304
+ ; K&R functions
305
+ ; To enable support for K&R functions,
306
+ ; add the following lines to your own query config and uncomment them.
307
+ ; They are commented out as they'll conflict with C++
308
+ ; Note that you'll need to have `; extends` at the top of your query file.
309
+ ;
310
+ ; (parameter_list (identifier) @variable.parameter)
311
+ ;
312
+ ; (function_definition
313
+ ; declarator: _
314
+ ; (declaration
315
+ ; declarator: (identifier) @variable.parameter))
316
+ ;
317
+ ; (function_definition
318
+ ; declarator: _
319
+ ; (declaration
320
+ ; declarator: (array_declarator) @variable.parameter))
321
+ ;
322
+ ; (function_definition
323
+ ; declarator: _
324
+ ; (declaration
325
+ ; declarator: (pointer_declarator) @variable.parameter))
326
+ (preproc_params
327
+ (identifier) @variable.parameter)
328
+
329
+ [
330
+ "__attribute__"
331
+ "__declspec"
332
+ "__based"
333
+ "__cdecl"
334
+ "__clrcall"
335
+ "__stdcall"
336
+ "__fastcall"
337
+ "__thiscall"
338
+ "__vectorcall"
339
+ (ms_pointer_modifier)
340
+ (attribute_declaration)
341
+ ] @attribute