Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
Menu
Open sidebar
adam.huang
Oh My Zsh
Commits
b54a6dab
Unverified
Commit
b54a6dab
authored
Apr 09, 2021
by
Marc Cornellà
Browse files
refactor(command-not-found): clean up and reorganize logic
parent
8b55fb3b
Changes
1
Show whitespace changes
Inline
Side-by-side
plugins/command-not-found/command-not-found.plugin.zsh
View file @
b54a6dab
# Uses the command-not-found package zsh support
# as seen in https://www.porcheron.info/command-not-found-for-zsh/
# this is installed in Ubuntu
## Platforms with a built-in command-not-found handler init file
if
[
-x
/usr/lib/command-not-found
-o
-x
/usr/share/command-not-found/command-not-found
]
;
then
function
command_not_found_handler
{
# check because c-n-f could've been removed in the meantime
if
[
-x
/usr/lib/command-not-found
]
;
then
for
file
(
# Arch Linux. Must have pkgfile installed: https://wiki.archlinux.org/index.php/Pkgfile#Command_not_found
/usr/share/doc/pkgfile/command-not-found.zsh
# macOS (M1 and classic Homebrew): https://github.com/Homebrew/homebrew-command-not-found
/opt/homebrew/Library/Taps/homebrew/homebrew-command-not-found/handler.sh
/usr/local/Homebrew/Library/Taps/homebrew/homebrew-command-not-found/handler.sh
)
;
do
if
[[
-r
"
$file
"
]]
;
then
source
"
$file
"
unset
file
return
0
fi
done
unset
file
## Platforms with manual command_not_found_handler() setup
# Debian and derivatives: https://launchpad.net/ubuntu/+source/command-not-found
if
[[
-x
/usr/lib/command-not-found
||
-x
/usr/share/command-not-found/command-not-found
]]
;
then
command_not_found_handler
()
{
if
[[
-x
/usr/lib/command-not-found
]]
;
then
/usr/lib/command-not-found
--
"
$1
"
return
$?
elif
[
-x
/usr/share/command-not-found/command-not-found
]
;
then
elif
[
[
-x
/usr/share/command-not-found/command-not-found
]
]
;
then
/usr/share/command-not-found/command-not-found
--
"
$1
"
return
$?
else
printf
"zsh: command not found: %s
\n
"
"
$1
"
>
&2
return
127
fi
return
0
}
fi
# Arch Linux command-not-found support, you must have package pkgfile installed
# https://wiki.archlinux.org/index.php/Pkgfile#.22Command_not_found.22_hook
[[
-e
/usr/share/doc/pkgfile/command-not-found.zsh
]]
&&
source
/usr/share/doc/pkgfile/command-not-found.zsh
# Fedora command-not-found support
if
[
-f
/usr/libexec/pk-command-not-found
]
;
then
# Fedora: https://fedoraproject.org/wiki/Features/PackageKitCommandNotFound
if
[[
-x
/usr/libexec/pk-command-not-found
]]
;
then
command_not_found_handler
()
{
runcnf
=
1
retval
=
127
[
!
-S
/var/run/dbus/system_bus_socket
]
&&
runcnf
=
0
[
!
-x
/usr/libexec/packagekitd
]
&&
runcnf
=
0
if
[
$runcnf
-eq
1
]
;
then
/usr/libexec/pk-command-not-found
$@
retval
=
$?
if
[[
-S
/var/run/dbus/system_bus_socket
&&
-x
/usr/libexec/packagekitd
]]
;
then
/usr/libexec/pk-command-not-found
--
"
$@
"
return
$?
fi
return
$retval
}
fi
# macOS command-not-found support
# https://github.com/Homebrew/homebrew-command-not-found
HB_CNF_HANDLER_SUFFIX
=
"Library/Taps/homebrew/homebrew-command-not-found/handler.sh"
if
[[
-s
"/opt/homebrew/
$HB_CNF_HANDLER_SUFFIX
"
]]
;
then
source
"/opt/homebrew/
$HB_CNF_HANDLER_SUFFIX
"
elif
[[
-s
"/usr/local/Homebrew/
$HB_CNF_HANDLER_SUFFIX
"
]]
;
then
source
"/usr/local/Homebrew/
$HB_CNF_HANDLER_SUFFIX
"
printf
"zsh: command not found: %s
\n
"
"
$1
"
>
&2
return
127
}
fi
# NixOS
command-not-found
support
if
[
-x
/run/current-system/sw/bin/command-not-found
]
;
then
# NixOS
: https://github.com/NixOS/nixpkgs/tree/master/nixos/modules/programs/
command-not-found
if
[
[
-x
/run/current-system/sw/bin/command-not-found
]
]
;
then
command_not_found_handler
()
{
/run/current-system/sw/bin/command-not-found
$@
/run/current-system/sw/bin/command-not-found
--
"
$@
"
}
fi
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment