From 000e00871830cd15de032c80e2b62946cf19445c Mon Sep 17 00:00:00 2001 From: Craig Jennings Date: Thu, 8 May 2025 18:49:34 -0500 Subject: adding missing dotfiles and folders - profile.d/ - bashrc - authinfo.gpg - .zsh/ --- dotfiles/system/.zsh/lib/ftb-switch-group | 38 +++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 dotfiles/system/.zsh/lib/ftb-switch-group (limited to 'dotfiles/system/.zsh/lib/ftb-switch-group') diff --git a/dotfiles/system/.zsh/lib/ftb-switch-group b/dotfiles/system/.zsh/lib/ftb-switch-group new file mode 100644 index 0000000..8d06956 --- /dev/null +++ b/dotfiles/system/.zsh/lib/ftb-switch-group @@ -0,0 +1,38 @@ +#!/hint/zsh +emulate -L zsh -o extended_glob + +zmodload zsh/mapfile + +# receive arguments +local pid=$1 header_lines=$2 tmp_dir=$3 offset=$@[-1] + +# read completion list +local -a list=(${(f)mapfile[$tmp_dir/completions.$pid]}) + +# get total group count +if (( $#list > 10000 )); then + local -Ua total=(${(f)"$(print -l ${list:$header_lines} | grep -a -oP '^\x1b\[[0-9;]*m')"}) +else + local -Ua total=(${(M)${list:$header_lines}#$'\x1b['[0-9;]#*m}) +fi + +# get current group index, start from 2 +local current=2 +if [[ -f $tmp_dir/current-group.$pid ]]; then + current=$(( $(<$tmp_dir/current-group.$pid) + offset )) +fi +(( current > $#total )) && current=1 +(( current == 0 )) && current=$#total +echo $current > $tmp_dir/current-group.$pid + +# print headers +if (( header_lines != 0 )); then + print -l ${list[1,header_lines]/${total[current]}/$'\x1b[1m'} +fi + +# print current group +if (( $#list > 10000 )); then + print -l ${list:$header_lines} | grep -a -F "${total[current]}" +else + print -l ${(M)${list:$header_lines}:#${total[current]}*} +fi -- cgit v1.2.3