diff options
Diffstat (limited to 'plugins/vi-mode')
| -rw-r--r-- | plugins/vi-mode/vi-mode.plugin.zsh | 21 | 
1 files changed, 20 insertions, 1 deletions
diff --git a/plugins/vi-mode/vi-mode.plugin.zsh b/plugins/vi-mode/vi-mode.plugin.zsh index c47ab7211..3ed32b3fb 100644 --- a/plugins/vi-mode/vi-mode.plugin.zsh +++ b/plugins/vi-mode/vi-mode.plugin.zsh @@ -1,12 +1,31 @@ -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 +zle -N edit-command-line +  bindkey -v +# allow v to edit the command line (standard behaviour) +autoload -Uz edit-command-line +bindkey -M vicmd 'v' edit-command-line +  # if mode indicator wasn't setup by theme, define default  if [[ "$MODE_INDICATOR" == "" ]]; then    MODE_INDICATOR="%{$fg_bold[red]%}<%{$fg[red]%}<<%{$reset_color%}"  | 
