command-not-found.plugin.zsh 2.01 KB
Newer Older
1
# Uses the command-not-found package zsh support
Janosch Schwalm's avatar
Janosch Schwalm committed
2
# as seen in https://www.porcheron.info/command-not-found-for-zsh/
3
4
# this is installed in Ubuntu

5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
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
            /usr/lib/command-not-found -- "$1"
            return $?
        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
21
22
23
24

# 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
25
26
27

# Fedora command-not-found support
if [ -f /usr/libexec/pk-command-not-found ]; then
28
    command_not_found_handler() {
29
30
31
32
        runcnf=1
        retval=127
        [ ! -S /var/run/dbus/system_bus_socket ] && runcnf=0
        [ ! -x /usr/libexec/packagekitd ] && runcnf=0
33
        if [ $runcnf -eq 1 ]; then
34
35
36
37
38
39
            /usr/libexec/pk-command-not-found $@
            retval=$?
        fi
        return $retval
    }
fi
40

41
# macOS command-not-found support
42
# https://github.com/Homebrew/homebrew-command-not-found
43
44
45
46
47
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"
48
fi
49
50
51

# NixOS command-not-found support
if [ -x /run/current-system/sw/bin/command-not-found ]; then
52
    command_not_found_handler() {
53
54
55
        /run/current-system/sw/bin/command-not-found $@
    }
fi