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,261 +1,261 @@
1
- [
2
- "("
3
- ")"
4
- "{"
5
- "}"
6
- "["
7
- "]"
8
- "[["
9
- "]]"
10
- "(("
11
- "))"
12
- ] @punctuation.bracket
13
-
14
- [
15
- ";"
16
- ";;"
17
- ";&"
18
- ";;&"
19
- "&"
20
- ] @punctuation.delimiter
21
-
22
- [
23
- ">"
24
- ">>"
25
- "<"
26
- "<<"
27
- "&&"
28
- "|"
29
- "|&"
30
- "||"
31
- "="
32
- "+="
33
- "=~"
34
- "=="
35
- "!="
36
- "&>"
37
- "&>>"
38
- "<&"
39
- ">&"
40
- ">|"
41
- "<&-"
42
- ">&-"
43
- "<<-"
44
- "<<<"
45
- ".."
46
- "!"
47
- ] @operator
48
-
49
- ; Do *not* spell check strings since they typically have some sort of
50
- ; interpolation in them, or, are typically used for things like filenames, URLs,
51
- ; flags and file content.
52
- [
53
- (string)
54
- (raw_string)
55
- (ansi_c_string)
56
- (heredoc_body)
57
- ] @string
58
-
59
- [
60
- (heredoc_start)
61
- (heredoc_end)
62
- ] @label
63
-
64
- (variable_assignment
65
- (word) @string)
66
-
67
- (command
68
- argument: "$" @string) ; bare dollar
69
-
70
- (concatenation
71
- (word) @string)
72
-
73
- [
74
- "if"
75
- "then"
76
- "else"
77
- "elif"
78
- "fi"
79
- "case"
80
- "in"
81
- "esac"
82
- ] @keyword.conditional
83
-
84
- [
85
- "for"
86
- "do"
87
- "done"
88
- "select"
89
- "until"
90
- "while"
91
- ] @keyword.repeat
92
-
93
- [
94
- "declare"
95
- "typeset"
96
- "readonly"
97
- "local"
98
- "unset"
99
- "unsetenv"
100
- ] @keyword
101
-
102
- "export" @keyword.import
103
-
104
- "function" @keyword.function
105
-
106
- (special_variable_name) @constant
107
-
108
- ; trap -l
109
- ((word) @constant.builtin
110
- (#any-of? @constant.builtin
111
- "SIGHUP" "SIGINT" "SIGQUIT" "SIGILL" "SIGTRAP" "SIGABRT" "SIGBUS" "SIGFPE" "SIGKILL" "SIGUSR1"
112
- "SIGSEGV" "SIGUSR2" "SIGPIPE" "SIGALRM" "SIGTERM" "SIGSTKFLT" "SIGCHLD" "SIGCONT" "SIGSTOP"
113
- "SIGTSTP" "SIGTTIN" "SIGTTOU" "SIGURG" "SIGXCPU" "SIGXFSZ" "SIGVTALRM" "SIGPROF" "SIGWINCH"
114
- "SIGIO" "SIGPWR" "SIGSYS" "SIGRTMIN" "SIGRTMIN+1" "SIGRTMIN+2" "SIGRTMIN+3" "SIGRTMIN+4"
115
- "SIGRTMIN+5" "SIGRTMIN+6" "SIGRTMIN+7" "SIGRTMIN+8" "SIGRTMIN+9" "SIGRTMIN+10" "SIGRTMIN+11"
116
- "SIGRTMIN+12" "SIGRTMIN+13" "SIGRTMIN+14" "SIGRTMIN+15" "SIGRTMAX-14" "SIGRTMAX-13"
117
- "SIGRTMAX-12" "SIGRTMAX-11" "SIGRTMAX-10" "SIGRTMAX-9" "SIGRTMAX-8" "SIGRTMAX-7" "SIGRTMAX-6"
118
- "SIGRTMAX-5" "SIGRTMAX-4" "SIGRTMAX-3" "SIGRTMAX-2" "SIGRTMAX-1" "SIGRTMAX"))
119
-
120
- ((word) @boolean
121
- (#any-of? @boolean "true" "false"))
122
-
123
- (comment) @comment @spell
124
-
125
- (test_operator) @operator
126
-
127
- (command_substitution
128
- "$(" @punctuation.special
129
- ")" @punctuation.special)
130
-
131
- (process_substitution
132
- [
133
- "<("
134
- ">("
135
- ] @punctuation.special
136
- ")" @punctuation.special)
137
-
138
- (arithmetic_expansion
139
- [
140
- "$(("
141
- "(("
142
- ] @punctuation.special
143
- "))" @punctuation.special)
144
-
145
- (arithmetic_expansion
146
- "," @punctuation.delimiter)
147
-
148
- (ternary_expression
149
- [
150
- "?"
151
- ":"
152
- ] @keyword.conditional.ternary)
153
-
154
- (binary_expression
155
- operator: _ @operator)
156
-
157
- (unary_expression
158
- operator: _ @operator)
159
-
160
- (postfix_expression
161
- operator: _ @operator)
162
-
163
- (function_definition
164
- name: (word) @function)
165
-
166
- (command_name
167
- (word) @function.call)
168
-
169
- (command_name
170
- (word) @function.builtin
171
- (#any-of? @function.builtin
172
- "." ":" "alias" "bg" "bind" "break" "builtin" "caller" "cd" "command" "compgen" "complete"
173
- "compopt" "continue" "coproc" "dirs" "disown" "echo" "enable" "eval" "exec" "exit" "false" "fc"
174
- "fg" "getopts" "hash" "help" "history" "jobs" "kill" "let" "logout" "mapfile" "popd" "printf"
175
- "pushd" "pwd" "read" "readarray" "return" "set" "shift" "shopt" "source" "suspend" "test" "time"
176
- "times" "trap" "true" "type" "typeset" "ulimit" "umask" "unalias" "wait"))
177
-
178
- (command
179
- argument: [
180
- (word) @variable.parameter
181
- (concatenation
182
- (word) @variable.parameter)
183
- ])
184
-
185
- (declaration_command
186
- (word) @variable.parameter)
187
-
188
- (unset_command
189
- (word) @variable.parameter)
190
-
191
- (number) @number
192
-
193
- ((word) @number
194
- (#lua-match? @number "^[0-9]+$"))
195
-
196
- (file_redirect
197
- (word) @string.special.path)
198
-
199
- (herestring_redirect
200
- (word) @string)
201
-
202
- (file_descriptor) @operator
203
-
204
- (simple_expansion
205
- "$" @punctuation.special) @none
206
-
207
- (expansion
208
- "${" @punctuation.special
209
- "}" @punctuation.special) @none
210
-
211
- (expansion
212
- operator: _ @punctuation.special)
213
-
214
- (expansion
215
- "@"
216
- .
217
- operator: _ @character.special)
218
-
219
- ((expansion
220
- (subscript
221
- index: (word) @character.special))
222
- (#any-of? @character.special "@" "*"))
223
-
224
- "``" @punctuation.special
225
-
226
- (variable_name) @variable
227
-
228
- ((variable_name) @constant
229
- (#lua-match? @constant "^[A-Z][A-Z_0-9]*$"))
230
-
231
- ((variable_name) @variable.builtin
232
- (#any-of? @variable.builtin
233
- ; https://www.gnu.org/software/bash/manual/html_node/Bourne-Shell-Variables.html
234
- "CDPATH" "HOME" "IFS" "MAIL" "MAILPATH" "OPTARG" "OPTIND" "PATH" "PS1" "PS2"
235
- ; https://www.gnu.org/software/bash/manual/html_node/Bash-Variables.html
236
- "_" "BASH" "BASHOPTS" "BASHPID" "BASH_ALIASES" "BASH_ARGC" "BASH_ARGV" "BASH_ARGV0" "BASH_CMDS"
237
- "BASH_COMMAND" "BASH_COMPAT" "BASH_ENV" "BASH_EXECUTION_STRING" "BASH_LINENO"
238
- "BASH_LOADABLES_PATH" "BASH_REMATCH" "BASH_SOURCE" "BASH_SUBSHELL" "BASH_VERSINFO"
239
- "BASH_VERSION" "BASH_XTRACEFD" "CHILD_MAX" "COLUMNS" "COMP_CWORD" "COMP_LINE" "COMP_POINT"
240
- "COMP_TYPE" "COMP_KEY" "COMP_WORDBREAKS" "COMP_WORDS" "COMPREPLY" "COPROC" "DIRSTACK" "EMACS"
241
- "ENV" "EPOCHREALTIME" "EPOCHSECONDS" "EUID" "EXECIGNORE" "FCEDIT" "FIGNORE" "FUNCNAME"
242
- "FUNCNEST" "GLOBIGNORE" "GROUPS" "histchars" "HISTCMD" "HISTCONTROL" "HISTFILE" "HISTFILESIZE"
243
- "HISTIGNORE" "HISTSIZE" "HISTTIMEFORMAT" "HOSTFILE" "HOSTNAME" "HOSTTYPE" "IGNOREEOF" "INPUTRC"
244
- "INSIDE_EMACS" "LANG" "LC_ALL" "LC_COLLATE" "LC_CTYPE" "LC_MESSAGES" "LC_NUMERIC" "LC_TIME"
245
- "LINENO" "LINES" "MACHTYPE" "MAILCHECK" "MAPFILE" "OLDPWD" "OPTERR" "OSTYPE" "PIPESTATUS"
246
- "POSIXLY_CORRECT" "PPID" "PROMPT_COMMAND" "PROMPT_DIRTRIM" "PS0" "PS3" "PS4" "PWD" "RANDOM"
247
- "READLINE_ARGUMENT" "READLINE_LINE" "READLINE_MARK" "READLINE_POINT" "REPLY" "SECONDS" "SHELL"
248
- "SHELLOPTS" "SHLVL" "SRANDOM" "TIMEFORMAT" "TMOUT" "TMPDIR" "UID"))
249
-
250
- (case_item
251
- value: (word) @variable.parameter)
252
-
253
- [
254
- (regex)
255
- (extglob_pattern)
256
- ] @string.regexp
257
-
258
- ((program
259
- .
260
- (comment) @keyword.directive @nospell)
261
- (#lua-match? @keyword.directive "^#!/"))
1
+ [
2
+ "("
3
+ ")"
4
+ "{"
5
+ "}"
6
+ "["
7
+ "]"
8
+ "[["
9
+ "]]"
10
+ "(("
11
+ "))"
12
+ ] @punctuation.bracket
13
+
14
+ [
15
+ ";"
16
+ ";;"
17
+ ";&"
18
+ ";;&"
19
+ "&"
20
+ ] @punctuation.delimiter
21
+
22
+ [
23
+ ">"
24
+ ">>"
25
+ "<"
26
+ "<<"
27
+ "&&"
28
+ "|"
29
+ "|&"
30
+ "||"
31
+ "="
32
+ "+="
33
+ "=~"
34
+ "=="
35
+ "!="
36
+ "&>"
37
+ "&>>"
38
+ "<&"
39
+ ">&"
40
+ ">|"
41
+ "<&-"
42
+ ">&-"
43
+ "<<-"
44
+ "<<<"
45
+ ".."
46
+ "!"
47
+ ] @operator
48
+
49
+ ; Do *not* spell check strings since they typically have some sort of
50
+ ; interpolation in them, or, are typically used for things like filenames, URLs,
51
+ ; flags and file content.
52
+ [
53
+ (string)
54
+ (raw_string)
55
+ (ansi_c_string)
56
+ (heredoc_body)
57
+ ] @string
58
+
59
+ [
60
+ (heredoc_start)
61
+ (heredoc_end)
62
+ ] @label
63
+
64
+ (variable_assignment
65
+ (word) @string)
66
+
67
+ (command
68
+ argument: "$" @string) ; bare dollar
69
+
70
+ (concatenation
71
+ (word) @string)
72
+
73
+ [
74
+ "if"
75
+ "then"
76
+ "else"
77
+ "elif"
78
+ "fi"
79
+ "case"
80
+ "in"
81
+ "esac"
82
+ ] @keyword.conditional
83
+
84
+ [
85
+ "for"
86
+ "do"
87
+ "done"
88
+ "select"
89
+ "until"
90
+ "while"
91
+ ] @keyword.repeat
92
+
93
+ [
94
+ "declare"
95
+ "typeset"
96
+ "readonly"
97
+ "local"
98
+ "unset"
99
+ "unsetenv"
100
+ ] @keyword
101
+
102
+ "export" @keyword.import
103
+
104
+ "function" @keyword.function
105
+
106
+ (special_variable_name) @constant
107
+
108
+ ; trap -l
109
+ ((word) @constant.builtin
110
+ (#any-of? @constant.builtin
111
+ "SIGHUP" "SIGINT" "SIGQUIT" "SIGILL" "SIGTRAP" "SIGABRT" "SIGBUS" "SIGFPE" "SIGKILL" "SIGUSR1"
112
+ "SIGSEGV" "SIGUSR2" "SIGPIPE" "SIGALRM" "SIGTERM" "SIGSTKFLT" "SIGCHLD" "SIGCONT" "SIGSTOP"
113
+ "SIGTSTP" "SIGTTIN" "SIGTTOU" "SIGURG" "SIGXCPU" "SIGXFSZ" "SIGVTALRM" "SIGPROF" "SIGWINCH"
114
+ "SIGIO" "SIGPWR" "SIGSYS" "SIGRTMIN" "SIGRTMIN+1" "SIGRTMIN+2" "SIGRTMIN+3" "SIGRTMIN+4"
115
+ "SIGRTMIN+5" "SIGRTMIN+6" "SIGRTMIN+7" "SIGRTMIN+8" "SIGRTMIN+9" "SIGRTMIN+10" "SIGRTMIN+11"
116
+ "SIGRTMIN+12" "SIGRTMIN+13" "SIGRTMIN+14" "SIGRTMIN+15" "SIGRTMAX-14" "SIGRTMAX-13"
117
+ "SIGRTMAX-12" "SIGRTMAX-11" "SIGRTMAX-10" "SIGRTMAX-9" "SIGRTMAX-8" "SIGRTMAX-7" "SIGRTMAX-6"
118
+ "SIGRTMAX-5" "SIGRTMAX-4" "SIGRTMAX-3" "SIGRTMAX-2" "SIGRTMAX-1" "SIGRTMAX"))
119
+
120
+ ((word) @boolean
121
+ (#any-of? @boolean "true" "false"))
122
+
123
+ (comment) @comment @spell
124
+
125
+ (test_operator) @operator
126
+
127
+ (command_substitution
128
+ "$(" @punctuation.special
129
+ ")" @punctuation.special)
130
+
131
+ (process_substitution
132
+ [
133
+ "<("
134
+ ">("
135
+ ] @punctuation.special
136
+ ")" @punctuation.special)
137
+
138
+ (arithmetic_expansion
139
+ [
140
+ "$(("
141
+ "(("
142
+ ] @punctuation.special
143
+ "))" @punctuation.special)
144
+
145
+ (arithmetic_expansion
146
+ "," @punctuation.delimiter)
147
+
148
+ (ternary_expression
149
+ [
150
+ "?"
151
+ ":"
152
+ ] @keyword.conditional.ternary)
153
+
154
+ (binary_expression
155
+ operator: _ @operator)
156
+
157
+ (unary_expression
158
+ operator: _ @operator)
159
+
160
+ (postfix_expression
161
+ operator: _ @operator)
162
+
163
+ (function_definition
164
+ name: (word) @function)
165
+
166
+ (command_name
167
+ (word) @function.call)
168
+
169
+ (command_name
170
+ (word) @function.builtin
171
+ (#any-of? @function.builtin
172
+ "." ":" "alias" "bg" "bind" "break" "builtin" "caller" "cd" "command" "compgen" "complete"
173
+ "compopt" "continue" "coproc" "dirs" "disown" "echo" "enable" "eval" "exec" "exit" "false" "fc"
174
+ "fg" "getopts" "hash" "help" "history" "jobs" "kill" "let" "logout" "mapfile" "popd" "printf"
175
+ "pushd" "pwd" "read" "readarray" "return" "set" "shift" "shopt" "source" "suspend" "test" "time"
176
+ "times" "trap" "true" "type" "typeset" "ulimit" "umask" "unalias" "wait"))
177
+
178
+ (command
179
+ argument: [
180
+ (word) @variable.parameter
181
+ (concatenation
182
+ (word) @variable.parameter)
183
+ ])
184
+
185
+ (declaration_command
186
+ (word) @variable.parameter)
187
+
188
+ (unset_command
189
+ (word) @variable.parameter)
190
+
191
+ (number) @number
192
+
193
+ ((word) @number
194
+ (#lua-match? @number "^[0-9]+$"))
195
+
196
+ (file_redirect
197
+ (word) @string.special.path)
198
+
199
+ (herestring_redirect
200
+ (word) @string)
201
+
202
+ (file_descriptor) @operator
203
+
204
+ (simple_expansion
205
+ "$" @punctuation.special) @none
206
+
207
+ (expansion
208
+ "${" @punctuation.special
209
+ "}" @punctuation.special) @none
210
+
211
+ (expansion
212
+ operator: _ @punctuation.special)
213
+
214
+ (expansion
215
+ "@"
216
+ .
217
+ operator: _ @character.special)
218
+
219
+ ((expansion
220
+ (subscript
221
+ index: (word) @character.special))
222
+ (#any-of? @character.special "@" "*"))
223
+
224
+ "``" @punctuation.special
225
+
226
+ (variable_name) @variable
227
+
228
+ ((variable_name) @constant
229
+ (#lua-match? @constant "^[A-Z][A-Z_0-9]*$"))
230
+
231
+ ((variable_name) @variable.builtin
232
+ (#any-of? @variable.builtin
233
+ ; https://www.gnu.org/software/bash/manual/html_node/Bourne-Shell-Variables.html
234
+ "CDPATH" "HOME" "IFS" "MAIL" "MAILPATH" "OPTARG" "OPTIND" "PATH" "PS1" "PS2"
235
+ ; https://www.gnu.org/software/bash/manual/html_node/Bash-Variables.html
236
+ "_" "BASH" "BASHOPTS" "BASHPID" "BASH_ALIASES" "BASH_ARGC" "BASH_ARGV" "BASH_ARGV0" "BASH_CMDS"
237
+ "BASH_COMMAND" "BASH_COMPAT" "BASH_ENV" "BASH_EXECUTION_STRING" "BASH_LINENO"
238
+ "BASH_LOADABLES_PATH" "BASH_REMATCH" "BASH_SOURCE" "BASH_SUBSHELL" "BASH_VERSINFO"
239
+ "BASH_VERSION" "BASH_XTRACEFD" "CHILD_MAX" "COLUMNS" "COMP_CWORD" "COMP_LINE" "COMP_POINT"
240
+ "COMP_TYPE" "COMP_KEY" "COMP_WORDBREAKS" "COMP_WORDS" "COMPREPLY" "COPROC" "DIRSTACK" "EMACS"
241
+ "ENV" "EPOCHREALTIME" "EPOCHSECONDS" "EUID" "EXECIGNORE" "FCEDIT" "FIGNORE" "FUNCNAME"
242
+ "FUNCNEST" "GLOBIGNORE" "GROUPS" "histchars" "HISTCMD" "HISTCONTROL" "HISTFILE" "HISTFILESIZE"
243
+ "HISTIGNORE" "HISTSIZE" "HISTTIMEFORMAT" "HOSTFILE" "HOSTNAME" "HOSTTYPE" "IGNOREEOF" "INPUTRC"
244
+ "INSIDE_EMACS" "LANG" "LC_ALL" "LC_COLLATE" "LC_CTYPE" "LC_MESSAGES" "LC_NUMERIC" "LC_TIME"
245
+ "LINENO" "LINES" "MACHTYPE" "MAILCHECK" "MAPFILE" "OLDPWD" "OPTERR" "OSTYPE" "PIPESTATUS"
246
+ "POSIXLY_CORRECT" "PPID" "PROMPT_COMMAND" "PROMPT_DIRTRIM" "PS0" "PS3" "PS4" "PWD" "RANDOM"
247
+ "READLINE_ARGUMENT" "READLINE_LINE" "READLINE_MARK" "READLINE_POINT" "REPLY" "SECONDS" "SHELL"
248
+ "SHELLOPTS" "SHLVL" "SRANDOM" "TIMEFORMAT" "TMOUT" "TMPDIR" "UID"))
249
+
250
+ (case_item
251
+ value: (word) @variable.parameter)
252
+
253
+ [
254
+ (regex)
255
+ (extglob_pattern)
256
+ ] @string.regexp
257
+
258
+ ((program
259
+ .
260
+ (comment) @keyword.directive @nospell)
261
+ (#lua-match? @keyword.directive "^#!/"))