From 43bf17169c2810d0a59b8876229b65592aa23a3e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=81ukasz=20Matysiak?= <135020912+lukasz-matysiak@users.noreply.github.com> Date: Thu, 15 Jan 2026 13:18:08 +0100 Subject: [PATCH 01/18] Make uutils coreutils ls behave the same as GNU coreutils ls Ubuntu 25.10 uses a rust rewrite of GNU coreutils called `uutils coreutils`. Calling `ls --version` on that config yields `ls (uutils coreutils) 0.2.2`. Since the regex does not match the string, it falls back to the BSD branch. That leads to `ls` being aliased as `ls -G` without any colors in the output. Since `uutils coreutils` claims that `uutils coreutils aims to be a drop-in replacement for the GNU utils. Differences with GNU are treated as bugs.` it should be safe to treat it the same way in the code. Adjust the `utility` module to detect `uutils ls` as `GNU ls` by extending the regex pattern. --- modules/utility/init.zsh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/utility/init.zsh b/modules/utility/init.zsh index 5b4bf80..a38150d 100644 --- a/modules/utility/init.zsh +++ b/modules/utility/init.zsh @@ -76,7 +76,7 @@ if zstyle -T ':prezto:module:utility' safe-ops; then fi # ls -if [[ ${(@M)${(f)"$(ls --version 2>&1)"}:#*(GNU|lsd) *} ]]; then +if [[ ${(@M)${(f)"$(ls --version 2>&1)"}:#*(GNU|lsd|uutils) *} ]]; then # GNU Core Utilities if zstyle -T ':prezto:module:utility:ls' dirs-first; then From 371aaa254ae9a87e78f4337c655de2b5037301c8 Mon Sep 17 00:00:00 2001 From: Denis Sheremet Date: Fri, 23 Jan 2026 12:55:50 +0300 Subject: [PATCH 02/18] utility: conform 'diff' to GNU behaviour for scripting --- modules/utility/functions/diff | 2 ++ 1 file changed, 2 insertions(+) diff --git a/modules/utility/functions/diff b/modules/utility/functions/diff index 2e812f2..fb288a8 100644 --- a/modules/utility/functions/diff +++ b/modules/utility/functions/diff @@ -8,8 +8,10 @@ # function diff { if zstyle -t ':prezto:module:utility:diff' color \ + && [[ -t 1 ]] \ && (( $+commands[colordiff] )); then command diff "$@" | colordiff + return "${pipestatus[1]}" else command diff "$@" fi From 5464030f6a7c7c1a0bfc376a094f2c2794d85b1d Mon Sep 17 00:00:00 2001 From: Trey Keown Date: Fri, 20 Mar 2026 15:51:15 -0500 Subject: [PATCH 03/18] general: Escapes a string for safe use in parameter expansion --- modules/git/functions/git-info | 6 +++--- modules/helper/functions/escape-eval | 13 +++++++++++++ modules/prompt/functions/prompt_cloud_setup | 2 +- modules/prompt/functions/prompt_damoekri_setup | 2 +- modules/prompt/functions/prompt_kylewest_setup | 2 +- modules/prompt/functions/prompt_paradox_setup | 4 ++-- modules/prompt/functions/prompt_skwp_setup | 2 +- modules/prompt/functions/prompt_smiley_setup | 2 +- 8 files changed, 23 insertions(+), 10 deletions(-) create mode 100644 modules/helper/functions/escape-eval diff --git a/modules/git/functions/git-info b/modules/git/functions/git-info index eca5046..7bbcb09 100644 --- a/modules/git/functions/git-info +++ b/modules/git/functions/git-info @@ -246,7 +246,7 @@ function git-info { fi # Get the branch. - branch="${$(command git symbolic-ref HEAD 2> /dev/null)#refs/heads/}" + branch="$(escape-eval "${$(command git symbolic-ref HEAD 2> /dev/null)#refs/heads/}")" # Format branch. zstyle -s ':prezto:module:git:info:branch' format 'branch_format' @@ -257,7 +257,7 @@ function git-info { # Format position. zstyle -s ':prezto:module:git:info:position' format 'position_format' if [[ -z "$branch" && -n "$position_format" ]]; then - position="$(command git describe --contains --all HEAD 2> /dev/null)" + position="$(escape-eval "$(command git describe --contains --all HEAD 2> /dev/null)")" if [[ -n "$position" ]]; then zformat -f position_formatted "$position_format" "p:$position" fi @@ -268,7 +268,7 @@ function git-info { if [[ -n "$branch" && -n "$remote_format" ]]; then # Gets the remote name. remote_cmd='command git rev-parse --symbolic-full-name --verify HEAD@{upstream}' - remote="${$(${(z)remote_cmd} 2> /dev/null)##refs/remotes/}" + remote="$(escape-eval "${$(${(z)remote_cmd} 2> /dev/null)##refs/remotes/}")" if [[ -n "$remote" ]]; then zformat -f remote_formatted "$remote_format" "R:$remote" fi diff --git a/modules/helper/functions/escape-eval b/modules/helper/functions/escape-eval new file mode 100644 index 0000000..2836a13 --- /dev/null +++ b/modules/helper/functions/escape-eval @@ -0,0 +1,13 @@ +# +# Escapes a string for safe use in ${(e)...} parameter expansion. +# +# Authors: +# Trey Keown +# + +# function escape-eval { + +setopt LOCAL_OPTIONS EXTENDED_GLOB +print -r -- "${1//(#m)[\\\$\`]/\\$MATCH}" + +# } diff --git a/modules/prompt/functions/prompt_cloud_setup b/modules/prompt/functions/prompt_cloud_setup index 908e3c9..b0eb86e 100644 --- a/modules/prompt/functions/prompt_cloud_setup +++ b/modules/prompt/functions/prompt_cloud_setup @@ -117,7 +117,7 @@ function prompt_cloud_setup { 'rprompt' '' # Define prompts. - PROMPT='%B%F{$primary_color}${prefix}%f%b %B%F{$secondary_color}%c%f%b ${git_info:+${(e)git_info[prompt]}} ' + PROMPT='%B%F{$primary_color}${prefix}%f%b %B%F{$secondary_color}%c%f%b ${git_info:+$(escape-eval ${(e)git_info[prompt]})} ' RPROMPT='' } diff --git a/modules/prompt/functions/prompt_damoekri_setup b/modules/prompt/functions/prompt_damoekri_setup index 1fbaedf..553f222 100644 --- a/modules/prompt/functions/prompt_damoekri_setup +++ b/modules/prompt/functions/prompt_damoekri_setup @@ -62,7 +62,7 @@ function prompt_damoekri_setup { # Define prompts. PROMPT='%F{cyan}${_prompt_damoekri_pwd}%f${editor_info[keymap]} ' - RPROMPT='${git_info:+${(e)git_info[rprompt]}}${ruby_info:+${ruby_info[version]}}' + RPROMPT='${git_info:+$(escape-eval "${(e)git_info[rprompt]}")}${ruby_info:+$(escape-eval "${(e)ruby_info[version]}")}' } prompt_damoekri_setup "$@" diff --git a/modules/prompt/functions/prompt_kylewest_setup b/modules/prompt/functions/prompt_kylewest_setup index d3b33a9..2cd664b 100644 --- a/modules/prompt/functions/prompt_kylewest_setup +++ b/modules/prompt/functions/prompt_kylewest_setup @@ -61,7 +61,7 @@ function prompt_kylewest_setup { zstyle ':prezto:module:ruby:info:version' format '%F{blue}[%v]%f' # Define prompts. - PROMPT='%F{cyan}%c%f ${git_info:+${(e)git_info[prompt]}}${editor_info[keymap]} ' + PROMPT='%F{cyan}%c%f ${git_info:+$(escape-eval ${(e)git_info[prompt]})}${editor_info[keymap]} ' RPROMPT='${ruby_info[version]}' } diff --git a/modules/prompt/functions/prompt_paradox_setup b/modules/prompt/functions/prompt_paradox_setup index 9286967..14012dd 100644 --- a/modules/prompt/functions/prompt_paradox_setup +++ b/modules/prompt/functions/prompt_paradox_setup @@ -50,11 +50,11 @@ function prompt_paradox_build_prompt { prompt_paradox_start_segment blue black '$_prompt_paradox_pwd' if [[ -n "$git_info" ]]; then - prompt_paradox_start_segment green black '${(e)git_info[ref]}${(e)git_info[status]}' + prompt_paradox_start_segment green black '$(escape-eval "${(e)git_info[ref]}${(e)git_info[status]}")' fi if [[ -n "$python_info" ]]; then - prompt_paradox_start_segment white black '${(e)python_info[virtualenv]}' + prompt_paradox_start_segment white black '$(escape-eval "${(e)python_info[virtualenv]}")' fi prompt_paradox_end_segment diff --git a/modules/prompt/functions/prompt_skwp_setup b/modules/prompt/functions/prompt_skwp_setup index b84011f..1657fbf 100644 --- a/modules/prompt/functions/prompt_skwp_setup +++ b/modules/prompt/functions/prompt_skwp_setup @@ -71,7 +71,7 @@ function prompt_skwp_setup { zstyle ':prezto:module:ruby:info:version' format '[%v]' # Define prompts. - PROMPT="${_prompt_skwp_colors[3]}%n%f@${_prompt_skwp_colors[2]}%m%f ${_prompt_skwp_colors[5]}%~%f "'${git_info:+${(e)git_info[prompt]}}'"$ " + PROMPT="${_prompt_skwp_colors[3]}%n%f@${_prompt_skwp_colors[2]}%m%f ${_prompt_skwp_colors[5]}%~%f "'${git_info:+$(escape-eval "${(e)git_info[prompt]}")}'"$ " RPROMPT='%F{blue}${ruby_info[version]}' } diff --git a/modules/prompt/functions/prompt_smiley_setup b/modules/prompt/functions/prompt_smiley_setup index cd1725b..eb1a14a 100644 --- a/modules/prompt/functions/prompt_smiley_setup +++ b/modules/prompt/functions/prompt_smiley_setup @@ -60,7 +60,7 @@ function prompt_smiley_setup { zstyle ':prezto:module:git:info:keys' format 'prompt' '(%b%D)' # Define prompts. - PROMPT='$python_info[virtualenv]$ruby_info[version]${git_info:+${(e)git_info[prompt]}} %B%c%b %(?:%F{green}ツ%f:%F{red}✖%f) ' + PROMPT='$python_info[virtualenv]$ruby_info[version]${git_info:+$(escape-eval ${(e)git_info[prompt]})} %B%c%b %(?:%F{green}ツ%f:%F{red}✖%f) ' RPROMPT='${editor_info[overwrite]}${VIM:+" %B%F{green}V%f%b"}' SPROMPT='zsh: correct %F{red}%R%f to %F{green}%r%f [nyae]? ' } From a14e31fdb95265b18f582520f80008cb3791d1f7 Mon Sep 17 00:00:00 2001 From: Indrajit Raychaudhuri Date: Sun, 22 Mar 2026 01:14:37 -0500 Subject: [PATCH 04/18] history-substring-search: Update history-substring-search module to current master --- modules/history-substring-search/external | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/history-substring-search/external b/modules/history-substring-search/external index 87ce96b..14c8d2e 160000 --- a/modules/history-substring-search/external +++ b/modules/history-substring-search/external @@ -1 +1 @@ -Subproject commit 87ce96b1862928d84b1afe7c173316614b30e301 +Subproject commit 14c8d2e0ffaee98f2df9850b19944f32546fdea5 From a25e62938bb15a51fb29c197c9587e965d5d2d1d Mon Sep 17 00:00:00 2001 From: Indrajit Raychaudhuri Date: Sun, 22 Mar 2026 01:16:14 -0500 Subject: [PATCH 05/18] completion: Update completion module to current master --- modules/completion/external | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/completion/external b/modules/completion/external index c160d09..e461417 160000 --- a/modules/completion/external +++ b/modules/completion/external @@ -1 +1 @@ -Subproject commit c160d09fddd28ceb3af5cf80e9253af80e450d96 +Subproject commit e461417f4e20b20f84b9d48a7acd582145723929 From 8de38fb59b25d5ca884d79d65bad4ae8bbdc4271 Mon Sep 17 00:00:00 2001 From: Indrajit Raychaudhuri Date: Sun, 22 Mar 2026 01:19:41 -0500 Subject: [PATCH 06/18] syntax-highlighting: Update syntax-highlighting module to current master --- modules/syntax-highlighting/external | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/syntax-highlighting/external b/modules/syntax-highlighting/external index db085e4..1d85c69 160000 --- a/modules/syntax-highlighting/external +++ b/modules/syntax-highlighting/external @@ -1 +1 @@ -Subproject commit db085e4661f6aafd24e5acb5b2e17e4dd5dddf3e +Subproject commit 1d85c692615a25fe2293bdd44b34c217d5d2bf04 From 9916799a0d0b3032fc71ece72303f1f7b49ea010 Mon Sep 17 00:00:00 2001 From: Indrajit Raychaudhuri Date: Sun, 22 Mar 2026 01:40:07 -0500 Subject: [PATCH 07/18] utility: Avoid multiple `ls --version` calls per shell startup --- modules/utility/init.zsh | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/modules/utility/init.zsh b/modules/utility/init.zsh index a38150d..cacd8be 100644 --- a/modules/utility/init.zsh +++ b/modules/utility/init.zsh @@ -76,7 +76,9 @@ if zstyle -T ':prezto:module:utility' safe-ops; then fi # ls -if [[ ${(@M)${(f)"$(ls --version 2>&1)"}:#*(GNU|lsd|uutils) *} ]]; then +_ls_version="$(ls --version 2>&1)" + +if [[ ${(@M)${(f)_ls_version}:#*(GNU|lsd|uutils) *} ]]; then # GNU Core Utilities if zstyle -T ':prezto:module:utility:ls' dirs-first; then @@ -123,10 +125,12 @@ alias lt='ll -tr' # Lists sorted by date, most recent last. alias lc='lt -c' # Lists sorted by date, most recent last, shows change time. alias lu='lt -u' # Lists sorted by date, most recent last, shows access time. -if [[ ${(@M)${(f)"$(ls --version 2>&1)"}:#*GNU *} ]]; then +if [[ ${(@M)${(f)_ls_version}:#*GNU *} ]]; then alias lx='ll -XB' # Lists sorted by extension (GNU only). fi +unset _ls_version + # Grep if zstyle -t ':prezto:module:utility:grep' color; then export GREP_COLOR=${GREP_COLOR:-'37;45'} # BSD. From e5444ce53417da5a23284d389916e3b9b680eee2 Mon Sep 17 00:00:00 2001 From: Indrajit Raychaudhuri Date: Sun, 22 Mar 2026 01:44:23 -0500 Subject: [PATCH 08/18] editor: use keymap array instead of word splitting --- modules/editor/init.zsh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/editor/init.zsh b/modules/editor/init.zsh index 5798bc8..39e38d8 100644 --- a/modules/editor/init.zsh +++ b/modules/editor/init.zsh @@ -83,8 +83,8 @@ zle -N edit-command-line # Runs bindkey but for all of the keymaps. Running it with no arguments will # print out the mappings for all of the keymaps. function bindkey-all { - local keymap='' - for keymap in $(bindkey -l); do + local keymap + for keymap in "${(@f)$(bindkey -l)}"; do [[ "$#" -eq 0 ]] && printf "#### %s\n" "${keymap}" 1>&2 bindkey -M "${keymap}" "$@" done From 2e3fbc8fac07a70ddc5f9f1cc5ed258cac15b4ff Mon Sep 17 00:00:00 2001 From: Indrajit Raychaudhuri Date: Sun, 22 Mar 2026 02:01:11 -0500 Subject: [PATCH 09/18] ssh: Use idiomatic zsh array operations instead of sed/grep forks --- modules/ssh/init.zsh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/ssh/init.zsh b/modules/ssh/init.zsh index 6bf237c..fca663a 100644 --- a/modules/ssh/init.zsh +++ b/modules/ssh/init.zsh @@ -27,7 +27,7 @@ if [[ ! -S "$SSH_AUTH_SOCK" ]]; then # Start ssh-agent if not started. if ! ps -U "$LOGNAME" -o pid,ucomm | grep -q -- "${SSH_AGENT_PID:--1} ssh-agent"; then mkdir -p "$_ssh_agent_env:h" - eval "$(ssh-agent | sed '/^echo /d' | tee "$_ssh_agent_env")" + eval "$(print -l "${(@)${(f)"$(ssh-agent)"}:#echo *}" | tee "$_ssh_agent_env")" fi fi @@ -39,7 +39,7 @@ if [[ -S "$SSH_AUTH_SOCK" && "$SSH_AUTH_SOCK" != "$_ssh_agent_sock" ]]; then fi # Load identities. -if ssh-add -l 2>&1 | grep -q 'The agent has no identities'; then +if [[ ${(@M)${(f)"$(ssh-add -l 2>&1)"}:#The agent has no identities*} ]]; then zstyle -a ':prezto:module:ssh:load' identities '_ssh_identities' # ssh-add has strange requirements for running SSH_ASKPASS, so we duplicate # them here. Essentially, if the other requirements are met, we redirect stdin From 7fcc9d2dadb04d8aa3ae0d2729fe2a56503f8095 Mon Sep 17 00:00:00 2001 From: Indrajit Raychaudhuri Date: Sun, 22 Mar 2026 02:05:49 -0500 Subject: [PATCH 10/18] node: Speedup 'nodenv' initialization by skipping rehashing. See: https://github.com/nodenv/nodenv#how-nodenv-hooks-into-your-shell --- modules/node/init.zsh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/node/init.zsh b/modules/node/init.zsh index 0c27764..d23cef0 100644 --- a/modules/node/init.zsh +++ b/modules/node/init.zsh @@ -19,7 +19,7 @@ if (( $#local_nodenv_paths || $+commands[nodenv] )); then # Ensure manually installed nodenv is added to path when present. [[ -s $local_nodenv_paths[1] ]] && path=($local_nodenv_paths[1]:h $path) - eval "$(nodenv init - zsh)" + eval "$(nodenv init - --no-rehash zsh)" # Load manually installed nvm into the shell session. elif (( $#local_nvm_paths )); then From 331adc4a69ab7e96a41e4cc970893c6d913321ed Mon Sep 17 00:00:00 2001 From: Indrajit Raychaudhuri Date: Sun, 22 Mar 2026 02:39:11 -0500 Subject: [PATCH 11/18] spectrum: optimize ANSI color initialization loops MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Split the single loop that initializes both named ANSI colors (0–7) and the remaining 256-color indices into two separate loops. The first loop sets both numeric and name keys for the named ANSI colors without per-iteration checks, and the second loop sets only numeric keys for the remaining indices. --- modules/spectrum/init.zsh | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/modules/spectrum/init.zsh b/modules/spectrum/init.zsh index 37b7d7b..be8c9fc 100644 --- a/modules/spectrum/init.zsh +++ b/modules/spectrum/init.zsh @@ -56,14 +56,18 @@ FX=( FG[none]="$FX[none]" BG[none]="$FX[none]" colors=(black red green yellow blue magenta cyan white) -for color in {0..255}; do - if (( $color >= 0 )) && (( $color < $#colors )); then - index=$(( $color + 1 )) - FG[$colors[$index]]="\e[38;5;${color}m" - BG[$colors[$index]]="\e[48;5;${color}m" - fi +# Named ANSI colors (0–7) have both numeric and name keys. +for color in {0..7}; do + FG[$colors[color+1]]="\e[38;5;${color}m" + BG[$colors[color+1]]="\e[48;5;${color}m" FG[$color]="\e[38;5;${color}m" BG[$color]="\e[48;5;${color}m" done -unset color{s,} index + +# Remaining 256-color indices have only numeric keys. +for color in {8..255}; do + FG[$color]="\e[38;5;${color}m" + BG[$color]="\e[48;5;${color}m" +done +unset color{s,} From bd4e084ab0ead3f8639acf7a2b3335e23c594c34 Mon Sep 17 00:00:00 2001 From: Benjamin Grandfond Date: Sun, 28 Sep 2025 19:57:58 +0200 Subject: [PATCH 12/18] git: add git worktree management aliases --- modules/git/README.md | 9 +++++++++ modules/git/alias.zsh | 8 ++++++++ 2 files changed, 17 insertions(+) diff --git a/modules/git/README.md b/modules/git/README.md index fad57a1..833092d 100644 --- a/modules/git/README.md +++ b/modules/git/README.md @@ -323,6 +323,15 @@ zstyle ':prezto:module:git:alias' skip 'yes' - `gwX` removes files from the working tree and from the index recursively and forcefully. +### Worktree management (W) + +- `gWa` add a new working tree. +- `gWl` list all working trees. +- `gWx` removes a working tree. +- `gWX` removes a working tree and forcefully. +- `gWm` moves a working tree to a new location. +- `gWc` prunes all the working trees. + ### Shadows The following aliases may shadow system commands: diff --git a/modules/git/alias.zsh b/modules/git/alias.zsh index f14cca5..91ed53f 100644 --- a/modules/git/alias.zsh +++ b/modules/git/alias.zsh @@ -272,4 +272,12 @@ if ! zstyle -t ':prezto:module:git:alias' skip; then alias gwC='git clean --force' alias gwx='git rm -r' alias gwX='git rm -r --force' + + # Worktree management (W) + alias gWa='git worktree add' + alias gWl='git worktree list' + alias gWx='git worktree remove' + alias gWX='git worktree remove --force' + alias gWm='git worktree move' + alias gWc='git worktree prune' fi From 924d68bd876c4ac71ec9ff1dfeaa473dd8d55d31 Mon Sep 17 00:00:00 2001 From: Indrajit Raychaudhuri Date: Sun, 22 Mar 2026 15:10:41 -0500 Subject: [PATCH 13/18] git: adjust documentation for worktree management commands --- modules/git/README.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/modules/git/README.md b/modules/git/README.md index 833092d..7f9c834 100644 --- a/modules/git/README.md +++ b/modules/git/README.md @@ -323,14 +323,14 @@ zstyle ':prezto:module:git:alias' skip 'yes' - `gwX` removes files from the working tree and from the index recursively and forcefully. -### Worktree management (W) +### Working tree (W) -- `gWa` add a new working tree. -- `gWl` list all working trees. +- `gWa` adds a new working tree. +- `gWl` lists all working trees. - `gWx` removes a working tree. -- `gWX` removes a working tree and forcefully. +- `gWX` removes a working tree forcefully. - `gWm` moves a working tree to a new location. -- `gWc` prunes all the working trees. +- `gWc` prunes stale worktrees and their administrative data. ### Shadows From 44cece01b2b5ab1483afcac04379e8bfba0498ee Mon Sep 17 00:00:00 2001 From: Caio Mathielo Date: Wed, 7 Mar 2018 11:35:05 +0100 Subject: [PATCH 14/18] git: addjut git alias to show log with GPG signatures --- modules/git/alias.zsh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/git/alias.zsh b/modules/git/alias.zsh index 91ed53f..8a2771b 100644 --- a/modules/git/alias.zsh +++ b/modules/git/alias.zsh @@ -192,7 +192,7 @@ if ! zstyle -t ':prezto:module:git:alias' skip; then alias glg='git log --topo-order --graph --pretty=format:"$_git_log_oneline_format"' alias glb='git log --topo-order --pretty=format:"$_git_log_brief_format"' alias glc='git shortlog --summary --numbered' - alias glS='git log --show-signature' + alias glS='git log --topo-order --show-signature --pretty=format:"${_git_log_medium_format}"' # Merge (m) alias gm='git merge' From 7c6b8a29cf1c237b88ec91f5a1aedb2ddc0d4bb5 Mon Sep 17 00:00:00 2001 From: Amir Nissim Date: Tue, 16 Jun 2015 10:44:09 +0300 Subject: [PATCH 15/18] git: update `git clean` alias to clean directories as well --- modules/git/README.md | 2 +- modules/git/alias.zsh | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/git/README.md b/modules/git/README.md index 7f9c834..ed2890b 100644 --- a/modules/git/README.md +++ b/modules/git/README.md @@ -318,7 +318,7 @@ zstyle ':prezto:module:git:alias' skip 'yes' index nor the working tree. - `gwR` resets the current HEAD, index and working tree to the specified state. - `gwc` removes untracked files from the working tree (dry-run). -- `gwC` removes untracked files from the working tree. +- `gwC` removes untracked files and directories from the working tree. - `gwx` removes files from the working tree and from the index recursively. - `gwX` removes files from the working tree and from the index recursively and forcefully. diff --git a/modules/git/alias.zsh b/modules/git/alias.zsh index 8a2771b..977eaac 100644 --- a/modules/git/alias.zsh +++ b/modules/git/alias.zsh @@ -269,7 +269,7 @@ if ! zstyle -t ':prezto:module:git:alias' skip; then alias gwr='git reset --soft' alias gwR='git reset --hard' alias gwc='git clean --dry-run' - alias gwC='git clean --force' + alias gwC='git clean -d --force' alias gwx='git rm -r' alias gwX='git rm -r --force' From a1c01ff39f627087a886b595c55f459ec8d732ee Mon Sep 17 00:00:00 2001 From: Alex Forsythe Date: Sun, 22 Mar 2026 21:22:19 -0700 Subject: [PATCH 16/18] Fix handler path for command-not-found The command-not-found plugin can't find handler.sh when HOMEBREW_REPOSITORY is set because "Library" is only included in the path when that env var is unset. Let's fix that by always including the "Library" path element. --- modules/command-not-found/init.zsh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/command-not-found/init.zsh b/modules/command-not-found/init.zsh index fbe959c..601986a 100644 --- a/modules/command-not-found/init.zsh +++ b/modules/command-not-found/init.zsh @@ -15,9 +15,9 @@ elif [[ -s /usr/share/doc/pkgfile/command-not-found.zsh ]]; then # 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} + homebrew_repo=${HOMEBREW_REPOSITORY:-$commands[brew]:A:h:h} # 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 + for hb_cnf_handler in "$homebrew_repo"/{Library/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 From 4efeccfefcde4d0ce6cb889048378e863db6e27a Mon Sep 17 00:00:00 2001 From: David Tagatac Date: Sun, 22 Mar 2026 13:13:51 -0700 Subject: [PATCH 17/18] Make the persistent SSH authentication socket symlink creation atomic --- modules/ssh/init.zsh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/modules/ssh/init.zsh b/modules/ssh/init.zsh index fca663a..d6de5fe 100644 --- a/modules/ssh/init.zsh +++ b/modules/ssh/init.zsh @@ -34,7 +34,8 @@ fi # Create a persistent SSH authentication socket. if [[ -S "$SSH_AUTH_SOCK" && "$SSH_AUTH_SOCK" != "$_ssh_agent_sock" ]]; then mkdir -p "$_ssh_agent_sock:h" - ln -sf "$SSH_AUTH_SOCK" "$_ssh_agent_sock" + ln -sf "$SSH_AUTH_SOCK" "$_ssh_agent_sock.$$" + mv -f "$_ssh_agent_sock.$$" "$_ssh_agent_sock" export SSH_AUTH_SOCK="$_ssh_agent_sock" fi From 73ae7f11280adcc061c15ebb2f494954c2cc8a38 Mon Sep 17 00:00:00 2001 From: Indrajit Raychaudhuri Date: Mon, 23 Mar 2026 00:49:01 -0500 Subject: [PATCH 18/18] prompt: Update pure submodule to 1.27.1 --- modules/prompt/external/pure | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/prompt/external/pure b/modules/prompt/external/pure index a02209d..dbefd0d 160000 --- a/modules/prompt/external/pure +++ b/modules/prompt/external/pure @@ -1 +1 @@ -Subproject commit a02209d36c8509c0e62f44324127632999c9c0cf +Subproject commit dbefd0dcafaa3ac7d7222ca50890d9d0c97f7ca2