diff options
author | Philip Hofstetter <phofstetter@sensational.ch> | 2011-12-28 15:54:47 +0100 |
---|---|---|
committer | Philip Hofstetter <phofstetter@sensational.ch> | 2011-12-28 15:58:24 +0100 |
commit | 77045230f4e2c80f4f312fbbeeb8583a41aa5a92 (patch) | |
tree | 356f8b4d57fa773232cb5362157b0fe5a7006c3c /themes/pygmalion.zsh-theme | |
parent | 3e9493fb301b7d34bb6861787d97067ec9365268 (diff) | |
download | zsh-77045230f4e2c80f4f312fbbeeb8583a41aa5a92.tar.gz zsh-77045230f4e2c80f4f312fbbeeb8583a41aa5a92.tar.bz2 zsh-77045230f4e2c80f4f312fbbeeb8583a41aa5a92.zip |
make pygmalion theme use two lines when needed
if the length of the prompt (excluding color escapes) exceeds 40
characters, emit the arrow prompt on its own line
This helps a lot on smaller terminals
Diffstat (limited to 'themes/pygmalion.zsh-theme')
-rw-r--r-- | themes/pygmalion.zsh-theme | 35 |
1 files changed, 30 insertions, 5 deletions
diff --git a/themes/pygmalion.zsh-theme b/themes/pygmalion.zsh-theme index cf3bb908f..435c05830 100644 --- a/themes/pygmalion.zsh-theme +++ b/themes/pygmalion.zsh-theme @@ -1,9 +1,34 @@ # Yay! High voltage and arrows! -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="" +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") + + add-zsh-hook precmd 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=$'\n%{\r%}'; + fi + PROMPT="$base_prompt$gitinfo$nl$post_prompt" +} + +prompt_setup_pygmalion -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%}$(git_prompt_info)%{$fg[cyan]%}⇒%{$reset_color%} ' |