Replace the auto-generated Zsh completion with a full completion script.
This script improves completion support for options and arguments,
which is hard to obtain from an auto-generated completion.
- Full completion support for external commands and options when using
`--exec`/`--exec-batch`.
- The completion for `--type` and `--color` adds descriptions instead of
just values.
- Complete files when using `--ignore-file`.
- Stop completing files for the pattern argument.
- Improve completion for path arguments. Only directories are
completed.
- Single-use options are not offered again.
- Updated exclusions lists for mutual-exclusive options.
- Add support for hidden options (as defined in `app.rs`). They are not
offered for completion, but if present are considered (and their value
may be completed).
Full support for exclusion lists depends of options groups, which was
added in Zsh 5.4. Older Zsh versions, as commented in the completion
script, will just offer most options.
The format of the completion script was taken from ripgrep completion
script. Command completion for `--exec`/`--exec-batch` was taken from
Zsh's `_find` completion.
This upgrades the minimum required version of Rust to 1.29 in order to
fix#288.
See also:
- Rust compiler bug ticket: rust-lang/rust#50619
- Rust compiler PR with the fix: rust-lang/rust#50630closes#288