diff options
author | Roman Perepelitsa <roman.perepelitsa@gmail.com> | 2024-01-20 11:38:33 +0300 |
---|---|---|
committer | Roman Perepelitsa <roman.perepelitsa@gmail.com> | 2024-01-20 11:38:33 +0300 |
commit | ecf91710c0d628d054f0eff72a7f08d7a9285d26 (patch) | |
tree | a48ca0f68919e0c81404a5d837edaa2ea2853a74 | |
parent | 30ba16ecd84cde5ef8b7eaef407d26f909371f3a (diff) | |
parent | d774adcb85b36df7ed67bf13d286f34b88c98e99 (diff) |
Merge branch 'mickolka-feature/virtualenv-custom-prompt'
-rw-r--r-- | internal/p10k.zsh | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/internal/p10k.zsh b/internal/p10k.zsh index 5496864e..26df0e1f 100644 --- a/internal/p10k.zsh +++ b/internal/p10k.zsh @@ -4254,6 +4254,26 @@ function instant_prompt_chezmoi_shell() { _p9k_prompt_segment prompt_chezmoi_shell blue $_p9k_color1 CHEZMOI_ICON 1 '$CHEZMOI_ICON' '' } +function _p9k_parse_virtualenv_cfg() { + local cfg=$1 + echo $cfg + typeset -g reply + [[ -f $cfg && -r $cfg ]] || return + + local -a lines + lines=(${(f)"$(<$cfg)"}) || return + + local line prompt + local -a match mbegin mend + for line in $lines; do + if [[ $line =~ 'prompt = (.*)' ]]; then + prompt=$match[1] + eval "reply=$prompt" + return + fi + done +} + ################################################################ # Virtualenv: current working virtualenv # More information on virtualenv (Python): @@ -4269,6 +4289,15 @@ prompt_virtualenv() { elif [[ $v == $~_POWERLEVEL9K_VIRTUALENV_GENERIC_NAMES ]]; then v=${VIRTUAL_ENV:h:t} fi + local cfg="$VIRTUAL_ENV/pyvenv.cfg" + if ! _p9k_cache_stat_get $0 $cfg; then + local -a reply + _p9k_parse_virtualenv_cfg $cfg + _p9k_cache_stat_set $reply + fi + if [[ -n $_p9k__cache_val[1] ]]; then + v=$_p9k__cache_val[1] + fi msg+="$_POWERLEVEL9K_VIRTUALENV_LEFT_DELIMITER${v//\%/%%}$_POWERLEVEL9K_VIRTUALENV_RIGHT_DELIMITER" case $_POWERLEVEL9K_VIRTUALENV_SHOW_WITH_PYENV in false) |