From 56669270988c5e32422643ec9e0562d1f3c6a0b8 Mon Sep 17 00:00:00 2001 From: David Tagatac Date: Fri, 17 Jan 2025 11:24:26 -0800 Subject: [PATCH 1/2] Use @whjvenyl's fork of fasd --- .gitmodules | 2 +- modules/fasd/external | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) 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/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 From c945922b2268ca1959a3ed29368b1c21a07950c1 Mon Sep 17 00:00:00 2001 From: jaawerth Date: Thu, 25 Sep 2025 21:13:27 -0400 Subject: [PATCH 2/2] command-not-found module: add support for homebrew >= 4.6.12 As of Homebrew 4.6.12, command-not-found is built into Homebrew core and the tap is deprecated, causing Homebrew to print deprecation warnings on init until the tap is uninstalled, after which prezto can't find the helper in its new location. * Added logic to look first in the new location for handler.sh in the core Homebrew repository, *then* check in Taps. * Added an OSTYPE check for MacOS to prevent this from accidentally engaging on Linux systems using Homebrew as a third party package manager --- modules/command-not-found/README.md | 22 +++++++++++++++------- modules/command-not-found/init.zsh | 21 ++++++++++++++++----- 2 files changed, 31 insertions(+), 12 deletions(-) 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