summaryrefslogtreecommitdiff
path: root/dotfiles/common/.zsh/lib/-ftb-generate-query
diff options
context:
space:
mode:
authorCraig Jennings <c@cjennings.net>2026-01-26 17:36:38 -0600
committerCraig Jennings <c@cjennings.net>2026-01-26 17:36:38 -0600
commitdada2f255daaa2fb493ec8c7d47e2a8123aea494 (patch)
tree0c0eeb84bb7b6e66a2d7f41cdfd061b25f80cc14 /dotfiles/common/.zsh/lib/-ftb-generate-query
parentd50e5955837788fc69b4d5bc74cb574b859ed31a (diff)
refactor(dotfiles): rename system/ to common/ and remove unused configs
Rename dotfiles/system to dotfiles/common for clarity - indicates shared dotfiles used across all desktop environments (DWM, Hyprland). Removed config directories for uninstalled applications: - ghostty (using different terminal) - lf (using ranger instead) - mopidy (using mpd instead) - nitrogen (X11-only, obsolete for Wayland) - pychess (not installed) - JetBrains (not installed via archsetup) - youtube-dl (using yt-dlp with different config location) Kept audacious config for potential future use. Updated all references in archsetup, CLAUDE.md, todo.org, and validation.sh. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Diffstat (limited to 'dotfiles/common/.zsh/lib/-ftb-generate-query')
-rw-r--r--dotfiles/common/.zsh/lib/-ftb-generate-query36
1 files changed, 36 insertions, 0 deletions
diff --git a/dotfiles/common/.zsh/lib/-ftb-generate-query b/dotfiles/common/.zsh/lib/-ftb-generate-query
new file mode 100644
index 0000000..87ebb75
--- /dev/null
+++ b/dotfiles/common/.zsh/lib/-ftb-generate-query
@@ -0,0 +1,36 @@
+#!/hint/zsh
+
+local key qtype tmp query_string
+typeset -g _ftb_query=
+-ftb-zstyle -a query-string query_string || query_string=(prefix input first)
+for qtype in $query_string; do
+ if [[ $qtype == prefix ]]; then
+ # find the longest common prefix among descriptions
+ local -a keys=(${_ftb_compcap%$'\2'*})
+ tmp=$keys[1]
+ local MATCH match mbegin mend prefix=(${(s::)tmp})
+ for key in ${keys:1}; do
+ (( $#tmp )) || break
+ [[ $key == $tmp* ]] && continue
+ # interpose characters from the current common prefix and $key and see how
+ # many pairs of equal characters we get at the start of the resulting string
+ [[ ${(j::)${${(s::)key[1,$#tmp]}:^prefix}} =~ '^(((.)\3)*)' ]]
+ # truncate common prefix and maintain loop invariant: ${(s::)tmp} == $prefix
+ tmp[$#MATCH/2+1,-1]=""
+ prefix[$#MATCH/2+1,-1]=()
+ done
+ elif [[ $qtype == input ]]; then
+ local fv=${_ftb_compcap[1]#*$'\2'}
+ local -A v=("${(@0)fv}")
+ tmp=$v[PREFIX]
+ if (( $RBUFFER[(i)$v[SUFFIX]] != 1 )); then
+ tmp=${tmp/%$v[SUFFIX]}
+ fi
+ tmp=${${tmp#$v[hpre]}#$v[apre]}
+ fi
+ if (( $query_string[(I)longest] )); then
+ (( $#tmp > $#_ftb_query )) && _ftb_query=$tmp
+ elif [[ -n $tmp ]]; then
+ _ftb_query=$tmp && break
+ fi
+done