If pkgfile is installed, add a "command not found" hook. This hook is of better quality than the one that's pre-packaged with pkgtools (it won't run when a command is part of a pipe or subshell). I should see about getting this hook accepted in pkgtools.

This commit is contained in:
Simon Gomizelj 2011-11-28 12:17:02 -05:00
commit 3fb01c9531

20
lib/notfound.zsh Normal file
View file

@ -0,0 +1,20 @@
if [[ -x /usr/bin/pkgfile ]]; then
command_not_found_handler() {
local pkg p
local pid ppid pgrp session tty_nr tpgid
# double check pkgfile exists
[[ ! -x /usr/bin/pkgfile ]] && return 127
# do not run when within a pipe or subshell
[[ ! -t 1 ]] && return 127
read pid cmd state ppid pgrp session tty_nr tpgid rest < /proc/self/stat
[[ $$ -eq $tpgid ]] && return 127
pkg=$(pkgfile -b -v -- $1)
if [[ -z $pkg ]] && return 127
echo "The command \"$1\" can be found in the following packages:"
for p in $pkg; echo " $p"
}
fi