diff options
author | Carlo Sala <carlosalag@protonmail.com> | 2023-05-01 22:21:01 +0200 |
---|---|---|
committer | Carlo Sala <carlosalag@protonmail.com> | 2023-05-01 22:52:13 +0200 |
commit | b22593cf179bae479ab32700c5a7b94d3053762d (patch) | |
tree | 7e3a1510f49c915ccfcf5fcdaf078ce02bdd1f66 /oh-my-zsh.sh | |
parent | 2e7a247cab663fbc0aafdefa15bf10eb4dd64563 (diff) | |
download | zsh-b22593cf179bae479ab32700c5a7b94d3053762d.tar.gz zsh-b22593cf179bae479ab32700c5a7b94d3053762d.tar.bz2 zsh-b22593cf179bae479ab32700c5a7b94d3053762d.zip |
fix(init): avoid overwriting existing aliases
Fix regression introduced in #11550. If an existing alias was present in
the moment of sourcing, and oh-my-zsh aliases were disabled for that
file, it'd be overwritten aswell. See #11658.
Diffstat (limited to 'oh-my-zsh.sh')
-rw-r--r-- | oh-my-zsh.sh | 20 |
1 files changed, 13 insertions, 7 deletions
diff --git a/oh-my-zsh.sh b/oh-my-zsh.sh index e047d4834..a577c1f41 100644 --- a/oh-my-zsh.sh +++ b/oh-my-zsh.sh @@ -159,10 +159,10 @@ _omz_source() { zstyle -T ":omz:${context}" aliases || disable_aliases=1 # Back up alias names prior to sourcing - local -a aliases_pre galiases_pre + local -A aliases_pre galiases_pre if (( disable_aliases )); then - aliases_pre=("${(@k)aliases}") - galiases_pre=("${(@k)galiases}") + aliases_pre=("${(@kv)aliases}") + galiases_pre=("${(@kv)galiases}") fi # Source file from $ZSH_CUSTOM if it exists, otherwise from $ZSH @@ -174,10 +174,16 @@ _omz_source() { # Unset all aliases that don't appear in the backed up list of aliases if (( disable_aliases )); then - local -a disabled - # ${var:|array} gets the list of items in var not in array - disabled=("${(@k)aliases:|aliases_pre}" "${(@k)galiases:|galiases_pre}") - (( $#disabled == 0 )) || unalias "${(@)disabled}" + if (( #aliases_pre )); then + aliases=("${(@kv)aliases_pre}") + else + (( #aliases )) && unalias "${(@k)aliases}" + fi + if (( #galiases_pre )); then + galiases=("${(@kv)galiases_pre}") + else + (( #galiases )) && unalias "${(@k)galiases}" + fi fi } |