From 4ba78dc2be7bc5cb10231d5fbeefaa0f2967b0f4 Mon Sep 17 00:00:00 2001 From: romkatv Date: Wed, 14 Aug 2019 06:57:25 +0200 Subject: [PATCH] shorten git branch name if over 32 chars long; tune colors --- config/p10k-classic.zsh | 21 +++++++++++++-------- config/p10k-lean.zsh | 11 ++++++++--- internal/wizard.zsh | 6 ++++++ 3 files changed, 27 insertions(+), 11 deletions(-) diff --git a/config/p10k-classic.zsh b/config/p10k-classic.zsh index 1237a4b..45b2a52 100644 --- a/config/p10k-classic.zsh +++ b/config/p10k-classic.zsh @@ -156,9 +156,9 @@ fi typeset -g POWERLEVEL9K_BACKGROUND=238 # Separator between same-color segments on the left. - typeset -g POWERLEVEL9K_LEFT_SUBSEGMENT_SEPARATOR='%244F\uE0B1' + typeset -g POWERLEVEL9K_LEFT_SUBSEGMENT_SEPARATOR='%246F\uE0B1' # Separator between same-color segments on the right. - typeset -g POWERLEVEL9K_RIGHT_SUBSEGMENT_SEPARATOR='%244F\uE0B3' + typeset -g POWERLEVEL9K_RIGHT_SUBSEGMENT_SEPARATOR='%246F\uE0B3' # Separator between different-color segments on the left. typeset -g POWERLEVEL9K_LEFT_SEGMENT_SEPARATOR='\uE0B0' # Separator between different-color segments on the right. @@ -288,13 +288,18 @@ fi # VCS_STATUS parameters are set by gitstatus plugin. See reference: # https://github.com/romkatv/gitstatus/blob/master/gitstatus.plugin.zsh. local vcs='' - # 'feature' or '@72f5c8a' if not on a branch. - vcs+='${${VCS_STATUS_LOCAL_BRANCH:+%76F'${(g::)POWERLEVEL9K_VCS_BRANCH_ICON}'${VCS_STATUS_LOCAL_BRANCH//\%/%%}}' - vcs+=':-%f@%76F${VCS_STATUS_COMMIT[1,8]}}' + # If on a branch... + vcs+='${${VCS_STATUS_LOCAL_BRANCH:+%76F'${(g::)POWERLEVEL9K_VCS_BRANCH_ICON} + # If branch name is at most 32 characters long, show it in full. + vcs+='${${${$(($#VCS_STATUS_LOCAL_BRANCH<=32)):#0}:+${VCS_STATUS_LOCAL_BRANCH//\%/%%}}' + # If branch name is over 32 characters long, show the first 12 … the last 12. + vcs+=':-${VCS_STATUS_LOCAL_BRANCH[1,12]//\%/%%}%28F…%76F${VCS_STATUS_LOCAL_BRANCH[-12,-1]//\%/%%}}}' + # '@72f5c8a' if not on a branch. + vcs+=':-%248F@%76F${VCS_STATUS_COMMIT[1,8]}}' # ':master' if the tracking branch name differs from local branch. - vcs+='${${VCS_STATUS_REMOTE_BRANCH:#$VCS_STATUS_LOCAL_BRANCH}:+%f:%76F${VCS_STATUS_REMOTE_BRANCH//\%/%%}}' + vcs+='${${VCS_STATUS_REMOTE_BRANCH:#$VCS_STATUS_LOCAL_BRANCH}:+%248F:%76F${VCS_STATUS_REMOTE_BRANCH//\%/%%}}' # '#tag' if on a tag. - vcs+='${VCS_STATUS_TAG:+%f#%76F${VCS_STATUS_TAG//\%/%%}}' + vcs+='${VCS_STATUS_TAG:+%248F#%76F${VCS_STATUS_TAG//\%/%%}}' # ⇣42 if behind the remote. vcs+='${${VCS_STATUS_COMMITS_BEHIND:#0}:+ %76F⇣${VCS_STATUS_COMMITS_BEHIND}}' # ⇡42 if ahead of the remote; no leading space if also behind the remote: ⇣42⇡42. @@ -323,7 +328,6 @@ fi typeset -g POWERLEVEL9K_VCS_{CLEAN,UNTRACKED,MODIFIED}_CONTENT_EXPANSION=$vcs # When Git status is being refreshed asynchronously, display the last known repo status in grey. typeset -g POWERLEVEL9K_VCS_LOADING_CONTENT_EXPANSION=${${vcs//\%f}//\%<->F} - typeset -g POWERLEVEL9K_VCS_LOADING_FOREGROUND=244 # Enable counters for staged, unstaged, etc. typeset -g POWERLEVEL9K_VCS_{STAGED,UNSTAGED,UNTRACKED,CONFLICTED,COMMITS_AHEAD,COMMITS_BEHIND}_MAX_NUM=-1 @@ -339,6 +343,7 @@ fi # isn't in an svn or hg reposotiry. typeset -g POWERLEVEL9K_VCS_BACKENDS=(git) + typeset -g POWERLEVEL9K_VCS_LOADING_FOREGROUND=246 # These settings are used for respositories other than Git or when gitstatusd fails and # Powerlevel10k has to fall back to using vcs_info. typeset -g POWERLEVEL9K_VCS_CLEAN_FOREGROUND=76 diff --git a/config/p10k-lean.zsh b/config/p10k-lean.zsh index ea74b92..b383213 100644 --- a/config/p10k-lean.zsh +++ b/config/p10k-lean.zsh @@ -271,8 +271,13 @@ fi # VCS_STATUS parameters are set by gitstatus plugin. See reference: # https://github.com/romkatv/gitstatus/blob/master/gitstatus.plugin.zsh. local vcs='' - # 'feature' or '@72f5c8a' if not on a branch. - vcs+='${${VCS_STATUS_LOCAL_BRANCH:+%76F'${(g::)POWERLEVEL9K_VCS_BRANCH_ICON}'${VCS_STATUS_LOCAL_BRANCH//\%/%%}}' + # If on a branch... + vcs+='${${VCS_STATUS_LOCAL_BRANCH:+%76F'${(g::)POWERLEVEL9K_VCS_BRANCH_ICON} + # If local branch name is at most 32 characters long, show it in full. + vcs+='${${${$(($#VCS_STATUS_LOCAL_BRANCH<=32)):#0}:+${VCS_STATUS_LOCAL_BRANCH//\%/%%}}' + # If local branch name is over 32 characters long, show the first 12 … the last 12. + vcs+=':-${VCS_STATUS_LOCAL_BRANCH[1,12]//\%/%%}%28F…%76F${VCS_STATUS_LOCAL_BRANCH[-12,-1]//\%/%%}}}' + # '@72f5c8a' if not on a branch. vcs+=':-%f@%76F${VCS_STATUS_COMMIT[1,8]}}' # ':master' if the tracking branch name differs from local branch. vcs+='${${VCS_STATUS_REMOTE_BRANCH:#$VCS_STATUS_LOCAL_BRANCH}:+%f:%76F${VCS_STATUS_REMOTE_BRANCH//\%/%%}}' @@ -306,7 +311,6 @@ fi typeset -g POWERLEVEL9K_VCS_{CLEAN,UNTRACKED,MODIFIED}_CONTENT_EXPANSION=$vcs # When Git status is being refreshed asynchronously, display the last known repo status in grey. typeset -g POWERLEVEL9K_VCS_LOADING_CONTENT_EXPANSION=${${vcs//\%f}//\%<->F} - typeset -g POWERLEVEL9K_VCS_LOADING_FOREGROUND=244 # Enable counters for staged, unstaged, etc. typeset -g POWERLEVEL9K_VCS_{STAGED,UNSTAGED,UNTRACKED,CONFLICTED,COMMITS_AHEAD,COMMITS_BEHIND}_MAX_NUM=-1 @@ -322,6 +326,7 @@ fi # isn't in an svn or hg reposotiry. typeset -g POWERLEVEL9K_VCS_BACKENDS=(git) + typeset -g POWERLEVEL9K_VCS_LOADING_FOREGROUND=244 # These settings are used for respositories other than Git or when gitstatusd fails and # Powerlevel10k has to fall back to using vcs_info. typeset -g POWERLEVEL9K_VCS_CLEAN_FOREGROUND=76 diff --git a/internal/wizard.zsh b/internal/wizard.zsh index 5f9d6f9..364446b 100755 --- a/internal/wizard.zsh +++ b/internal/wizard.zsh @@ -894,6 +894,10 @@ function generate_config() { lines=("${(@)lines/#(#b)([[:space:]]#)\# $1( |)/$match[1]$1$match[2]$match[2]}") } + function rep() { + lines=("${(@)lines//$1/$2}") + } + sub MODE $POWERLEVEL9K_MODE if (( cap_narrow_icons )); then @@ -936,6 +940,8 @@ function generate_config() { sub LEFT_PROMPT_LAST_SEGMENT_END_SYMBOL "'$left_head'" sub RIGHT_PROMPT_FIRST_SEGMENT_START_SYMBOL "'$right_head'" sub RIGHT_PROMPT_LAST_SEGMENT_END_SYMBOL "'$right_tail'" + sub VCS_LOADING_FOREGROUND $sep_color[$color] + rep '%248F' "%$prefix_color[$color]F" fi if [[ -n ${(j::)extra_icons} ]]; then