1
0
Fork 0
mirror of https://github.com/romkatv/powerlevel10k.git synced 2024-11-24 05:00:07 +00:00

Fix up function return value passing

Don't use echo, instead set a variable which the calling function
checks. This is the standard in p10, presumably because it's faster..?
This commit is contained in:
Alex Jurkiewicz 2023-10-12 13:50:45 +08:00
parent a79a934f27
commit e162e2a891

View file

@ -4287,15 +4287,14 @@ _virtualenv_VIRTUAL_ENV() {
# VIRTUAL_ENV is the on-disk path, VIRTUAL_ENV_PROMPT is `(name_of_virtualenv) `.
# Use custom name if it was set (python -m venv -p "foo" .venv)
if [[ $VIRTUAL_ENV_PROMPT == '('?*') ' && $VIRTUAL_ENV_PROMPT != "($n) " ]]; then
n=$VIRTUAL_ENV_PROMPT[2,-3]
_virtualenv_name=$VIRTUAL_ENV_PROMPT[2,-3]
# Use parent directory name if virtualenv name is generic (eg .venv)
elif [[ $v == $~_POWERLEVEL9K_VIRTUALENV_GENERIC_NAMES ]]; then
n=${VIRTUAL_ENV:h:t}
_virtualenv_name=${VIRTUAL_ENV:h:t}
# Otherwise use the virtualenv name as-is
else
n=${VIRTUAL_ENV:t}
_virtualenv_name=${VIRTUAL_ENV:t}
fi
echo "$n"
}
_virtualenv_poetry() {
local idx=$1
@ -4303,32 +4302,31 @@ _virtualenv_poetry() {
local pyproject="$dir/pyproject.toml"
_p9k_cached_cmd 0 '' poetry -C "$dir" version
# Return the first word only, eg the value of pyproject.toml's `poetry.name`
echo "${_p9k__ret%% *}"
_virtualenv_name="${_p9k__ret%% *}"
}
prompt_virtualenv() {
local msg=''
if (( _POWERLEVEL9K_VIRTUALENV_SHOW_PYTHON_VERSION )) && _p9k_python_version; then
msg="${_p9k__ret//\%/%%} "
fi
# Determine virtualenv name with a few strategies
local n=''
_virtualenv_name=''
if [[ -n $VIRTUAL_ENV ]]; then
n=$(_virtualenv_VIRTUAL_ENV)
_virtualenv_VIRTUAL_ENV
else
local start end
_p9k_upglob pyproject.toml
local idx=$?
if (( idx > 0 )); then
n=$(_virtualenv_poetry $idx)
_virtualenv_poetry $idx
fi
fi
msg+="$_POWERLEVEL9K_VIRTUALENV_LEFT_DELIMITER${n//\%/%%}$_POWERLEVEL9K_VIRTUALENV_RIGHT_DELIMITER"
msg+="$_POWERLEVEL9K_VIRTUALENV_LEFT_DELIMITER${_virtualenv_name//\%/%%}$_POWERLEVEL9K_VIRTUALENV_RIGHT_DELIMITER"
case $_POWERLEVEL9K_VIRTUALENV_SHOW_WITH_PYENV in
false)
_p9k_prompt_segment "$0" "blue" "$_p9k_color1" 'PYTHON_ICON' 0 '${(M)${#P9K_PYENV_PYTHON_VERSION}:#0}' "$msg"
;;
if-different)
_p9k_escape $n
_p9k_escape $_virtualenv_name
_p9k_prompt_segment "$0" "blue" "$_p9k_color1" 'PYTHON_ICON' 0 '${${:-'$_p9k__ret'}:#$_p9k__pyenv_version}' "$msg"
;;
*)