summaryrefslogtreecommitdiff
path: root/plugins/vi-mode
diff options
context:
space:
mode:
authorJim Hester <james.f.hester@gmail.com>2012-09-20 08:03:09 -0400
committerJim Hester <james.f.hester@gmail.com>2012-09-20 08:03:09 -0400
commitb609aa0e6c981f2039d777687cb01a84587f6edc (patch)
tree7fc457d5217d6131b96e89823595ed7aec854815 /plugins/vi-mode
parent921d2f49ef01acce973980c0aa9c6ffbbd2fbd0b (diff)
downloadzsh-b609aa0e6c981f2039d777687cb01a84587f6edc.tar.gz
zsh-b609aa0e6c981f2039d777687cb01a84587f6edc.tar.bz2
zsh-b609aa0e6c981f2039d777687cb01a84587f6edc.zip
Fix to restore bindings after switching to vi-mode
the vi-mode plugin destroys any bindings made before it is sourced due to the 'bindkey -v' call to switch to using vi-mode. This patch saves the bindings before invoking 'bindkey -v' then rebinds them afterwards, this fixes a number of outstanding issues due to people using vi-mode and having things in oh-my-zsh break due to the bindings being destroyed
Diffstat (limited to 'plugins/vi-mode')
-rw-r--r--plugins/vi-mode/vi-mode.plugin.zsh5
1 files changed, 5 insertions, 0 deletions
diff --git a/plugins/vi-mode/vi-mode.plugin.zsh b/plugins/vi-mode/vi-mode.plugin.zsh
index c47ab7211..d29eb1dda 100644
--- a/plugins/vi-mode/vi-mode.plugin.zsh
+++ b/plugins/vi-mode/vi-mode.plugin.zsh
@@ -5,7 +5,12 @@ function zle-line-init zle-keymap-select {
zle -N zle-line-init
zle -N zle-keymap-select
+#changing mode clobbers the keybinds, so store the keybinds before and execute
+#them after
+binds=`bindkey -L`
bindkey -v
+for bind in ${(@f)binds}; do eval $bind; done
+unset binds
# if mode indicator wasn't setup by theme, define default
if [[ "$MODE_INDICATOR" == "" ]]; then