diff options
author | Jim Hester <james.f.hester@gmail.com> | 2012-11-02 11:06:32 -0400 |
---|---|---|
committer | Jim Hester <james.f.hester@gmail.com> | 2012-11-02 11:06:32 -0400 |
commit | 4e513d72b9542b7b5079451e3380b4a98b0b7b56 (patch) | |
tree | 531b6156a75017745520ec28348060cfab98a18a /plugins | |
parent | c2ae9e09ca1f33ff1e13e629a0b2e6bdd19f83a9 (diff) | |
download | zsh-4e513d72b9542b7b5079451e3380b4a98b0b7b56.tar.gz zsh-4e513d72b9542b7b5079451e3380b4a98b0b7b56.tar.bz2 zsh-4e513d72b9542b7b5079451e3380b4a98b0b7b56.zip |
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
Diffstat (limited to 'plugins')
-rw-r--r-- | plugins/vi-mode/vi-mode.plugin.zsh | 20 |
1 files changed, 19 insertions, 1 deletions
diff --git a/plugins/vi-mode/vi-mode.plugin.zsh b/plugins/vi-mode/vi-mode.plugin.zsh index d29eb1dda..e23bd3c54 100644 --- a/plugins/vi-mode/vi-mode.plugin.zsh +++ b/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 #changing mode clobbers the keybinds, so store the keybinds before and execute |