summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorlittleblack111 <littleblack11111@gmail.com>2025-06-05 18:31:22 +0800
committerlittleblack111 <littleblack11111@gmail.com>2025-06-05 18:31:22 +0800
commit0ceb7e1c4fb3c3134eaecd0b36c8cf60a37e9b4c (patch)
tree9a88a941d8dbc42e78bac37a4de84a90c3f438f9
parente904567ce4ef216fef64cc26e23f027e77d096a2 (diff)
zshrc(command_not_found_handler): restore pacman find previous package
-rw-r--r--dot-zshrc60
1 files changed, 29 insertions, 31 deletions
diff --git a/dot-zshrc b/dot-zshrc
index d436ba15..a8f7d9d3 100644
--- a/dot-zshrc
+++ b/dot-zshrc
@@ -36,38 +36,36 @@ source $HOME/.config/zsh/prompt.zsh
command_not_found_handler() {
- # local pkgs cmd="$@"
+ local pkgs cmd="$@"
printf '\033[0;31m\033[1m==> ERROR: Command not found:\033[0m %s\n' "$@"
- # printf '\033[0m'
- # printf 'Checking for package.'
- # (
- # while true; do
- # ( sleep 0.1 && printf '.' )
- # done
- # ) &!
- # pkgs=(${(f)"$(eix --only-names --pattern "^.*/${cmd}$" 2>/dev/null)"})
- # kill $!
- # echo
- # if [[ -n "$pkgs" ]]; then
- # printf 'The application %s is not installed. It may be found in the following packages:\n' "$cmd"
- # printf ' %s\n' $pkgs[@]
- # if [[ ${#pkgs[@]} -eq 1 ]]; then
- # printf 'Do you want to Install package %s? (y/N) ' $pkgs[1]
- # if read -q "choice? "; then
- # echo
- # echo "Executing command: sudo emerge -av $pkgs[1]"
- # sudo emerge -av $pkgs[1]
- # echo " "
- # return
- # else
- # echo " "
- # return
- # fi
- # else
- # echo "Multiple packages found. Please use 'emerge -S $cmd' for more information."
- # return
- # fi
- # fi 1>&2
+ printf '\033[0m'
+ printf 'Checking for package.'
+ (
+ while true; do
+ ( sleep 0.1 && printf '.' )
+ done
+ ) &!
+ pkgs=(${(f)"$(pkgfile -b -v -- "$cmd" 2>/dev/null)"})
+ kill $!
+ echo
+ if [[ -n "$pkgs" ]]; then
+ printf 'The application %s is not installed. It may be found in the following AUR packages:\n' "$cmd"
+ printf ' %s\n' $pkgs[@]
+ setopt shwordsplit
+ pkg_array=($pkgs[@])
+ pkgname="${${(@s:/:)pkg_array}[2]}"
+ printf 'Do you want to Install AUR package %s? (y/N) ' $pkgname
+ if read -q "choice? "; then
+ echo
+ echo "Executing command: yay -S $pkgname"
+ yay -S $pkgname --noconfirm
+ echo " "
+ return
+ else
+ echo " "
+ return
+ fi
+ fi 1>&2
return 127
}