feat(virtualenv): Use $VIRTUAL_ENV_PROMPT if set

Modify the `virtualenv_prompt_info` function to use the prompt string
specified when creating the virtual environment, instead of just the
basename of the environment. If `VIRTUAL_ENV_PROMPT` is not set, fall
back to just using the basename of `$VIRTUAL_ENV`.
This commit is contained in:
Heinrich Kruger 2025-03-08 23:39:21 +00:00
commit 480f254157
No known key found for this signature in database
GPG key ID: 334F351709C5FC59
2 changed files with 16 additions and 3 deletions

View file

@ -1,6 +1,16 @@
function virtualenv_prompt_info(){
[[ -n ${VIRTUAL_ENV} ]] || return
echo "${ZSH_THEME_VIRTUALENV_PREFIX=[}${VIRTUAL_ENV:t:gs/%/%%}${ZSH_THEME_VIRTUALENV_SUFFIX=]}"
# Some versions of virtualenv (e.g the version bundled with 'uv') wrap the
# prompt in parentheses with a trailing space.
local venv_prompt="${(*)VIRTUAL_ENV_PROMPT:/#%(#b)\((*)\) /${match[1]}}"
if [ -z ${venv_prompt} ]; then
# Older versions of virtualenv do not set VIRTUAL_ENV_PROMPT, so fall back
# to the basename of the virtualenv path.
venv_prompt="${VIRTUAL_ENV:t}"
fi
echo "${ZSH_THEME_VIRTUALENV_PREFIX=[}${venv_prompt:gs/%/%%}${ZSH_THEME_VIRTUALENV_SUFFIX=]}"
}
# disables prompt mangling in virtual_env/bin/activate