summaryrefslogtreecommitdiff
path: root/plugins/vi-mode
diff options
context:
space:
mode:
authorSébastien M-B <essembeh@gmail.com>2013-02-08 19:08:06 +0100
committerSébastien M-B <essembeh@gmail.com>2013-02-08 19:08:06 +0100
commit2595484a97d85496fdcdca99a23f52eecd9b1b43 (patch)
treefffe23d53a2a635f0861047fb058c8a2632414f7 /plugins/vi-mode
parent8d23a3611086e9a13e7ad754c57fa8cc4797bfa9 (diff)
parent6e6cf4303712befb5a7fc3918494aefe4a65991f (diff)
downloadzsh-2595484a97d85496fdcdca99a23f52eecd9b1b43.tar.gz
zsh-2595484a97d85496fdcdca99a23f52eecd9b1b43.tar.bz2
zsh-2595484a97d85496fdcdca99a23f52eecd9b1b43.zip
Merge remote-tracking branch 'upstream/master'
Conflicts: lib/aliases.zsh
Diffstat (limited to 'plugins/vi-mode')
-rw-r--r--plugins/vi-mode/vi-mode.plugin.zsh15
1 files changed, 14 insertions, 1 deletions
diff --git a/plugins/vi-mode/vi-mode.plugin.zsh b/plugins/vi-mode/vi-mode.plugin.zsh
index c47ab7211..a06100472 100644
--- a/plugins/vi-mode/vi-mode.plugin.zsh
+++ b/plugins/vi-mode/vi-mode.plugin.zsh
@@ -1,8 +1,21 @@
-function zle-line-init zle-keymap-select {
+# Ensures that $terminfo values are valid and updates editor information when
+# the keymap changes.
+function zle-keymap-select zle-line-init zle-line-finish {
+ # The terminal must be in application mode when ZLE is active for $terminfo
+ # values to be valid.
+ if (( ${+terminfo[smkx]} )); then
+ printf '%s' ${terminfo[smkx]}
+ fi
+ if (( ${+terminfo[rmkx]} )); then
+ printf '%s' ${terminfo[rmkx]}
+ fi
+
zle reset-prompt
+ zle -R
}
zle -N zle-line-init
+zle -N zle-line-finish
zle -N zle-keymap-select
bindkey -v