2
0

fix: apply aishell review findings

- fix vim-plug URL typo (juneguyen -> junegunn) in install.zsh
- fix recent-dirs path to ~/.chpwd-recent-dirs in ais
- remove dead plugins (cdselect, fileselect, histselect) superseded by ais
- fix .gitignore to properly exclude target/ dirs
This commit is contained in:
ai
2026-04-03 10:49:23 +00:00
parent 97aadc98a4
commit 31d6c2f8c7
6 changed files with 3 additions and 194 deletions

View File

@@ -1,69 +0,0 @@
autoload -Uz chpwd_recent_dirs cdr add-zsh-hook
add-zsh-hook chpwd chpwd_recent_dirs
zstyle ':chpwd:*' recent-dirs-max 50
cdselect() {
local dirs=("${(@f)$(cdr -l 2>/dev/null | sed 's/^[0-9]* *//')}")
[[ ${#dirs} -eq 0 ]] && return
local query="" cursor=1 selected=""
while true; do
local filtered=()
for d in "${dirs[@]}"; do
local match=1
for word in ${(s: :)query}; do
[[ "${d:l}" != *"${word:l}"* ]] && match=0 && break
done
[[ $match -eq 1 ]] && filtered+=("$d")
done
# sort by path length (shortest first)
local sorted=()
for f in "${filtered[@]}"; do sorted+=("${#f} $f"); done
sorted=(${(n)sorted})
filtered=()
for s in "${sorted[@]}"; do filtered+=("${s#* }"); done
[[ $cursor -gt ${#filtered} ]] && cursor=${#filtered}
[[ $cursor -lt 1 ]] && cursor=1
clear
echo "cd> $query"
local i=1
for d in "${filtered[@]}"; do
if [[ $i -eq $cursor ]]; then
printf "\e[7m %s\e[0m\n" "$d"
else
printf " %s\n" "$d"
fi
((i++))
[[ $i -gt 20 ]] && break
done
read -k1 key 2>/dev/null
if [[ "$key" == $'\x1b' ]]; then
read -k1 -t 0.1 k2 2>/dev/null
if [[ "$k2" == "[" ]]; then
read -k1 -t 0.1 k3 2>/dev/null
case "$k3" in
A) ((cursor--)) ;; # up
B) ((cursor++)) ;; # down
esac
continue
else
break # plain ESC
fi
fi
case "$key" in
$'\n'|$'\r') [[ ${#filtered} -gt 0 ]] && selected="${filtered[$cursor]}"; break ;;
$'\x0e') ((cursor++)) ;; # C-n
$'\x10') ((cursor--)) ;; # C-p
$'\x7f'|$'\b') query="${query%?}"; cursor=1 ;;
*) query+="$key"; cursor=1 ;;
esac
done
clear
if [[ -n "$selected" ]]; then
selected="${selected/#\~/$HOME}"
selected="${selected//\\ / }"
cd "$selected"
fi
zle reset-prompt
}
zle -N cdselect
bindkey '^j' cdselect

View File

@@ -1,61 +0,0 @@
# file select - search files and insert into prompt
# C-f: open file selector
fileselect() {
local files=("${(@f)$(find . -maxdepth 3 -not -path '*/\.git/*' -type f 2>/dev/null | sed 's|^\./||' | sort)}")
[[ ${#files} -eq 0 ]] && return
local query="" cursor=1 selected=""
while true; do
local filtered=()
for f in "${files[@]}"; do
local match=1
for word in ${(s: :)query}; do
[[ "${f:l}" != *"${word:l}"* ]] && match=0 && break
done
[[ $match -eq 1 ]] && filtered+=("$f")
done
[[ $cursor -gt ${#filtered} ]] && cursor=${#filtered}
[[ $cursor -lt 1 ]] && cursor=1
clear
echo "file> $query (${#filtered})"
local i=1
for f in "${filtered[@]}"; do
if [[ $i -eq $cursor ]]; then
printf "\e[7m %s\e[0m\n" "$f"
else
printf " %s\n" "$f"
fi
((i++))
[[ $i -gt 20 ]] && break
done
read -k1 key 2>/dev/null
if [[ "$key" == $'\x1b' ]]; then
read -k1 -t 0.1 k2 2>/dev/null
if [[ "$k2" == "[" ]]; then
read -k1 -t 0.1 k3 2>/dev/null
case "$k3" in
A) ((cursor--)) ;;
B) ((cursor++)) ;;
esac
continue
else
break
fi
fi
case "$key" in
$'\n'|$'\r') [[ ${#filtered} -gt 0 ]] && selected="${filtered[$cursor]}"; break ;;
$'\x0e') ((cursor++)) ;; # C-n
$'\x10') ((cursor--)) ;; # C-p
$'\x7f'|$'\b') query="${query%?}"; cursor=1 ;;
*) query+="$key"; cursor=1 ;;
esac
done
clear
if [[ -n "$selected" ]]; then
BUFFER+="$selected"
CURSOR=${#BUFFER}
fi
zle reset-prompt
}
zle -N fileselect
bindkey '^f' fileselect

View File

@@ -1,61 +0,0 @@
# history select - search history and insert into prompt
# C-r: open history selector, type to filter, C-n/C-p to move, Enter to insert
histselect() {
local lines=("${(@f)$(fc -l -n -r 1 | awk '!seen[$0]++')}")
[[ ${#lines} -eq 0 ]] && return
local query="" cursor=1 selected=""
while true; do
local filtered=()
for l in "${lines[@]}"; do
local match=1
for word in ${(s: :)query}; do
[[ "${l:l}" != *"${word:l}"* ]] && match=0 && break
done
[[ $match -eq 1 ]] && filtered+=("$l")
done
[[ $cursor -gt ${#filtered} ]] && cursor=${#filtered}
[[ $cursor -lt 1 ]] && cursor=1
clear
echo "hist> $query"
local i=1
for l in "${filtered[@]}"; do
if [[ $i -eq $cursor ]]; then
printf "\e[7m %s\e[0m\n" "$l"
else
printf " %s\n" "$l"
fi
((i++))
[[ $i -gt 20 ]] && break
done
read -k1 key 2>/dev/null
if [[ "$key" == $'\x1b' ]]; then
read -k1 -t 0.1 k2 2>/dev/null
if [[ "$k2" == "[" ]]; then
read -k1 -t 0.1 k3 2>/dev/null
case "$k3" in
A) ((cursor--)) ;;
B) ((cursor++)) ;;
esac
continue
else
break
fi
fi
case "$key" in
$'\n'|$'\r') [[ ${#filtered} -gt 0 ]] && selected="${filtered[$cursor]}"; break ;;
$'\x0e') ((cursor++)) ;; # C-n
$'\x10') ((cursor--)) ;; # C-p
$'\x7f'|$'\b') query="${query%?}"; cursor=1 ;;
*) query+="$key"; cursor=1 ;;
esac
done
clear
if [[ -n "$selected" ]]; then
BUFFER="$selected"
CURSOR=${#BUFFER}
fi
zle reset-prompt
}
zle -N histselect
bindkey '^r' histselect