diff options
author | Peter Tillemans <pti@snamellit.com> | 2013-01-02 09:42:14 +0100 |
---|---|---|
committer | Peter Tillemans <pti@snamellit.com> | 2013-01-02 09:42:14 +0100 |
commit | 587832f15579398e54690e62ea588178e951f8f8 (patch) | |
tree | 1e2149e743710e2c72a567a042606333bbad88da /plugins/vi-mode | |
parent | 55cc936d4e6d88f18518cedc9574b1df10702f8b (diff) | |
parent | 80a603259657acab97badbae20003b5a34c901f9 (diff) | |
download | zsh-587832f15579398e54690e62ea588178e951f8f8.tar.gz zsh-587832f15579398e54690e62ea588178e951f8f8.tar.bz2 zsh-587832f15579398e54690e62ea588178e951f8f8.zip |
Merge branch 'master' of https://github.com/robbyrussell/oh-my-zsh
Diffstat (limited to 'plugins/vi-mode')
-rw-r--r-- | plugins/vi-mode/vi-mode.plugin.zsh | 25 |
1 files changed, 19 insertions, 6 deletions
diff --git a/plugins/vi-mode/vi-mode.plugin.zsh b/plugins/vi-mode/vi-mode.plugin.zsh index d29eb1dda..f91be70e4 100644 --- a/plugins/vi-mode/vi-mode.plugin.zsh +++ b/plugins/vi-mode/vi-mode.plugin.zsh @@ -1,16 +1,29 @@ -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] && $+terminfo[rmkx] )); then + case "$0" in + (zle-line-init) + # Enable terminal application mode. + echoti smkx + ;; + (zle-line-finish) + # Disable terminal application mode. + echoti rmkx + ;; + esac + fi zle reset-prompt + zle -R } zle -N zle-line-init +zle -N zle-line-finish 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 |