36 lines
860 B
Bash
36 lines
860 B
Bash
#!/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
|