diff options
author | Ben Hilburn <bhilburn@gmail.com> | 2015-09-13 23:57:23 +0300 |
---|---|---|
committer | Ben Hilburn <bhilburn@gmail.com> | 2015-09-13 23:57:23 +0300 |
commit | 32398beab86ebb09d8cf3223eb5ae1d3e7129119 (patch) | |
tree | 36807d1095a058cbe2f7a6b413f4f8430ac08de8 | |
parent | fd191a5894b2c9dc1b6d444194651cd7591265a6 (diff) | |
parent | 5a8a6c8012a35b4dc950fdbe54b2ff7a7a0c7db8 (diff) |
Merge pull request #87 from dritter/improve_same_color_segments
Add a color separater between segments of the same color.
-rw-r--r-- | powerlevel9k.zsh-theme | 31 |
1 files changed, 29 insertions, 2 deletions
diff --git a/powerlevel9k.zsh-theme b/powerlevel9k.zsh-theme index 50911e27..8d3953a6 100644 --- a/powerlevel9k.zsh-theme +++ b/powerlevel9k.zsh-theme @@ -129,6 +129,8 @@ case $POWERLEVEL9K_MODE in icons=( LEFT_SEGMENT_SEPARATOR "\UE0B0" # RIGHT_SEGMENT_SEPARATOR "\UE0B2" # + LEFT_SUBSEGMENT_SEPARATOR "\UE0B1" # + RIGHT_SUBSEGMENT_SEPARATOR "\UE0B3" # ROOT_ICON "\UE801" # RUBY_ICON "\UE847" # AWS_ICON "\UE895" # @@ -174,6 +176,8 @@ case $POWERLEVEL9K_MODE in icons=( LEFT_SEGMENT_SEPARATOR "\uE0B0" # RIGHT_SEGMENT_SEPARATOR "\uE0B2" # + LEFT_SUBSEGMENT_SEPARATOR "\UE0B1" # + RIGHT_SUBSEGMENT_SEPARATOR "\UE0B3" # ROOT_ICON "\u26A1" # ⚡ RUBY_ICON '' AWS_ICON "AWS:" @@ -374,6 +378,14 @@ left_prompt_segment() { if [[ $CURRENT_BG != 'NONE' && $2 != $CURRENT_BG ]]; then # Middle segment echo -n "%{$bg%F{$CURRENT_BG}%}$(print_icon 'LEFT_SEGMENT_SEPARATOR')%{$fg%} " + elif [[ "$CURRENT_BG" == $2 ]]; then + # Middle segment with same color as previous segment + # We take the current foreground color as color for our + # subsegment (or the default color). This should have + # enough contrast. + local complement + [[ -n $3 ]] && complement=$3 || complement=$DEFAULT_COLOR + echo -n "%{$bg%F{$complement}%}$(print_icon 'LEFT_SUBSEGMENT_SEPARATOR')%{$fg%} " else # First segment echo -n "%{$bg%}%{$fg%} " @@ -393,6 +405,8 @@ left_prompt_end() { CURRENT_BG='' } +CURRENT_RIGHT_BG='NONE' + # Begin a right prompt segment # Takes four arguments: # * $1: Name of the function that was orginally invoked (mandatory). @@ -415,8 +429,21 @@ right_prompt_segment() { local bg fg [[ -n $2 ]] && bg="%K{$2}" || bg="%k" [[ -n $3 ]] && fg="%F{$3}" || fg="%f" - echo -n "%f%F{$2}$(print_icon 'RIGHT_SEGMENT_SEPARATOR')%f%{$bg%}%{$fg%} " + + if [[ "$CURRENT_RIGHT_BG" == $2 ]]; then + # Middle segment with same color as previous segment + # We take the current foreground color as color for our + # subsegment (or the default color). This should have + # enough contrast. + local complement + [[ -n $3 ]] && complement=$3 || complement=$DEFAULT_COLOR + echo -n "%f%F{$complement}$(print_icon 'RIGHT_SUBSEGMENT_SEPARATOR')%f%{$bg%}%{$fg%} " + else + echo -n "%f%F{$2}$(print_icon 'RIGHT_SEGMENT_SEPARATOR')%f%{$bg%}%{$fg%} " + fi [[ -n $4 ]] && echo -n "$4 " + + CURRENT_RIGHT_BG=$2 } ################################################################ @@ -670,7 +697,7 @@ prompt_longstatus() { [[ "$UID" -eq 0 ]] && symbols+="%{%F{yellow}%} $(print_icon 'ROOT_ICON')" [[ $(jobs -l | wc -l) -gt 0 ]] && symbols+="%{%F{cyan}%}$(print_icon 'BACKGROUND_JOBS_ICON')" - [[ -n "$symbols" ]] && $1_prompt_segment "$0" "$bg" "$DEFAULT_COLOR" "$symbols" + [[ -n "$symbols" ]] && $1_prompt_segment "$0" "$bg" "white" "$symbols" } # Node version |