-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