Browse Source

Merge pull request #1387 from jimhester/vi-mode-patch

Fixes for vi-mode terminal overwriting bugs
Robby Russell 11 years ago
parent
commit
3199d2ed8d
1 changed files with 19 additions and 1 deletions
  1. 19 1
      plugins/vi-mode/vi-mode.plugin.zsh

+ 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
 
 bindkey -v