b22593cf179bae479ab32700c5a7b94d3053762d

Author
Carlo Sala <carlosalag@protonmail.com>
Committer
Carlo Sala <carlosalag@protonmail.com>
Date

Message

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
17 
18   # Source file from $ZSH_CUSTOM if it exists, otherwise from $ZSH
19@@ -174,10 +174,16 @@ _omz_source() {
20 
21   # 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