3199d2ed8d70dc45911f34dd7c2ec4b702db3b28

Author
Robby Russell <robby@planetargon.com>
Committer
Robby Russell <robby@planetargon.com>
Date

Message

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

Fixes for vi-mode terminal overwriting bugs

Diff

 1diff --git a/plugins/vi-mode/vi-mode.plugin.zsh b/plugins/vi-mode/vi-mode.plugin.zsh
 2index c47ab72114562251e4ca75f1395dcaea1abe2002..f91be70e4c5316856b93f7a18134a3e62b66aabc 100644
 3--- a/plugins/vi-mode/vi-mode.plugin.zsh
 4+++ b/plugins/vi-mode/vi-mode.plugin.zsh
 5@@ -1,8 +1,26 @@
 6-function zle-line-init zle-keymap-select {
 7+# Ensures that $terminfo values are valid and updates editor information when
 8+# the keymap changes.
 9+function zle-keymap-select zle-line-init zle-line-finish {
10+  # The terminal must be in application mode when ZLE is active for $terminfo
11+  # values to be valid.
12+  if (( $+terminfo[smkx] && $+terminfo[rmkx] )); then
13+    case "$0" in
14+      (zle-line-init)
15+        # Enable terminal application mode.
16+        echoti smkx
17+      ;;
18+      (zle-line-finish)
19+        # Disable terminal application mode.
20+        echoti rmkx
21+      ;;
22+    esac
23+  fi
24   zle reset-prompt
25+  zle -R
26 }
27 
28 zle -N zle-line-init
29+zle -N zle-line-finish
30 zle -N zle-keymap-select
31 
32 bindkey -v