|
@@ -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 reset-prompt
|
|
|
|
+ zle -R
|
|
}
|
|
}
|
|
|
|
|
|
zle -N zle-line-init
|
|
zle -N zle-line-init
|
|
|
|
+zle -N zle-line-finish
|
|
zle -N zle-keymap-select
|
|
zle -N zle-keymap-select
|
|
|
|
|
|
bindkey -v
|
|
bindkey -v
|