diff options
Diffstat (limited to 'dotfiles/system/.zsh/lib/-ftb-generate-header')
| -rw-r--r-- | dotfiles/system/.zsh/lib/-ftb-generate-header | 35 | 
1 files changed, 35 insertions, 0 deletions
| diff --git a/dotfiles/system/.zsh/lib/-ftb-generate-header b/dotfiles/system/.zsh/lib/-ftb-generate-header new file mode 100644 index 0000000..a54fee1 --- /dev/null +++ b/dotfiles/system/.zsh/lib/-ftb-generate-header @@ -0,0 +1,35 @@ +#!/hint/zsh + +typeset -ga _ftb_headers=() +local i tmp group_colors +local -i mlen=0 len=0 + +if (( $#_ftb_groups == 1 )) && { ! -ftb-zstyle -m single-group "header" }; then +  return +fi + +# calculate the max column width +for i in $_ftb_groups; do +  (( $#i > mlen )) && mlen=$#i +done +mlen+=1 + +-ftb-zstyle -a group-colors group_colors || group_colors=($_ftb_group_colors) + +for (( i=1; i<=$#_ftb_groups; i++ )); do +  [[ $_ftb_groups[i] == "__hide__"* ]] && continue + +  if (( len + $#_ftb_groups[i] > COLUMNS - 5 )); then +    _ftb_headers+=$tmp +    tmp='' && len=0 +  fi +  if (( len + mlen > COLUMNS - 5 )); then +    # the last column doesn't need padding +    _ftb_headers+=$tmp$group_colors[i]$_ftb_groups[i]$'\033[00m' +    tmp='' && len=0 +  else +    tmp+=$group_colors[i]${(r:$mlen:)_ftb_groups[i]}$'\033[00m' +    len+=$mlen +  fi +done +(( $#tmp )) && _ftb_headers+=$tmp | 
