8ea773582f
The zle-line-init and zle-line-finish definitions here were broken with respect to smkx/rmkx because their "if" logic had fallthrough where it shouldn't, so the mode was left in rmkx all the time. This just removes those widgets entirely, because they're now defined (correctly) in lib/keybindings.zsh and not needed in plugins.
44 lines
1.1 KiB
Bash
44 lines
1.1 KiB
Bash
# Updates editor information when the keymap changes.
|
|
function zle-keymap-select() {
|
|
zle reset-prompt
|
|
zle -R
|
|
}
|
|
|
|
# Ensure that the prompt is redrawn when the terminal size changes.
|
|
TRAPWINCH() {
|
|
zle && { zle reset-prompt; zle -R }
|
|
}
|
|
|
|
zle -N zle-keymap-select
|
|
zle -N edit-command-line
|
|
|
|
|
|
bindkey -v
|
|
|
|
# allow v to edit the command line (standard behaviour)
|
|
autoload -Uz edit-command-line
|
|
bindkey -M vicmd 'v' edit-command-line
|
|
|
|
# allow ctrl-p, ctrl-n for navigate history (standard behaviour)
|
|
bindkey '^P' up-history
|
|
bindkey '^N' down-history
|
|
|
|
# allow ctrl-h, ctrl-w, ctrl-? for char and word deletion (standard behaviour)
|
|
bindkey '^?' backward-delete-char
|
|
bindkey '^h' backward-delete-char
|
|
bindkey '^w' backward-kill-word
|
|
|
|
# if mode indicator wasn't setup by theme, define default
|
|
if [[ "$MODE_INDICATOR" == "" ]]; then
|
|
MODE_INDICATOR="%{$fg_bold[red]%}<%{$fg[red]%}<<%{$reset_color%}"
|
|
fi
|
|
|
|
function vi_mode_prompt_info() {
|
|
echo "${${KEYMAP/vicmd/$MODE_INDICATOR}/(main|viins)/}"
|
|
}
|
|
|
|
# define right prompt, if it wasn't defined by a theme
|
|
if [[ "$RPS1" == "" && "$RPROMPT" == "" ]]; then
|
|
RPS1='$(vi_mode_prompt_info)'
|
|
fi
|