march-cli 0.1.24 → 0.1.26

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