aboutsummaryrefslogtreecommitdiff
path: root/internal
diff options
context:
space:
mode:
authorRoman Perepelitsa <roman.perepelitsa@gmail.com>2024-01-20 11:38:33 +0300
committerRoman Perepelitsa <roman.perepelitsa@gmail.com>2024-01-20 11:38:33 +0300
commitecf91710c0d628d054f0eff72a7f08d7a9285d26 (patch)
treea48ca0f68919e0c81404a5d837edaa2ea2853a74 /internal
parent30ba16ecd84cde5ef8b7eaef407d26f909371f3a (diff)
parentd774adcb85b36df7ed67bf13d286f34b88c98e99 (diff)
Merge branch 'mickolka-feature/virtualenv-custom-prompt'
Diffstat (limited to 'internal')
-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)