5ff21efad72117377c7b6cabd850d6b2b01ee31a

Author
shellbye <Shellbye@users.noreply.github.com>
Committer
Marc Cornellà <marc.cornella@live.com>
Date

Message

Add pygmalion-virtualenv theme (#5139)

Diff

 1diff --git a/themes/pygmalion-virtualenv.zsh-theme b/themes/pygmalion-virtualenv.zsh-theme
 2new file mode 100644
 3index 0000000000000000000000000000000000000000..ea28e125a18e1475565391b262538d0ba2714eb1
 4--- /dev/null
 5+++ b/themes/pygmalion-virtualenv.zsh-theme
 6@@ -0,0 +1,50 @@
 7+# Yay! High voltage and arrows!
 8+
 9+
10+function _virtualenv_prompt_info {
11+    if [[ -n "$(whence virtualenv_prompt_info)" ]]; then
12+        if [ -n "$(whence pyenv_prompt_info)" ]; then
13+            if [ "$1" = "inline" ]; then
14+                ZSH_THEME_VIRTUAL_ENV_PROMPT_PREFIX=%{$fg[blue]%}"::%{$fg[red]%}"
15+                ZSH_THEME_VIRTUAL_ENV_PROMPT_SUFFIX=""
16+                virtualenv_prompt_info
17+            fi
18+            [ "$(pyenv_prompt_info)" = "${PYENV_PROMPT_DEFAULT_VERSION}" ] && virtualenv_prompt_info
19+        else
20+            virtualenv_prompt_info
21+        fi
22+    fi
23+}
24+
25+prompt_setup_pygmalion(){
26+  ZSH_THEME_GIT_PROMPT_PREFIX="%{$reset_color%}%{$fg[green]%}"
27+  ZSH_THEME_GIT_PROMPT_SUFFIX="%{$reset_color%} "
28+  ZSH_THEME_GIT_PROMPT_DIRTY="%{$fg[yellow]%}⚡%{$reset_color%}"
29+  ZSH_THEME_GIT_PROMPT_CLEAN=""
30+
31+  base_prompt='$(_virtualenv_prompt_info)%{$fg[magenta]%}%n%{$reset_color%}%{$fg[cyan]%}@%{$reset_color%}%{$fg[yellow]%}%m%{$reset_color%}%{$fg[red]%}:%{$reset_color%}%{$fg[cyan]%}%0~%{$reset_color%}%{$fg[red]%}|%{$reset_color%}'
32+  post_prompt='%{$fg[cyan]%}⇒%{$reset_color%}  '
33+
34+  base_prompt_nocolor=$(echo "$base_prompt" | perl -pe "s/%\{[^}]+\}//g")
35+  post_prompt_nocolor=$(echo "$post_prompt" | perl -pe "s/%\{[^}]+\}//g")
36+
37+  precmd_functions+=(prompt_pygmalion_precmd)
38+}
39+
40+prompt_pygmalion_precmd(){
41+  local gitinfo=$(git_prompt_info)
42+  local gitinfo_nocolor=$(echo "$gitinfo" | perl -pe "s/%\{[^}]+\}//g")
43+  local exp_nocolor="$(print -P \"$base_prompt_nocolor$gitinfo_nocolor$post_prompt_nocolor\")"
44+  local prompt_length=${#exp_nocolor}
45+
46+  local nl=""
47+
48+  if [[ $prompt_length -gt 40 ]]; then
49+    nl=$'\n%{\r%}';
50+  fi
51+  PROMPT="$base_prompt$gitinfo$nl$post_prompt"
52+}
53+
54+prompt_setup_pygmalion
55+
56+