fix(vi-mode): hide cursor-change logic behind VI_MODE_SET_CURSOR setting

Fixes #9570
This commit is contained in:
Marc Cornellà 2021-01-04 16:41:59 +01:00
parent 94ce46d48b
commit 79980b00fb
2 changed files with 17 additions and 2 deletions

View file

@ -22,6 +22,13 @@ plugins=(... vi-mode)
The default value is unset, unless `vi_mode_prompt_info` is used, in which case it'll
automatically be set to `true`.
- `VI_MODE_SET_CURSOR`: controls whether the cursor style is changed when switching
to a different input mode. Set it to `true` to enable it (default: unset):
```zsh
VI_MODE_SET_CURSOR=true
```
- `MODE_INDICATOR`: controls the string displayed when the shell is in normal mode.
See [Mode indicator](#mode-indicator) for details.

View file

@ -4,13 +4,21 @@
# This is especially true if the prompt does things like checking git status.
#
# Set to "true" to force the prompt to reset on each mode change.
# Set to "false" to force the prompt *not* to reset on each mode change.
# Unset or set to any other value to do the opposite.
#
# (The default is not to reset, unless we're showing the mode in RPS1).
# The default is not to reset, unless we're showing the mode in RPS1.
typeset -g VI_MODE_RESET_PROMPT_ON_MODE_CHANGE
# Control whether to change the cursor style on mode change.
#
# Set to "true" to change the cursor on each mode change.
# Unset or set to any other value to do the opposite.
typeset -g VI_MODE_SET_CURSOR
typeset -g VI_KEYMAP=main
function _vi-mode-set-cursor-shape-for-keymap() {
[[ "$VI_MODE_SET_CURSOR" = true ]] || return
# https://vt100.net/docs/vt510-rm/DECSCUSR
local _shape=0
case "${1:-${VI_KEYMAP:-main}}" in