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