Blame view

repos/robbyrussell/oh-my-zsh/themes/pygmalion.zsh-theme 1.12 KB
093a6c34b   mj   Squashed 'repos/r...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
  # Yay! High voltage and arrows!
  
  prompt_setup_pygmalion(){
    ZSH_THEME_GIT_PROMPT_PREFIX="%{$reset_color%}%{$fg[green]%}"
    ZSH_THEME_GIT_PROMPT_SUFFIX="%{$reset_color%} "
    ZSH_THEME_GIT_PROMPT_DIRTY="%{$fg[yellow]%}⚡%{$reset_color%}"
    ZSH_THEME_GIT_PROMPT_CLEAN=""
  
    base_prompt='%{$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%}'
    post_prompt='%{$fg[cyan]%}⇒%{$reset_color%}  '
  
    base_prompt_nocolor=$(echo "$base_prompt" | perl -pe "s/%\{[^}]+\}//g")
    post_prompt_nocolor=$(echo "$post_prompt" | perl -pe "s/%\{[^}]+\}//g")
  
    precmd_functions+=(prompt_pygmalion_precmd)
  }
  
  prompt_pygmalion_precmd(){
    local gitinfo=$(git_prompt_info)
    local gitinfo_nocolor=$(echo "$gitinfo" | perl -pe "s/%\{[^}]+\}//g")
    local exp_nocolor="$(print -P \"$base_prompt_nocolor$gitinfo_nocolor$post_prompt_nocolor\")"
    local prompt_length=${#exp_nocolor}
  
    local nl=""
  
    if [[ $prompt_length -gt 40 ]]; then
      nl=$'
  %{\r%}';
    fi
    PROMPT="$base_prompt$gitinfo$nl$post_prompt"
  }
  
  prompt_setup_pygmalion