diff --git a/plugins/mise/mise.plugin.zsh b/plugins/mise/mise.plugin.zsh index 96373f5d2..22cad6759 100644 --- a/plugins/mise/mise.plugin.zsh +++ b/plugins/mise/mise.plugin.zsh @@ -7,11 +7,15 @@ eval "$(mise activate zsh)" # If the completion file doesn't exist yet, we need to autoload it and # bind it to `mise`. Otherwise, compinit will have already done that. -if [[ ! -f "$ZSH_CACHE_DIR/completions/_mise" ]]; then +local comp_file="$ZSH_CACHE_DIR/completions/_mise" + +if [[ ! -f "$comp_file" ]]; then typeset -g -A _comps autoload -Uz _mise _comps[mise]=_mise fi -# Generate and load mise completion -mise completion zsh >| "$ZSH_CACHE_DIR/completions/_mise" &| +# Generate completion only when missing/empty or stale. +if [[ ! -s "$comp_file" || "$commands[mise]" -nt "$comp_file" ]]; then + mise completion zsh >| "$comp_file" &| +fi