fix(pipenv): add argcomplete compatibility for >= 2026.5.0

This commit is contained in:
Matheus Felipe 2026-04-12 04:27:42 -03:00
commit 65681fd8f1
No known key found for this signature in database
GPG key ID: E6056C95900163D1
2 changed files with 28 additions and 9 deletions

View file

@ -10,7 +10,7 @@ plugins=(... pipenv ...)
## Features ## Features
- Adds completion for pipenv - Adds completion for pipenv ([install the `argcomplete` package to get it working with pipenv >= 2026.5.0](https://pipenv.pypa.io/en/latest/shell.html#shell-completion))
- Auto activates and deactivates pipenv shell - Auto activates and deactivates pipenv shell
- Adds short aliases for common pipenv commands - Adds short aliases for common pipenv commands
- `pch` is aliased to `pipenv check` - `pch` is aliased to `pipenv check`

View file

@ -2,15 +2,33 @@ if (( ! $+commands[pipenv] )); then
return return
fi fi
# If the completion file doesn't exist yet, we need to autoload it and # Compatibility note:
# bind it to `pipenv`. Otherwise, compinit will have already done that. # pipenv < 2026.5.0 used Click-based shell completion driven by the
if [[ ! -f "$ZSH_CACHE_DIR/completions/_pipenv" ]]; then # _PIPENV_COMPLETE environment variable.
typeset -g -A _comps #
autoload -Uz _pipenv # pipenv >= 2026.5.0 removed this mechanism and switched to argcomplete-based
_comps[pipenv]=_pipenv # completion using register-python-argcomplete instead.
fi
_PIPENV_COMPLETE=zsh_source pipenv >| "$ZSH_CACHE_DIR/completions/_pipenv" &| if (( $+commands[register-python-argcomplete] )); then
# pipenv >= 2026.5.0 (argcomplete-based completion)
autoload -U bashcompinit
bashcompinit
eval "$(register-python-argcomplete pipenv)"
else
# pipenv < 2026.5.0 (legacy Click-based completion via _PIPENV_COMPLETE)
# If the completion file doesn't exist yet, we need to autoload it and
# bind it to `pipenv`. Otherwise, compinit will have already done that.
if [[ ! -f "$ZSH_CACHE_DIR/completions/_pipenv" ]]; then
typeset -g -A _comps
autoload -Uz _pipenv
_comps[pipenv]=_pipenv
fi
_PIPENV_COMPLETE=zsh_source pipenv >| "$ZSH_CACHE_DIR/completions/_pipenv" &|
fi
if zstyle -T ':omz:plugins:pipenv' auto-shell; then if zstyle -T ':omz:plugins:pipenv' auto-shell; then
# Automatic pipenv shell activation/deactivation # Automatic pipenv shell activation/deactivation
@ -34,6 +52,7 @@ if zstyle -T ':omz:plugins:pipenv' auto-shell; then
fi fi
fi fi
} }
autoload -U add-zsh-hook autoload -U add-zsh-hook
add-zsh-hook chpwd _togglePipenvShell add-zsh-hook chpwd _togglePipenvShell
_togglePipenvShell _togglePipenvShell