浏览代码

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

Fixes for vi-mode terminal overwriting bugs
Robby Russell 12 年之前
父节点
当前提交
3199d2ed8d
共有 1 个文件被更改,包括 19 次插入1 次删除
  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 reset-prompt
+  zle -R
 }
 }
 
 
 zle -N zle-line-init
 zle -N zle-line-init
+zle -N zle-line-finish
 zle -N zle-keymap-select
 zle -N zle-keymap-select
 
 
 bindkey -v
 bindkey -v