complgen
complgen copied to clipboard
Generate bash/fish/zsh completions from a single declarative grammar familiar from man pages
* [ ] Fix failing e2e tests
completes paths in a basic way that isn't identical to path completion for commands where completion isn't made with complgen. I'm using zsh. It ignores zstyle settings related to e.g....
In JIT mode, the current bash completion matching logic simply does [completion.starts_with(...)](https://github.com/adaszko/complgen/blob/5e29dcbf46840bd9eb0599dcf737ce786d26340c/src/bin.rs#L307) which is wrong when `completion-ignore-case` is set. Similarly in AOT mode: * https://github.com/adaszko/complgen/blob/5e29dcbf46840bd9eb0599dcf737ce786d26340c/src/aot/bash.rs#L127 * https://github.com/adaszko/complgen/blob/5e29dcbf46840bd9eb0599dcf737ce786d26340c/src/aot/bash.rs#L354 * https://github.com/adaszko/complgen/blob/5e29dcbf46840bd9eb0599dcf737ce786d26340c/src/aot/bash.rs#L387 *...
For a grammar `cmd (--foo | {{{ echo bar }}});`, the `{{{ echo bar }}}` command is executed even when we're matching the first word (i.e. `cmd `), which is...
Those would need to be e2e tests, so in Python, using pytest. Existing examples in the `e2e` subdirectory should make it clear what's going on there.
Put emphasis on testing `:` and `=` in literals in Bash output as they're especially problematic. Those would need to be e2e tests, so in Python, using pytest. Existing examples...
It's implemented already for JIT mode, so it can be used as a blueprint for AOT mode. * [x] Bash * [ ] Fish * [x] ZSH
Currently such such .usage's: ``` fake ; ::= { echo '3\n2\n1' }; ``` ``` fake ; ::= c | b | a ; ``` produce shell autocompletion rules where the...
When trying to test the example `mygrep` on my machine which is a macOS with bash version `GNU bash, version 5.2.37(1)-release`, I'm getting the following error. ``` $ mygrep -bash:...
While experimenting with `complgen`, I noticed that when I try to `source` the output of `complgen aot ...`, I get the following error: ``` $ source mygrep.bash -bash: mygrep.bash: line...