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.
Diff
1diff --git a/oh-my-zsh.sh b/oh-my-zsh.sh
2index e047d4834c4891203c8e203b77e3133e415fb723..a577c1f4195109112a3cf2c33b67982fa990d017 100644
3--- a/oh-my-zsh.sh
4+++ b/oh-my-zsh.sh
5@@ -159,10 +159,10 @@ _omz_source() {
6 zstyle -T ":omz:${context}" aliases || disable_aliases=1
7 8 # Back up alias names prior to sourcing
9- local -a aliases_pre galiases_pre
10+ local -A aliases_pre galiases_pre
11 if (( disable_aliases )); then
12- aliases_pre=("${(@k)aliases}")
13- galiases_pre=("${(@k)galiases}")
14+ aliases_pre=("${(@kv)aliases}")
15+ galiases_pre=("${(@kv)galiases}")
16 fi
1718 # Source file from $ZSH_CUSTOM if it exists, otherwise from $ZSH
19@@ -174,10 +174,16 @@ _omz_source() {
2021 # Unset all aliases that don't appear in the backed up list of aliases
22 if (( disable_aliases )); then
23- local -a disabled
24- # ${var:|array} gets the list of items in var not in array
25- disabled=("${(@k)aliases:|aliases_pre}" "${(@k)galiases:|galiases_pre}")
26- (( $#disabled == 0 )) || unalias "${(@)disabled}"
27+ if (( #aliases_pre )); then
28+ aliases=("${(@kv)aliases_pre}")
29+ else
30+ (( #aliases )) && unalias "${(@k)aliases}"
31+ fi
32+ if (( #galiases_pre )); then
33+ galiases=("${(@kv)galiases_pre}")
34+ else
35+ (( #galiases )) && unalias "${(@k)galiases}"
36+ fi
37 fi
38 }
39