X-Git-Url: https://git.rmz.io/dotfiles.git/blobdiff_plain/d6a0fb3ae5ee7ec1719fab4800c28d463d746b0f..10cf60790cf2430aba9f7e7120ccd414959e4f81:/zsh/plugins/vi-mode/vi-mode.plugin.zsh diff --git a/zsh/plugins/vi-mode/vi-mode.plugin.zsh b/zsh/plugins/vi-mode/vi-mode.plugin.zsh index c47ab72..f91be70 100644 --- a/zsh/plugins/vi-mode/vi-mode.plugin.zsh +++ b/zsh/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 bindkey -v