Permalink
Browse files

Fixes for vi-mode terminal overwriting bugs

fixes #387 and robbyrussell#1321 (comment)
and other problems of prompt overwriting when people did not realize that it
was vi mode causing the problem.  Hat tip to sorin ionescu, as I took this code
from prezto
  • Loading branch information...
1 parent c2ae9e0 commit 4e513d72b9542b7b5079451e3380b4a98b0b7b56 @jimhester committed Nov 2, 2012
Showing with 19 additions and 1 deletion.
  1. +19 −1 plugins/vi-mode/vi-mode.plugin.zsh
@@ -1,8 +1,26 @@
-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

0 comments on commit 4e513d7

Please sign in to comment.