]> src.twobees.de Git - dotfiles.git/blob - stow/oh-my-zsh/.oh-my-zsh/themes/pygmalion-virtualenv.zsh-theme
...
[dotfiles.git] / stow / oh-my-zsh / .oh-my-zsh / themes / pygmalion-virtualenv.zsh-theme
1 # Yay! High voltage and arrows!
2
3
4 function _virtualenv_prompt_info {
5     if [[ -n "$(whence virtualenv_prompt_info)" ]]; then
6         if [ -n "$(whence pyenv_prompt_info)" ]; then
7             if [ "$1" = "inline" ]; then
8                 ZSH_THEME_VIRTUAL_ENV_PROMPT_PREFIX=%{$fg[blue]%}"::%{$fg[red]%}"
9                 ZSH_THEME_VIRTUAL_ENV_PROMPT_SUFFIX=""
10                 virtualenv_prompt_info
11             fi
12             [ "$(pyenv_prompt_info)" = "${PYENV_PROMPT_DEFAULT_VERSION}" ] && virtualenv_prompt_info
13         else
14             virtualenv_prompt_info
15         fi
16     fi
17 }
18
19 prompt_setup_pygmalion(){
20   setopt localoptions extendedglob
21
22   ZSH_THEME_GIT_PROMPT_PREFIX="%{$reset_color%}%{$fg[green]%}"
23   ZSH_THEME_GIT_PROMPT_SUFFIX="%{$reset_color%} "
24   ZSH_THEME_GIT_PROMPT_DIRTY="%{$fg[yellow]%}⚡%{$reset_color%}"
25   ZSH_THEME_GIT_PROMPT_CLEAN=""
26
27   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%}'
28   post_prompt='%{$fg[cyan]%}⇒%{$reset_color%}  '
29
30   base_prompt_nocolor=${base_prompt//\%\{[^\}]##\}}
31   post_prompt_nocolor=${post_prompt//\%\{[^\}]##\}}
32
33   autoload -U add-zsh-hook
34   add-zsh-hook precmd prompt_pygmalion_precmd
35 }
36
37 prompt_pygmalion_precmd(){
38   setopt localoptions nopromptsubst extendedglob
39
40   local gitinfo=$(git_prompt_info)
41   local gitinfo_nocolor=${gitinfo//\%\{[^\}]##\}}
42   local exp_nocolor="$(print -P \"${base_prompt_nocolor}${gitinfo_nocolor}${post_prompt_nocolor}\")"
43   local prompt_length=${#exp_nocolor}
44
45   # add new line on prompt longer than 40 characters
46   local nl=""
47   if [[ $prompt_length -gt 40 ]]; then
48     nl=$'\n%{\r%}'
49   fi
50
51   PROMPT="${base_prompt}\$(git_prompt_info)${nl}${post_prompt}"
52 }
53
54 prompt_setup_pygmalion