diff --git a/.gitmodules b/.gitmodules index 301ae41..6b99d77 100644 --- a/.gitmodules +++ b/.gitmodules @@ -21,7 +21,7 @@ url = https://github.com/sindresorhus/pure.git [submodule "modules/fasd/external"] path = modules/fasd/external - url = https://github.com/clvv/fasd.git + url = https://github.com/whjvenyl/fasd.git [submodule "modules/prompt/external/async"] path = modules/prompt/external/async url = https://github.com/mafredri/zsh-async.git diff --git a/modules/command-not-found/README.md b/modules/command-not-found/README.md index c433380..a44b1b6 100644 --- a/modules/command-not-found/README.md +++ b/modules/command-not-found/README.md @@ -6,18 +6,26 @@ install command. Debian and Arch Linux based distributions use the [`command-not-found`][1] tool. -macOS uses Homebrew's [`command-not-found` clone][2]. Note that unless you have -a recent version of Homebrew installed, you might also need to tap the -`command-not-found` Homebrew repository [following the instructions][3]. +macOS uses Homebrew's [`command-not-found` clone][2]. This module will +automatically load it without needing to manually source `handler.sh` from +`.zshrc` per the [instructions][3]. + +Note: Prior to [Homebrew 4.6.12][4], you may have also needed to tap the +[`command-not-found` Homebrew repository][5]. This will still work as a +fallback when the `command-not-found` handler can't be detected in Homebrew +core, but the repository has been deprecated and may print a warning. After +upgrading Homebrew, it can be untapped. ## Authors -_The authors of this module should be contacted via the [issue tracker][4]._ +_The authors of this module should be contacted via the [issue tracker][6]._ - [Joseph Booker](https://github.com/sargas) - [Indrajit Raychaudhuri](https://github.com/indrajitr) [1]: https://code.launchpad.net/command-not-found -[2]: https://github.com/Homebrew/homebrew-command-not-found -[3]: https://github.com/Homebrew/homebrew-command-not-found#install -[4]: https://github.com/sorin-ionescu/prezto/issues +[2]: https://docs.brew.sh/Command-Not-Found +[3]: https://docs.brew.sh/Command-Not-Found#install +[4]: https://github.com/Homebrew/brew/releases/tag/4.6.12 +[5]: https://github.com/Homebrew/homebrew-command-not-found +[6]: https://github.com/sorin-ionescu/prezto/issues diff --git a/modules/command-not-found/init.zsh b/modules/command-not-found/init.zsh index cf8f64e..fbe959c 100644 --- a/modules/command-not-found/init.zsh +++ b/modules/command-not-found/init.zsh @@ -12,11 +12,22 @@ if [[ -s /etc/zsh_command_not_found ]]; then # Load command-not-found on Arch Linux-based distributions. elif [[ -s /usr/share/doc/pkgfile/command-not-found.zsh ]]; then source /usr/share/doc/pkgfile/command-not-found.zsh -# Load command-not-found on macOS when Homebrew tap is configured. -elif (( $+commands[brew] )) \ - && [[ -s ${hb_cnf_handler::="${HOMEBREW_REPOSITORY:-$commands[brew]:A:h:h}/Library/Taps/homebrew/homebrew-command-not-found/handler.sh"} ]]; then - source "$hb_cnf_handler" - unset hb_cnf_handler +# Load command-not-found on macOS when Homebrew is present. Check explicitly +# for MacOS, since homebrew can be installed on Linux as a supplementary PM +elif [[ "$OSTYPE" =~ ^darwin ]] && (( $+commands[brew] )); then + homebrew_repo=${HOMEBREW_REPOSITORY:-$commands[brew]:A:h:h/Library} + # Look for handler in Homebrew core (as of >=4.6.12), then in Taps (< 4.6.12) + for hb_cnf_handler in "$homebrew_repo"/{Homebrew/command-not-found/handler.sh,Taps/homebrew/homebrew-command-not-found/handler.sh}; do + if [ -f "$hb_cnf_handler" ]; then + source "$hb_cnf_handler" + unset hb_cnf_handler homebrew_repo + break + fi + done + if [ -n "$hb_cnf_handler" ]; then + unset hb_cnf_handler homebrew_repo + return 1 + fi # Return if requirements are not found. else return 1 diff --git a/modules/fasd/external b/modules/fasd/external index 90b531a..d58aaf4 160000 --- a/modules/fasd/external +++ b/modules/fasd/external @@ -1 +1 @@ -Subproject commit 90b531a5daaa545c74c7d98974b54cbdb92659fc +Subproject commit d58aaf42213463e49a0d704ad598026947f7404e