summaryrefslogtreecommitdiff
path: root/dotfiles/system/.zsh/lib/-ftb-generate-header
diff options
context:
space:
mode:
Diffstat (limited to 'dotfiles/system/.zsh/lib/-ftb-generate-header')
-rw-r--r--dotfiles/system/.zsh/lib/-ftb-generate-header35
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