diff options
Diffstat (limited to 'plugins/cargo/cargo.plugin.zsh')
-rw-r--r-- | plugins/cargo/cargo.plugin.zsh | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/plugins/cargo/cargo.plugin.zsh b/plugins/cargo/cargo.plugin.zsh new file mode 100644 index 000000000..7082d2d55 --- /dev/null +++ b/plugins/cargo/cargo.plugin.zsh @@ -0,0 +1,23 @@ +if (( $+commands[rustup] && $+commands[cargo] )); then + # remove old generated completion file + command rm -f "${0:A:h}/_cargo" + + # generate new completion file + ver="$(cargo --version)" + ver_file="$ZSH_CACHE_DIR/cargo_version" + comp_file="$ZSH_CACHE_DIR/completions/_cargo" + + mkdir -p "${comp_file:h}" + (( ${fpath[(Ie)${comp_file:h}]} )) || fpath=("${comp_file:h}" $fpath) + + if [[ ! -f "$comp_file" || ! -f "$ver_file" || "$ver" != "$(< "$ver_file")" ]]; then + rustup completions zsh cargo >| "$comp_file" + echo "$ver" >| "$ver_file" + fi + + declare -A _comps + autoload -Uz _cargo + _comps[cargo]=_cargo + + unset ver ver_file comp_file +fi |