From 830a5bcfd29fd577fdcd5f3b8e98cbaf973421fa Mon Sep 17 00:00:00 2001 From: Carlo Sala Date: Sat, 22 Aug 2026 17:24:24 +0200 Subject: [PATCH] fix: load completion files atomically (#14000) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Fixes #13964 Co-authored-by: Marc Cornellà --- plugins/1password/1password.plugin.zsh | 6 +++++- plugins/arduino-cli/arduino-cli.plugin.zsh | 6 +++++- plugins/argocd/argocd.plugin.zsh | 6 +++++- plugins/asdf/asdf.plugin.zsh | 6 +++++- plugins/buf/buf.plugin.zsh | 6 +++++- plugins/bun/bun.plugin.zsh | 6 +++++- plugins/charm/charm.plugin.zsh | 6 +++++- plugins/chezmoi/chezmoi.plugin.zsh | 6 +++++- plugins/codex/codex.plugin.zsh | 6 +++++- plugins/deno/deno.plugin.zsh | 6 +++++- plugins/docker/docker.plugin.zsh | 6 ++++-- plugins/doctl/doctl.plugin.zsh | 6 +++++- plugins/flutter/flutter.plugin.zsh | 6 +++++- plugins/fluxcd/fluxcd.plugin.zsh | 6 +++++- plugins/fnm/fnm.plugin.zsh | 6 +++++- plugins/gh/gh.plugin.zsh | 6 +++++- plugins/hasura/hasura.plugin.zsh | 6 +++++- plugins/hcloud/hcloud.plugin.zsh | 6 +++++- plugins/helm/helm.plugin.zsh | 6 +++++- plugins/jj/jj.plugin.zsh | 7 +++++-- plugins/k9s/k9s.plugin.zsh | 6 +++++- plugins/kind/kind.plugin.zsh | 6 +++++- plugins/kubectl/kubectl.plugin.zsh | 6 +++++- plugins/minikube/minikube.plugin.zsh | 6 +++++- plugins/mise/mise.plugin.zsh | 6 +++++- plugins/molecule/molecule.plugin.zsh | 6 +++++- plugins/mongo-atlas/mongo-atlas.plugin.zsh | 6 +++++- plugins/nats/nats.plugin.zsh | 12 ++++++++++-- plugins/ngrok/ngrok.plugin.zsh | 6 +++++- plugins/pass-cli/pass-cli.plugin.zsh | 6 +++++- plugins/pipenv/pipenv.plugin.zsh | 6 +++++- plugins/podman/podman.plugin.zsh | 6 +++++- plugins/poetry/poetry.plugin.zsh | 6 +++++- plugins/procs/procs.plugin.zsh | 16 ++++++++++------ plugins/pulumi/pulumi.plugin.zsh | 6 +++++- plugins/qodana/qodana.plugin.zsh | 6 +++++- plugins/rbw/rbw.plugin.zsh | 6 +++++- plugins/rclone/rclone.plugin.zsh | 6 +++++- plugins/rust/rust.plugin.zsh | 6 +++++- plugins/sigstore/sigstore.plugin.zsh | 6 +++++- plugins/skaffold/skaffold.plugin.zsh | 6 +++++- plugins/stripe/stripe.plugin.zsh | 6 +++++- plugins/tailscale/tailscale.plugin.zsh | 6 +++++- plugins/task/task.plugin.zsh | 6 +++++- plugins/timoni/timoni.plugin.zsh | 6 +++++- plugins/uv/uv.plugin.zsh | 11 +++++++++-- plugins/volta/volta.plugin.zsh | 6 +++++- 47 files changed, 248 insertions(+), 56 deletions(-) diff --git a/plugins/1password/1password.plugin.zsh b/plugins/1password/1password.plugin.zsh index e8f91f8fe..b5a321130 100644 --- a/plugins/1password/1password.plugin.zsh +++ b/plugins/1password/1password.plugin.zsh @@ -9,7 +9,11 @@ if [[ ! -f "$ZSH_CACHE_DIR/completions/_op" ]]; then _comps[op]=_op fi -op completion zsh >| "$ZSH_CACHE_DIR/completions/_op" &| +zmodload -F zsh/files b:zf_mv +() { + local TMPPREFIX="$ZSH_CACHE_DIR/completions/_op" + zf_mv -f -- =( op completion zsh ) "$TMPPREFIX" +} &| # Load opswd function autoload -Uz opswd diff --git a/plugins/arduino-cli/arduino-cli.plugin.zsh b/plugins/arduino-cli/arduino-cli.plugin.zsh index e4fdcf9fe..776e03363 100644 --- a/plugins/arduino-cli/arduino-cli.plugin.zsh +++ b/plugins/arduino-cli/arduino-cli.plugin.zsh @@ -11,4 +11,8 @@ if [[ ! -f "$ZSH_CACHE_DIR/completions/_arduino-cli" ]]; then fi # Generate and load arduino-cli completion -arduino-cli completion zsh >! "$ZSH_CACHE_DIR/completions/_arduino-cli" &| +zmodload -F zsh/files b:zf_mv +() { + local TMPPREFIX="$ZSH_CACHE_DIR/completions/_arduino-cli" + zf_mv -f -- =( arduino-cli completion zsh ) "$TMPPREFIX" +} &| diff --git a/plugins/argocd/argocd.plugin.zsh b/plugins/argocd/argocd.plugin.zsh index 8de7b0238..192e6f2b8 100644 --- a/plugins/argocd/argocd.plugin.zsh +++ b/plugins/argocd/argocd.plugin.zsh @@ -11,4 +11,8 @@ if [[ ! -f "$ZSH_CACHE_DIR/completions/_argocd" ]]; then _comps[argocd]=_argocd fi -argocd completion zsh >| "$ZSH_CACHE_DIR/completions/_argocd" &| +zmodload -F zsh/files b:zf_mv +() { + local TMPPREFIX="$ZSH_CACHE_DIR/completions/_argocd" + zf_mv -f -- =( argocd completion zsh ) "$TMPPREFIX" +} &| diff --git a/plugins/asdf/asdf.plugin.zsh b/plugins/asdf/asdf.plugin.zsh index 913949888..1029a5aba 100644 --- a/plugins/asdf/asdf.plugin.zsh +++ b/plugins/asdf/asdf.plugin.zsh @@ -12,4 +12,8 @@ if [[ ! -f "$ZSH_CACHE_DIR/completions/_asdf" ]]; then autoload -Uz _asdf _comps[asdf]=_asdf fi -asdf completion zsh >| "$ZSH_CACHE_DIR/completions/_asdf" &| +zmodload -F zsh/files b:zf_mv +() { + local TMPPREFIX="$ZSH_CACHE_DIR/completions/_asdf" + zf_mv -f -- =( asdf completion zsh ) "$TMPPREFIX" +} &| diff --git a/plugins/buf/buf.plugin.zsh b/plugins/buf/buf.plugin.zsh index 0b251ac37..962890001 100644 --- a/plugins/buf/buf.plugin.zsh +++ b/plugins/buf/buf.plugin.zsh @@ -11,4 +11,8 @@ if [[ ! -f "$ZSH_CACHE_DIR/completions/_buf" ]]; then fi # Generate and load buf completion -buf completion zsh >! "$ZSH_CACHE_DIR/completions/_buf" &| \ No newline at end of file +zmodload -F zsh/files b:zf_mv +() { + local TMPPREFIX="$ZSH_CACHE_DIR/completions/_buf" + zf_mv -f -- =( buf completion zsh ) "$TMPPREFIX" +} &| diff --git a/plugins/bun/bun.plugin.zsh b/plugins/bun/bun.plugin.zsh index 576dbbfeb..562cd254f 100644 --- a/plugins/bun/bun.plugin.zsh +++ b/plugins/bun/bun.plugin.zsh @@ -11,4 +11,8 @@ if [[ ! -f "$ZSH_CACHE_DIR/completions/_bun" ]]; then _comps[bun]=_bun fi -SHELL=zsh bun completions >| "$ZSH_CACHE_DIR/completions/_bun" &| +zmodload -F zsh/files b:zf_mv +() { + local TMPPREFIX="$ZSH_CACHE_DIR/completions/_bun" + zf_mv -f -- =( SHELL=zsh bun completions ) "$TMPPREFIX" +} &| diff --git a/plugins/charm/charm.plugin.zsh b/plugins/charm/charm.plugin.zsh index 52361ce95..6c9c2b420 100644 --- a/plugins/charm/charm.plugin.zsh +++ b/plugins/charm/charm.plugin.zsh @@ -11,4 +11,8 @@ if [[ ! -f "$ZSH_CACHE_DIR/completions/_charm" ]]; then _comps[charm]=_charm fi -charm completion zsh >| "$ZSH_CACHE_DIR/completions/_charm" &| +zmodload -F zsh/files b:zf_mv +() { + local TMPPREFIX="$ZSH_CACHE_DIR/completions/_charm" + zf_mv -f -- =( charm completion zsh ) "$TMPPREFIX" +} &| diff --git a/plugins/chezmoi/chezmoi.plugin.zsh b/plugins/chezmoi/chezmoi.plugin.zsh index 80e19fea1..65659adf2 100644 --- a/plugins/chezmoi/chezmoi.plugin.zsh +++ b/plugins/chezmoi/chezmoi.plugin.zsh @@ -11,4 +11,8 @@ if [[ ! -f "$ZSH_CACHE_DIR/completions/_chezmoi" ]]; then _comps[chezmoi]=_chezmoi fi -chezmoi completion zsh >| "$ZSH_CACHE_DIR/completions/_chezmoi" &| +zmodload -F zsh/files b:zf_mv +() { + local TMPPREFIX="$ZSH_CACHE_DIR/completions/_chezmoi" + zf_mv -f -- =( chezmoi completion zsh ) "$TMPPREFIX" +} &| diff --git a/plugins/codex/codex.plugin.zsh b/plugins/codex/codex.plugin.zsh index 654481be1..db0d21591 100644 --- a/plugins/codex/codex.plugin.zsh +++ b/plugins/codex/codex.plugin.zsh @@ -11,4 +11,8 @@ if [[ ! -f "$ZSH_CACHE_DIR/completions/_codex" ]]; then _comps[codex]=_codex fi -codex completion zsh < /dev/null 2> /dev/null >| "$ZSH_CACHE_DIR/completions/_codex" &| +zmodload -F zsh/files b:zf_mv +() { + local TMPPREFIX="$ZSH_CACHE_DIR/completions/_codex" + zf_mv -f -- =( codex completion zsh < /dev/null 2> /dev/null ) "$TMPPREFIX" +} &| diff --git a/plugins/deno/deno.plugin.zsh b/plugins/deno/deno.plugin.zsh index 91fd1618e..dac25c9bc 100644 --- a/plugins/deno/deno.plugin.zsh +++ b/plugins/deno/deno.plugin.zsh @@ -25,4 +25,8 @@ if [[ ! -f "$ZSH_CACHE_DIR/completions/_deno" ]]; then _comps[deno]=_deno fi -deno completions zsh >| "$ZSH_CACHE_DIR/completions/_deno" &| +zmodload -F zsh/files b:zf_mv +() { + local TMPPREFIX="$ZSH_CACHE_DIR/completions/_deno" + zf_mv -f -- =( deno completions zsh ) "$TMPPREFIX" +} &| diff --git a/plugins/docker/docker.plugin.zsh b/plugins/docker/docker.plugin.zsh index 9d7cf8641..d07ae6033 100644 --- a/plugins/docker/docker.plugin.zsh +++ b/plugins/docker/docker.plugin.zsh @@ -56,7 +56,8 @@ if [[ ! -f "$ZSH_CACHE_DIR/completions/_docker" ]]; then _comps[docker]=_docker fi -{ +zmodload -F zsh/files b:zf_mv +() { # `docker completion` is only available from 23.0.0 on # docker version returns `Docker version 24.0.2, build cb74dfcd85` # with `s:,:` remove the comma after the version, and select third word of it @@ -64,6 +65,7 @@ fi ! is-at-least 23.0.0 ${${(s:,:z)"$(command docker --version)"}[3]}; then command cp "${0:h}/completions/_docker" "$ZSH_CACHE_DIR/completions/_docker" else - command docker completion zsh | tee "$ZSH_CACHE_DIR/completions/_docker" > /dev/null + local TMPPREFIX="$ZSH_CACHE_DIR/completions/_docker" + zf_mv -f -- =( command docker completion zsh ) "$TMPPREFIX" fi } &| diff --git a/plugins/doctl/doctl.plugin.zsh b/plugins/doctl/doctl.plugin.zsh index 7b3a384a9..2565b56f0 100644 --- a/plugins/doctl/doctl.plugin.zsh +++ b/plugins/doctl/doctl.plugin.zsh @@ -14,4 +14,8 @@ if [[ ! -f "$ZSH_CACHE_DIR/completions/_doctl" ]]; then _comps[doctl]=_doctl fi -doctl completion zsh >| "$ZSH_CACHE_DIR/completions/_doctl" &| +zmodload -F zsh/files b:zf_mv +() { + local TMPPREFIX="$ZSH_CACHE_DIR/completions/_doctl" + zf_mv -f -- =( doctl completion zsh ) "$TMPPREFIX" +} &| diff --git a/plugins/flutter/flutter.plugin.zsh b/plugins/flutter/flutter.plugin.zsh index db8f5d389..9a095ff24 100644 --- a/plugins/flutter/flutter.plugin.zsh +++ b/plugins/flutter/flutter.plugin.zsh @@ -30,4 +30,8 @@ if [[ ! -f "$ZSH_CACHE_DIR/completions/_flutter" ]]; then _comps[flutter]=_flutter fi -flutter zsh-completion < /dev/null >| "$ZSH_CACHE_DIR/completions/_flutter" &| \ No newline at end of file +zmodload -F zsh/files b:zf_mv +() { + local TMPPREFIX="$ZSH_CACHE_DIR/completions/_flutter" + zf_mv -f -- =( flutter zsh-completion < /dev/null ) "$TMPPREFIX" +} &| diff --git a/plugins/fluxcd/fluxcd.plugin.zsh b/plugins/fluxcd/fluxcd.plugin.zsh index d30866a06..a78425d79 100644 --- a/plugins/fluxcd/fluxcd.plugin.zsh +++ b/plugins/fluxcd/fluxcd.plugin.zsh @@ -11,4 +11,8 @@ if [[ ! -f "$ZSH_CACHE_DIR/completions/_flux" ]]; then _comps[flux]=_flux fi -flux completion zsh >| "$ZSH_CACHE_DIR/completions/_flux" &| +zmodload -F zsh/files b:zf_mv +() { + local TMPPREFIX="$ZSH_CACHE_DIR/completions/_flux" + zf_mv -f -- =( flux completion zsh ) "$TMPPREFIX" +} &| diff --git a/plugins/fnm/fnm.plugin.zsh b/plugins/fnm/fnm.plugin.zsh index 90a5ae811..d0c38f163 100644 --- a/plugins/fnm/fnm.plugin.zsh +++ b/plugins/fnm/fnm.plugin.zsh @@ -10,7 +10,11 @@ if [[ ! -f "$ZSH_CACHE_DIR/completions/_fnm" ]]; then _comps[fnm]=_fnm fi -fnm completions --shell=zsh >| "$ZSH_CACHE_DIR/completions/_fnm" &| +zmodload -F zsh/files b:zf_mv +() { + local TMPPREFIX="$ZSH_CACHE_DIR/completions/_fnm" + zf_mv -f -- =( fnm completions --shell=zsh ) "$TMPPREFIX" +} &| if zstyle -t ':omz:plugins:fnm' autostart; then local -a fnm_env_cmd diff --git a/plugins/gh/gh.plugin.zsh b/plugins/gh/gh.plugin.zsh index 1d8d84c55..e7f9e347c 100644 --- a/plugins/gh/gh.plugin.zsh +++ b/plugins/gh/gh.plugin.zsh @@ -11,4 +11,8 @@ if [[ ! -f "$ZSH_CACHE_DIR/completions/_gh" ]]; then _comps[gh]=_gh fi -gh completion --shell zsh >| "$ZSH_CACHE_DIR/completions/_gh" &| +zmodload -F zsh/files b:zf_mv +() { + local TMPPREFIX="$ZSH_CACHE_DIR/completions/_gh" + zf_mv -f -- =( gh completion --shell zsh ) "$TMPPREFIX" +} &| diff --git a/plugins/hasura/hasura.plugin.zsh b/plugins/hasura/hasura.plugin.zsh index 18254c43b..47d8e02c6 100644 --- a/plugins/hasura/hasura.plugin.zsh +++ b/plugins/hasura/hasura.plugin.zsh @@ -9,5 +9,9 @@ if [[ ! -f "$ZSH_CACHE_DIR/completions/_hasura" ]]; then source "$ZSH_CACHE_DIR/completions/_hasura" else source "$ZSH_CACHE_DIR/completions/_hasura" - hasura completion zsh --file "$ZSH_CACHE_DIR/completions/_hasura" >/dev/null &| + zmodload -F zsh/files b:zf_mv + () { + local TMPPREFIX="$ZSH_CACHE_DIR/completions/_hasura" + zf_mv -f -- =( hasura completion zsh ) "$TMPPREFIX" + } &| fi diff --git a/plugins/hcloud/hcloud.plugin.zsh b/plugins/hcloud/hcloud.plugin.zsh index 3b1d4321e..c90ce1996 100644 --- a/plugins/hcloud/hcloud.plugin.zsh +++ b/plugins/hcloud/hcloud.plugin.zsh @@ -13,7 +13,11 @@ if [[ ! -f "$ZSH_CACHE_DIR/completions/_hcloud" ]]; then _comps[hcloud]=_hcloud fi -hcloud completion zsh 2> /dev/null >| "$ZSH_CACHE_DIR/completions/_hcloud" &| +zmodload -F zsh/files b:zf_mv +() { + local TMPPREFIX="$ZSH_CACHE_DIR/completions/_hcloud" + zf_mv -f -- =( hcloud completion zsh 2> /dev/null ) "$TMPPREFIX" +} &| # Main alias alias hc='hcloud' diff --git a/plugins/helm/helm.plugin.zsh b/plugins/helm/helm.plugin.zsh index e754a6541..4f969d36a 100644 --- a/plugins/helm/helm.plugin.zsh +++ b/plugins/helm/helm.plugin.zsh @@ -9,7 +9,11 @@ if [[ ! -f "$ZSH_CACHE_DIR/completions/_helm" ]]; then source "$ZSH_CACHE_DIR/completions/_helm" else source "$ZSH_CACHE_DIR/completions/_helm" - helm completion zsh | tee "$ZSH_CACHE_DIR/completions/_helm" >/dev/null &| + zmodload -F zsh/files b:zf_mv + () { + local TMPPREFIX="$ZSH_CACHE_DIR/completions/_helm" + zf_mv -f -- =( helm completion zsh ) "$TMPPREFIX" + } &| fi alias h='helm' diff --git a/plugins/jj/jj.plugin.zsh b/plugins/jj/jj.plugin.zsh index 4dfaa3494..db0d3e8f2 100644 --- a/plugins/jj/jj.plugin.zsh +++ b/plugins/jj/jj.plugin.zsh @@ -11,7 +11,11 @@ if [[ ! -f "$ZSH_CACHE_DIR/completions/_jj" ]]; then _comps[jj]=_jj fi -COMPLETE=zsh jj >| "$ZSH_CACHE_DIR/completions/_jj" &| +zmodload -F zsh/files b:zf_mv +() { + local TMPPREFIX="$ZSH_CACHE_DIR/completions/_jj" + zf_mv -f -- =( COMPLETE=zsh jj ) "$TMPPREFIX" +} &| function __jj_prompt_jj() { local -a flags @@ -72,4 +76,3 @@ alias jjsq='jj squash' alias jjst='jj status' alias jjwa='jj workspace add' alias jjwf='jj workspace forget' - diff --git a/plugins/k9s/k9s.plugin.zsh b/plugins/k9s/k9s.plugin.zsh index 630d4f7d3..a0a4da1b2 100644 --- a/plugins/k9s/k9s.plugin.zsh +++ b/plugins/k9s/k9s.plugin.zsh @@ -11,4 +11,8 @@ fi # and then generate it in the background. On first completion, # the actual completion file will be loaded. -k9s completion zsh >| "$ZSH_CACHE_DIR/completions/_k9s" &| +zmodload -F zsh/files b:zf_mv +() { + local TMPPREFIX="$ZSH_CACHE_DIR/completions/_k9s" + zf_mv -f -- =( k9s completion zsh ) "$TMPPREFIX" +} &| diff --git a/plugins/kind/kind.plugin.zsh b/plugins/kind/kind.plugin.zsh index 183eb7bd6..3cc6410c3 100644 --- a/plugins/kind/kind.plugin.zsh +++ b/plugins/kind/kind.plugin.zsh @@ -11,7 +11,11 @@ if [[ ! -f "$ZSH_CACHE_DIR/completions/_kind" ]]; then fi # Generate and load kind completion -kind completion zsh >! "$ZSH_CACHE_DIR/completions/_kind" &| +zmodload -F zsh/files b:zf_mv +() { + local TMPPREFIX="$ZSH_CACHE_DIR/completions/_kind" + zf_mv -f -- =( kind completion zsh ) "$TMPPREFIX" +} &| # Register aliases alias kicc="kind create cluster" diff --git a/plugins/kubectl/kubectl.plugin.zsh b/plugins/kubectl/kubectl.plugin.zsh index ba371cd87..baa663b36 100644 --- a/plugins/kubectl/kubectl.plugin.zsh +++ b/plugins/kubectl/kubectl.plugin.zsh @@ -10,7 +10,11 @@ if [[ ! -f "$ZSH_CACHE_DIR/completions/_kubectl" ]]; then _comps[kubectl]=_kubectl fi -kubectl completion zsh 2> /dev/null >| "$ZSH_CACHE_DIR/completions/_kubectl" &| +zmodload -F zsh/files b:zf_mv +() { + local TMPPREFIX="$ZSH_CACHE_DIR/completions/_kubectl" + zf_mv -f -- =( kubectl completion zsh 2> /dev/null ) "$TMPPREFIX" +} &| # This command is used a LOT both below and in daily life alias k=kubectl diff --git a/plugins/minikube/minikube.plugin.zsh b/plugins/minikube/minikube.plugin.zsh index 0d2737052..367bf5634 100644 --- a/plugins/minikube/minikube.plugin.zsh +++ b/plugins/minikube/minikube.plugin.zsh @@ -10,4 +10,8 @@ if [[ ! -f "$ZSH_CACHE_DIR/completions/_minikube" ]]; then _comps[minikube]=_minikube fi -minikube completion zsh >| "$ZSH_CACHE_DIR/completions/_minikube" &| +zmodload -F zsh/files b:zf_mv +() { + local TMPPREFIX="$ZSH_CACHE_DIR/completions/_minikube" + zf_mv -f -- =( minikube completion zsh ) "$TMPPREFIX" +} &| diff --git a/plugins/mise/mise.plugin.zsh b/plugins/mise/mise.plugin.zsh index 96373f5d2..2477d5c91 100644 --- a/plugins/mise/mise.plugin.zsh +++ b/plugins/mise/mise.plugin.zsh @@ -14,4 +14,8 @@ if [[ ! -f "$ZSH_CACHE_DIR/completions/_mise" ]]; then fi # Generate and load mise completion -mise completion zsh >| "$ZSH_CACHE_DIR/completions/_mise" &| +zmodload -F zsh/files b:zf_mv +() { + local TMPPREFIX="$ZSH_CACHE_DIR/completions/_mise" + zf_mv -f -- =( mise completion zsh ) "$TMPPREFIX" +} &| diff --git a/plugins/molecule/molecule.plugin.zsh b/plugins/molecule/molecule.plugin.zsh index cee25ab03..f80335fd2 100644 --- a/plugins/molecule/molecule.plugin.zsh +++ b/plugins/molecule/molecule.plugin.zsh @@ -11,7 +11,11 @@ if [[ ! -f "$ZSH_CACHE_DIR/completions/_molecule" ]]; then _comps[molecule]=_molecule fi -_MOLECULE_COMPLETE=zsh_source molecule >| "$ZSH_CACHE_DIR/completions/_molecule" &| +zmodload -F zsh/files b:zf_mv +() { + local TMPPREFIX="$ZSH_CACHE_DIR/completions/_molecule" + zf_mv -f -- =( _MOLECULE_COMPLETE=zsh_source molecule ) "$TMPPREFIX" +} &| # Alias # molecule: https://docs.ansible.com/projects/molecule/ diff --git a/plugins/mongo-atlas/mongo-atlas.plugin.zsh b/plugins/mongo-atlas/mongo-atlas.plugin.zsh index 6762c909e..378d48cee 100644 --- a/plugins/mongo-atlas/mongo-atlas.plugin.zsh +++ b/plugins/mongo-atlas/mongo-atlas.plugin.zsh @@ -11,4 +11,8 @@ if [[ ! -f "$ZSH_CACHE_DIR/completions/_atlas" ]]; then _comps[atlas]=_atlas fi -atlas completion zsh >| "$ZSH_CACHE_DIR/completions/atlas" &| +zmodload -F zsh/files b:zf_mv +() { + local TMPPREFIX="$ZSH_CACHE_DIR/completions/_atlas" + zf_mv -f -- =( atlas completion zsh ) "$TMPPREFIX" +} &| diff --git a/plugins/nats/nats.plugin.zsh b/plugins/nats/nats.plugin.zsh index 8b95b07c6..d81fd7682 100644 --- a/plugins/nats/nats.plugin.zsh +++ b/plugins/nats/nats.plugin.zsh @@ -7,7 +7,11 @@ if (( $+commands[nsc] )); then _comps[nsc]=_nsc fi - nsc completion zsh >| "$ZSH_CACHE_DIR/completions/_nsc" &| + zmodload -F zsh/files b:zf_mv + () { + local TMPPREFIX="$ZSH_CACHE_DIR/completions/_nsc" + zf_mv -f -- =( nsc completion zsh ) "$TMPPREFIX" + } &| fi if (( $+commands[nats] )); then @@ -19,5 +23,9 @@ if (( $+commands[nats] )); then _comps[nats]=_nats fi - nats --completion-script-zsh >| "$ZSH_CACHE_DIR/completions/_nats" &| + zmodload -F zsh/files b:zf_mv + () { + local TMPPREFIX="$ZSH_CACHE_DIR/completions/_nats" + zf_mv -f -- =( nats --completion-script-zsh ) "$TMPPREFIX" + } &| fi diff --git a/plugins/ngrok/ngrok.plugin.zsh b/plugins/ngrok/ngrok.plugin.zsh index ca3c82db0..5291713e3 100644 --- a/plugins/ngrok/ngrok.plugin.zsh +++ b/plugins/ngrok/ngrok.plugin.zsh @@ -11,4 +11,8 @@ if [[ ! -f "$ZSH_CACHE_DIR/completions/_ngrok" ]]; then _comps[ngrok]=_ngrok fi -ngrok completion zsh >| "$ZSH_CACHE_DIR/completions/_ngrok" &| +zmodload -F zsh/files b:zf_mv +() { + local TMPPREFIX="$ZSH_CACHE_DIR/completions/_ngrok" + zf_mv -f -- =( ngrok completion zsh ) "$TMPPREFIX" +} &| diff --git a/plugins/pass-cli/pass-cli.plugin.zsh b/plugins/pass-cli/pass-cli.plugin.zsh index b613ecf3a..9ee0efc79 100644 --- a/plugins/pass-cli/pass-cli.plugin.zsh +++ b/plugins/pass-cli/pass-cli.plugin.zsh @@ -11,4 +11,8 @@ if [[ ! -f "$ZSH_CACHE_DIR/completions/_pass-cli" ]]; then _comps[pass-cli]=_pass-cli fi -pass-cli completions zsh >| "$ZSH_CACHE_DIR/completions/_pass-cli" &| +zmodload -F zsh/files b:zf_mv +() { + local TMPPREFIX="$ZSH_CACHE_DIR/completions/_pass-cli" + zf_mv -f -- =( pass-cli completions zsh ) "$TMPPREFIX" +} &| diff --git a/plugins/pipenv/pipenv.plugin.zsh b/plugins/pipenv/pipenv.plugin.zsh index 802641a0e..82ad2b753 100644 --- a/plugins/pipenv/pipenv.plugin.zsh +++ b/plugins/pipenv/pipenv.plugin.zsh @@ -43,7 +43,11 @@ else _comps[pipenv]=_pipenv fi - _PIPENV_COMPLETE=zsh_source pipenv >| "$ZSH_CACHE_DIR/completions/_pipenv" &| + zmodload -F zsh/files b:zf_mv + () { + local TMPPREFIX="$ZSH_CACHE_DIR/completions/_pipenv" + zf_mv -f -- =( _PIPENV_COMPLETE=zsh_source pipenv ) "$TMPPREFIX" + } &| fi if zstyle -T ':omz:plugins:pipenv' auto-shell; then diff --git a/plugins/podman/podman.plugin.zsh b/plugins/podman/podman.plugin.zsh index 97cf92b2a..f06900dee 100644 --- a/plugins/podman/podman.plugin.zsh +++ b/plugins/podman/podman.plugin.zsh @@ -10,7 +10,11 @@ if [[ ! -f "$ZSH_CACHE_DIR/completions/_podman" ]]; then _comps[podman]=_podman fi -podman completion zsh 2> /dev/null >| "$ZSH_CACHE_DIR/completions/_podman" &| +zmodload -F zsh/files b:zf_mv +() { + local TMPPREFIX="$ZSH_CACHE_DIR/completions/_podman" + zf_mv -f -- =( podman completion zsh 2> /dev/null ) "$TMPPREFIX" +} &| alias pbl='podman build' alias pcin='podman container inspect' diff --git a/plugins/poetry/poetry.plugin.zsh b/plugins/poetry/poetry.plugin.zsh index fe6a0f7ed..2e73388c9 100644 --- a/plugins/poetry/poetry.plugin.zsh +++ b/plugins/poetry/poetry.plugin.zsh @@ -39,4 +39,8 @@ if [[ ! -f "$ZSH_CACHE_DIR/completions/_poetry" ]]; then _comps[poetry]=_poetry fi -poetry completions zsh >| "$ZSH_CACHE_DIR/completions/_poetry" &| +zmodload -F zsh/files b:zf_mv +() { + local TMPPREFIX="$ZSH_CACHE_DIR/completions/_poetry" + zf_mv -f -- =( poetry completions zsh ) "$TMPPREFIX" +} &| diff --git a/plugins/procs/procs.plugin.zsh b/plugins/procs/procs.plugin.zsh index 8b15f1d5d..9c6d714f1 100644 --- a/plugins/procs/procs.plugin.zsh +++ b/plugins/procs/procs.plugin.zsh @@ -10,12 +10,16 @@ if [[ ! -f "$ZSH_CACHE_DIR/completions/_procs" ]]; then _comps[procs]=_procs fi -{ +zmodload -F zsh/files b:zf_mv +() { + local TMPPREFIX="$ZSH_CACHE_DIR/completions/_procs" autoload -Uz is-at-least local _version=$(procs --version) - if is-at-least "0.14" "${_version#procs }"; then - procs --gen-completion-out zsh >| "$ZSH_CACHE_DIR/completions/_procs" - else - procs --completion-out zsh >| "$ZSH_CACHE_DIR/completions/_procs" - fi + zf_mv -f -- =( + if is-at-least "0.14" "${_version#procs }"; then + procs --gen-completion-out zsh + else + procs --completion-out zsh + fi + ) "$TMPPREFIX" } &| diff --git a/plugins/pulumi/pulumi.plugin.zsh b/plugins/pulumi/pulumi.plugin.zsh index 70686017f..e7fa56add 100644 --- a/plugins/pulumi/pulumi.plugin.zsh +++ b/plugins/pulumi/pulumi.plugin.zsh @@ -10,7 +10,11 @@ if [[ ! -f "$ZSH_CACHE_DIR/completions/_pulumi" ]]; then _comps[pulumi]=_pulumi fi -pulumi gen-completion zsh >| "$ZSH_CACHE_DIR/completions/_pulumi" &| +zmodload -F zsh/files b:zf_mv +() { + local TMPPREFIX="$ZSH_CACHE_DIR/completions/_pulumi" + zf_mv -f -- =( pulumi gen-completion zsh ) "$TMPPREFIX" +} &| # Aliases alias pul='pulumi' diff --git a/plugins/qodana/qodana.plugin.zsh b/plugins/qodana/qodana.plugin.zsh index 2b92a8051..87e75c55b 100644 --- a/plugins/qodana/qodana.plugin.zsh +++ b/plugins/qodana/qodana.plugin.zsh @@ -11,4 +11,8 @@ if [[ ! -f "$ZSH_CACHE_DIR/completions/_qodana" ]]; then _comps[qodana]=_qodana fi -qodana completion zsh >| "$ZSH_CACHE_DIR/completions/_qodana" &| +zmodload -F zsh/files b:zf_mv +() { + local TMPPREFIX="$ZSH_CACHE_DIR/completions/_qodana" + zf_mv -f -- =( qodana completion zsh ) "$TMPPREFIX" +} &| diff --git a/plugins/rbw/rbw.plugin.zsh b/plugins/rbw/rbw.plugin.zsh index 0b55e6e5f..b425c9a61 100644 --- a/plugins/rbw/rbw.plugin.zsh +++ b/plugins/rbw/rbw.plugin.zsh @@ -10,7 +10,11 @@ if [[ ! -f "$ZSH_CACHE_DIR/completions/_rbw" ]]; then _comps[rbw]=_rbw fi -rbw gen-completions zsh >| "$ZSH_CACHE_DIR/completions/_rbw" &| +zmodload -F zsh/files b:zf_mv +() { + local TMPPREFIX="$ZSH_CACHE_DIR/completions/_rbw" + zf_mv -f -- =( rbw gen-completions zsh ) "$TMPPREFIX" +} &| # rbwpw function copies the password of a service to the clipboard # and clears it after 20 seconds diff --git a/plugins/rclone/rclone.plugin.zsh b/plugins/rclone/rclone.plugin.zsh index a6676131c..6d25b7ced 100644 --- a/plugins/rclone/rclone.plugin.zsh +++ b/plugins/rclone/rclone.plugin.zsh @@ -11,4 +11,8 @@ if [[ ! -f "$ZSH_CACHE_DIR/completions/_rclone" ]]; then _comps[rclone]=_rclone fi -rclone completion zsh - >| "$ZSH_CACHE_DIR/completions/_rclone" &| +zmodload -F zsh/files b:zf_mv +() { + local TMPPREFIX="$ZSH_CACHE_DIR/completions/_rclone" + zf_mv -f -- =( rclone completion zsh - ) "$TMPPREFIX" +} &| diff --git a/plugins/rust/rust.plugin.zsh b/plugins/rust/rust.plugin.zsh index 567cebc64..ab8308375 100644 --- a/plugins/rust/rust.plugin.zsh +++ b/plugins/rust/rust.plugin.zsh @@ -19,7 +19,11 @@ if [[ ! -f "$ZSH_CACHE_DIR/completions/_rustup" ]]; then fi # Generate completion files in the background -rustup completions zsh >| "$ZSH_CACHE_DIR/completions/_rustup" &| +zmodload -F zsh/files b:zf_mv +() { + local TMPPREFIX="$ZSH_CACHE_DIR/completions/_rustup" + zf_mv -f -- =( rustup completions zsh ) "$TMPPREFIX" +} &| cat >| "$ZSH_CACHE_DIR/completions/_cargo" <<'EOF' #compdef cargo source "$(rustup run ${${(z)$(rustup default)}[1]} rustc --print sysroot)"/share/zsh/site-functions/_cargo diff --git a/plugins/sigstore/sigstore.plugin.zsh b/plugins/sigstore/sigstore.plugin.zsh index 1f9d77c11..606e6dffd 100644 --- a/plugins/sigstore/sigstore.plugin.zsh +++ b/plugins/sigstore/sigstore.plugin.zsh @@ -12,7 +12,11 @@ function install_autocompletion { _comps[$1]=_$1 fi - $1 completion zsh >| "$ZSH_CACHE_DIR/completions/_$1" &| + zmodload -F zsh/files b:zf_mv + () { + local TMPPREFIX="$ZSH_CACHE_DIR/completions/_$1" + zf_mv -f -- =( $1 completion zsh ) "$TMPPREFIX" + } "$1" &| } install_autocompletion cosign diff --git a/plugins/skaffold/skaffold.plugin.zsh b/plugins/skaffold/skaffold.plugin.zsh index 8296c450c..09fd3a3a9 100644 --- a/plugins/skaffold/skaffold.plugin.zsh +++ b/plugins/skaffold/skaffold.plugin.zsh @@ -11,4 +11,8 @@ if [[ ! -f "$ZSH_CACHE_DIR/completions/_skaffold" ]]; then _comps[skaffold]=_skaffold fi -skaffold completion zsh >| "$ZSH_CACHE_DIR/completions/_skaffold" &| +zmodload -F zsh/files b:zf_mv +() { + local TMPPREFIX="$ZSH_CACHE_DIR/completions/_skaffold" + zf_mv -f -- =( skaffold completion zsh ) "$TMPPREFIX" +} &| diff --git a/plugins/stripe/stripe.plugin.zsh b/plugins/stripe/stripe.plugin.zsh index e2041bef2..aee4c297b 100644 --- a/plugins/stripe/stripe.plugin.zsh +++ b/plugins/stripe/stripe.plugin.zsh @@ -10,4 +10,8 @@ if [[ ! -f "$ZSH_CACHE_DIR/completions/_stripe" ]]; then _comps[stripe]=_stripe fi -stripe completion --shell zsh --write-to-stdout >| "$ZSH_CACHE_DIR/completions/_stripe" &| +zmodload -F zsh/files b:zf_mv +() { + local TMPPREFIX="$ZSH_CACHE_DIR/completions/_stripe" + zf_mv -f -- =( stripe completion --shell zsh --write-to-stdout ) "$TMPPREFIX" +} &| diff --git a/plugins/tailscale/tailscale.plugin.zsh b/plugins/tailscale/tailscale.plugin.zsh index 8b4e1e34d..598843c6c 100644 --- a/plugins/tailscale/tailscale.plugin.zsh +++ b/plugins/tailscale/tailscale.plugin.zsh @@ -22,4 +22,8 @@ if (( $+aliases[tailscale] )); then _comps[${aliases[tailscale]:t}]=_tailscale fi -tailscale completion zsh >| "$ZSH_CACHE_DIR/completions/_tailscale" &| +zmodload -F zsh/files b:zf_mv +() { + local TMPPREFIX="$ZSH_CACHE_DIR/completions/_tailscale" + zf_mv -f -- =( tailscale completion zsh ) "$TMPPREFIX" +} &| diff --git a/plugins/task/task.plugin.zsh b/plugins/task/task.plugin.zsh index 86b21b3cd..c69797c77 100644 --- a/plugins/task/task.plugin.zsh +++ b/plugins/task/task.plugin.zsh @@ -11,4 +11,8 @@ if [[ ! -f "$ZSH_CACHE_DIR/completions/_task" ]]; then fi # Generate and load task completion -task --completion zsh >! "$ZSH_CACHE_DIR/completions/_task" &| \ No newline at end of file +zmodload -F zsh/files b:zf_mv +() { + local TMPPREFIX="$ZSH_CACHE_DIR/completions/_task" + zf_mv -f -- =( task --completion zsh ) "$TMPPREFIX" +} &| diff --git a/plugins/timoni/timoni.plugin.zsh b/plugins/timoni/timoni.plugin.zsh index 971eda0b4..286f52848 100644 --- a/plugins/timoni/timoni.plugin.zsh +++ b/plugins/timoni/timoni.plugin.zsh @@ -11,4 +11,8 @@ if [[ ! -f "$ZSH_CACHE_DIR/completions/_timoni" ]]; then _comps[timoni]=_timoni fi -timoni completion zsh >| "$ZSH_CACHE_DIR/completions/_timoni" &| +zmodload -F zsh/files b:zf_mv +() { + local TMPPREFIX="$ZSH_CACHE_DIR/completions/_timoni" + zf_mv -f -- =( timoni completion zsh ) "$TMPPREFIX" +} &| diff --git a/plugins/uv/uv.plugin.zsh b/plugins/uv/uv.plugin.zsh index 0c0795e56..2823c9555 100644 --- a/plugins/uv/uv.plugin.zsh +++ b/plugins/uv/uv.plugin.zsh @@ -43,5 +43,12 @@ fi # uv and uvx are installed together (uvx is an alias to `uv tool run`) # Overwrites the file each time as completions might change with uv versions. -uv generate-shell-completion zsh >| "$ZSH_CACHE_DIR/completions/_uv" &| -uvx --generate-shell-completion zsh >| "$ZSH_CACHE_DIR/completions/_uvx" &| +zmodload -F zsh/files b:zf_mv +() { + local TMPPREFIX="$ZSH_CACHE_DIR/completions/_uv" + zf_mv -f -- =( uv generate-shell-completion zsh ) "$TMPPREFIX" +} &| +() { + local TMPPREFIX="$ZSH_CACHE_DIR/completions/_uvx" + zf_mv -f -- =( uvx --generate-shell-completion zsh ) "$TMPPREFIX" +} &| diff --git a/plugins/volta/volta.plugin.zsh b/plugins/volta/volta.plugin.zsh index 173b9c871..b8d08a9ff 100644 --- a/plugins/volta/volta.plugin.zsh +++ b/plugins/volta/volta.plugin.zsh @@ -11,4 +11,8 @@ if [[ ! -f "$ZSH_CACHE_DIR/completions/_volta" ]]; then _comps[volta]=_volta fi -volta completions zsh >| "$ZSH_CACHE_DIR/completions/_volta" &| +zmodload -F zsh/files b:zf_mv +() { + local TMPPREFIX="$ZSH_CACHE_DIR/completions/_volta" + zf_mv -f -- =( volta completions zsh ) "$TMPPREFIX" +} &|