aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRoman Perepelitsa <roman.perepelitsa@gmail.com>2024-01-20 11:38:20 +0300
committerRoman Perepelitsa <roman.perepelitsa@gmail.com>2024-01-20 11:38:20 +0300
commitd774adcb85b36df7ed67bf13d286f34b88c98e99 (patch)
treea48ca0f68919e0c81404a5d837edaa2ea2853a74
parent30ba16ecd84cde5ef8b7eaef407d26f909371f3a (diff)
parent4d7925c983c923e83f3f87ab6da5a279d6a8173c (diff)
Merge branch 'feature/virtualenv-custom-prompt' of https://github.com/mickolka/powerlevel10k into mickolka-feature/virtualenv-custom-prompt
-rw-r--r--internal/p10k.zsh29
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)