diff options
| author | littleblack111 <littleblack11111@gmail.com> | 2025-06-05 18:31:22 +0800 |
|---|---|---|
| committer | littleblack111 <littleblack11111@gmail.com> | 2025-06-05 18:31:22 +0800 |
| commit | 0ceb7e1c4fb3c3134eaecd0b36c8cf60a37e9b4c (patch) | |
| tree | 9a88a941d8dbc42e78bac37a4de84a90c3f438f9 | |
| parent | e904567ce4ef216fef64cc26e23f027e77d096a2 (diff) | |
zshrc(command_not_found_handler): restore pacman find previous package
| -rw-r--r-- | dot-zshrc | 60 |
1 files changed, 29 insertions, 31 deletions
@@ -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 } |
