summaryrefslogtreecommitdiff
path: root/oh-my-zsh.sh
diff options
context:
space:
mode:
Diffstat (limited to 'oh-my-zsh.sh')
-rw-r--r--oh-my-zsh.sh20
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
}