From 0ceb7e1c4fb3c3134eaecd0b36c8cf60a37e9b4c Mon Sep 17 00:00:00 2001 From: littleblack111 Date: Thu, 5 Jun 2025 18:31:22 +0800 Subject: zshrc(command_not_found_handler): restore pacman find previous package --- dot-zshrc | 60 +++++++++++++++++++++++++++++------------------------------- 1 file 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 } -- cgit v1.2.3