Fixes for vi-mode terminal overwriting bugs

fixes #387 and https://github.com/robbyrussell/oh-my-zsh/pull/1321#issuecomment-9959540
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
This commit is contained in:
Jim Hester 2012-11-02 11:06:32 -04:00
parent c2ae9e09ca
commit 4e513d72b9
1 changed files with 19 additions and 1 deletions

View File

@ -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