From 4e6e49652b69557c01ef1ce81c96da7eb9b34e6e Mon Sep 17 00:00:00 2001 From: Marc Cornellà Date: Wed, 15 Sep 2021 18:18:25 +0200 Subject: fix(plugins): fix `_comps` error in completion generation plugins (#10190) Fixes #10190 --- plugins/fnm/fnm.plugin.zsh | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) (limited to 'plugins/fnm') diff --git a/plugins/fnm/fnm.plugin.zsh b/plugins/fnm/fnm.plugin.zsh index 5ce558dcb..29b759abb 100644 --- a/plugins/fnm/fnm.plugin.zsh +++ b/plugins/fnm/fnm.plugin.zsh @@ -1,12 +1,17 @@ -# COMPLETION FUNCTION if (( $+commands[fnm] )); then - if [[ ! -f $ZSH_CACHE_DIR/fnm_version ]] \ - || [[ "$(fnm --version)" != "$(< "$ZSH_CACHE_DIR/fnm_version")" ]] \ - || [[ ! -f $ZSH/plugins/fnm/_fnm ]]; then - fnm completions --shell=zsh > $ZSH/plugins/fnm/_fnm - fnm --version > $ZSH_CACHE_DIR/fnm_version + ver="$(fnm --version)" + ver_file="$ZSH_CACHE_DIR/fnm_version" + comp_file="$ZSH/plugins/fnm/_fnm" + + if [[ ! -f "$comp_file" || ! -f "$ver_file" || "$ver" != "$(< "$ver_file")" ]]; then + fnm completions --shell=zsh >| "$comp_file" + echo "$ver" >| "$ver_file" fi + + declare -A _comps autoload -Uz _fnm _comps[fnm]=_fnm + + unset ver ver_file comp_file fi -- cgit v1.2.3-70-g09d2 From d2269180b074263f4a0d3df3f9de15a1abae8110 Mon Sep 17 00:00:00 2001 From: Marc Cornellà Date: Wed, 15 Sep 2021 18:41:44 +0200 Subject: fix(core): move plugin-generated completion files to `$ZSH_CACHE_DIR/completions` Fixes #10183 --- oh-my-zsh.sh | 4 ++++ plugins/cargo/cargo.plugin.zsh | 5 ++++- plugins/deno/deno.plugin.zsh | 5 ++++- plugins/fnm/fnm.plugin.zsh | 5 ++++- plugins/gh/gh.plugin.zsh | 5 ++++- plugins/rustup/rustup.plugin.zsh | 5 ++++- 6 files changed, 24 insertions(+), 5 deletions(-) (limited to 'plugins/fnm') diff --git a/oh-my-zsh.sh b/oh-my-zsh.sh index 16e244be5..442972a9a 100644 --- a/oh-my-zsh.sh +++ b/oh-my-zsh.sh @@ -7,6 +7,10 @@ if [[ -z "$ZSH_CACHE_DIR" ]]; then ZSH_CACHE_DIR="$ZSH/cache" fi +# Create completions cache dir and add to $fpath +mkdir -p "$ZSH_CACHE_DIR/completions" +(( ${fpath[(Ie)$ZSH_CACHE_DIR/completions]} )) || fpath=("$ZSH_CACHE_DIR/completions" $fpath) + # Check for updates on initial load... if [ "$DISABLE_AUTO_UPDATE" != "true" ]; then source $ZSH/tools/check_for_upgrade.sh diff --git a/plugins/cargo/cargo.plugin.zsh b/plugins/cargo/cargo.plugin.zsh index b636d492f..95e63dd3c 100644 --- a/plugins/cargo/cargo.plugin.zsh +++ b/plugins/cargo/cargo.plugin.zsh @@ -1,7 +1,10 @@ if (( $+commands[rustup] && $+commands[cargo] )); then ver="$(cargo --version)" ver_file="$ZSH_CACHE_DIR/cargo_version" - comp_file="$ZSH/plugins/cargo/_cargo" + 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" diff --git a/plugins/deno/deno.plugin.zsh b/plugins/deno/deno.plugin.zsh index 71749f4a0..e22c4e4c8 100644 --- a/plugins/deno/deno.plugin.zsh +++ b/plugins/deno/deno.plugin.zsh @@ -14,7 +14,10 @@ alias dup='deno upgrade' if (( $+commands[deno] )); then ver="$(deno --version)" ver_file="$ZSH_CACHE_DIR/deno_version" - comp_file="$ZSH/plugins/deno/_deno" + comp_file="$ZSH_CACHE_DIR/completions/_deno" + + 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 deno completions zsh >| "$comp_file" diff --git a/plugins/fnm/fnm.plugin.zsh b/plugins/fnm/fnm.plugin.zsh index 29b759abb..efb81a6fa 100644 --- a/plugins/fnm/fnm.plugin.zsh +++ b/plugins/fnm/fnm.plugin.zsh @@ -1,7 +1,10 @@ if (( $+commands[fnm] )); then ver="$(fnm --version)" ver_file="$ZSH_CACHE_DIR/fnm_version" - comp_file="$ZSH/plugins/fnm/_fnm" + comp_file="$ZSH_CACHE_DIR/completions/_fnm" + + 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 fnm completions --shell=zsh >| "$comp_file" diff --git a/plugins/gh/gh.plugin.zsh b/plugins/gh/gh.plugin.zsh index c3d87848d..a346ccf65 100644 --- a/plugins/gh/gh.plugin.zsh +++ b/plugins/gh/gh.plugin.zsh @@ -2,7 +2,10 @@ if (( $+commands[gh] )); then ver="$(gh --version)" ver_file="$ZSH_CACHE_DIR/gh_version" - comp_file="$ZSH/plugins/gh/_gh" + comp_file="$ZSH_CACHE_DIR/completions/_gh" + + 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 gh completion --shell zsh >| "$comp_file" diff --git a/plugins/rustup/rustup.plugin.zsh b/plugins/rustup/rustup.plugin.zsh index e709f41bd..8740f255a 100644 --- a/plugins/rustup/rustup.plugin.zsh +++ b/plugins/rustup/rustup.plugin.zsh @@ -1,7 +1,10 @@ if (( $+commands[rustup] )); then ver="$(rustup --version 2>/dev/null)" ver_file="$ZSH_CACHE_DIR/rustup_version" - comp_file="$ZSH/plugins/rustup/_rustup" + comp_file="$ZSH_CACHE_DIR/completions/_rustup" + + 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 >| "$comp_file" -- cgit v1.2.3-70-g09d2 From eb2eacaf0c46ace8e0eb3543199851a8249338fc Mon Sep 17 00:00:00 2001 From: Marc Cornellà Date: Wed, 15 Sep 2021 18:47:51 +0200 Subject: refactor(plugins): remove old generated completion files This removes .gitignore plugin files and adds a force-rm of the old completion file, which ignores any errors if the file doesn't exist. --- plugins/cargo/.gitignore | 1 - plugins/cargo/cargo.plugin.zsh | 4 ++++ plugins/deno/.gitignore | 1 - plugins/deno/deno.plugin.zsh | 3 +++ plugins/fnm/.gitignore | 2 -- plugins/fnm/fnm.plugin.zsh | 3 +++ plugins/gh/.gitignore | 1 - plugins/gh/gh.plugin.zsh | 3 +++ plugins/rustup/.gitignore | 1 - plugins/rustup/rustup.plugin.zsh | 3 +++ 10 files changed, 16 insertions(+), 6 deletions(-) delete mode 100644 plugins/cargo/.gitignore delete mode 100644 plugins/deno/.gitignore delete mode 100644 plugins/fnm/.gitignore delete mode 100644 plugins/gh/.gitignore delete mode 100644 plugins/rustup/.gitignore (limited to 'plugins/fnm') diff --git a/plugins/cargo/.gitignore b/plugins/cargo/.gitignore deleted file mode 100644 index 42d7ecdd6..000000000 --- a/plugins/cargo/.gitignore +++ /dev/null @@ -1 +0,0 @@ -_cargo diff --git a/plugins/cargo/cargo.plugin.zsh b/plugins/cargo/cargo.plugin.zsh index 95e63dd3c..7082d2d55 100644 --- a/plugins/cargo/cargo.plugin.zsh +++ b/plugins/cargo/cargo.plugin.zsh @@ -1,4 +1,8 @@ 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" diff --git a/plugins/deno/.gitignore b/plugins/deno/.gitignore deleted file mode 100644 index cba5b03e8..000000000 --- a/plugins/deno/.gitignore +++ /dev/null @@ -1 +0,0 @@ -_deno diff --git a/plugins/deno/deno.plugin.zsh b/plugins/deno/deno.plugin.zsh index e22c4e4c8..34adddc37 100644 --- a/plugins/deno/deno.plugin.zsh +++ b/plugins/deno/deno.plugin.zsh @@ -12,6 +12,9 @@ alias dup='deno upgrade' # COMPLETION FUNCTION if (( $+commands[deno] )); then + # remove old generated completion file + command rm -f "${0:A:h}/_deno" + ver="$(deno --version)" ver_file="$ZSH_CACHE_DIR/deno_version" comp_file="$ZSH_CACHE_DIR/completions/_deno" diff --git a/plugins/fnm/.gitignore b/plugins/fnm/.gitignore deleted file mode 100644 index 0b2bc9ab7..000000000 --- a/plugins/fnm/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -_fnm - diff --git a/plugins/fnm/fnm.plugin.zsh b/plugins/fnm/fnm.plugin.zsh index efb81a6fa..c161b27cd 100644 --- a/plugins/fnm/fnm.plugin.zsh +++ b/plugins/fnm/fnm.plugin.zsh @@ -1,4 +1,7 @@ if (( $+commands[fnm] )); then + # remove old generated completion file + command rm -f "${0:A:h}/_fnm" + ver="$(fnm --version)" ver_file="$ZSH_CACHE_DIR/fnm_version" comp_file="$ZSH_CACHE_DIR/completions/_fnm" diff --git a/plugins/gh/.gitignore b/plugins/gh/.gitignore deleted file mode 100644 index fa1244ab5..000000000 --- a/plugins/gh/.gitignore +++ /dev/null @@ -1 +0,0 @@ -_gh diff --git a/plugins/gh/gh.plugin.zsh b/plugins/gh/gh.plugin.zsh index a346ccf65..3e4cdee5e 100644 --- a/plugins/gh/gh.plugin.zsh +++ b/plugins/gh/gh.plugin.zsh @@ -1,5 +1,8 @@ # Autocompletion for the GitHub CLI (gh). if (( $+commands[gh] )); then + # remove old generated completion file + command rm -f "${0:A:h}/_gh" + ver="$(gh --version)" ver_file="$ZSH_CACHE_DIR/gh_version" comp_file="$ZSH_CACHE_DIR/completions/_gh" diff --git a/plugins/rustup/.gitignore b/plugins/rustup/.gitignore deleted file mode 100644 index ad38ae3bf..000000000 --- a/plugins/rustup/.gitignore +++ /dev/null @@ -1 +0,0 @@ -_rustup diff --git a/plugins/rustup/rustup.plugin.zsh b/plugins/rustup/rustup.plugin.zsh index 8740f255a..c6efc1b13 100644 --- a/plugins/rustup/rustup.plugin.zsh +++ b/plugins/rustup/rustup.plugin.zsh @@ -1,4 +1,7 @@ if (( $+commands[rustup] )); then + # remove old generated completion file + command rm -f "${0:A:h}/_rustup" + ver="$(rustup --version 2>/dev/null)" ver_file="$ZSH_CACHE_DIR/rustup_version" comp_file="$ZSH_CACHE_DIR/completions/_rustup" -- cgit v1.2.3-70-g09d2