mirror of
https://github.com/ohmyzsh/ohmyzsh.git
synced 2025-12-26 02:12:33 +01:00
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:
parent
f755d3d538
commit
3fb01c9531
1 changed files with 20 additions and 0 deletions
20
lib/notfound.zsh
Normal file
20
lib/notfound.zsh
Normal 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
|
||||||
Loading…
Add table
Add a link
Reference in a new issue