51 lines
1.8 KiB
Fish
51 lines
1.8 KiB
Fish
#
|
|
# Vi Mode
|
|
#
|
|
|
|
function __sf_section_vi_mode -d "Display vi mode status"
|
|
# ------------------------------------------------------------------------------
|
|
# Configuration
|
|
# ------------------------------------------------------------------------------
|
|
|
|
__sf_util_set_default SPACEFISH_VI_MODE_SHOW true
|
|
__sf_util_set_default SPACEFISH_VI_MODE_PREFIX " "
|
|
__sf_util_set_default SPACEFISH_VI_MODE_SUFFIX $SPACEFISH_PROMPT_DEFAULT_SUFFIX
|
|
__sf_util_set_default SPACEFISH_VI_MODE_INSERT [I]
|
|
__sf_util_set_default SPACEFISH_VI_MODE_NORMAL [N]
|
|
__sf_util_set_default SPACEFISH_VI_MODE_VISUAL [V]
|
|
__sf_util_set_default SPACEFISH_VI_MODE_REPLACE_ONE [R]
|
|
__sf_util_set_default SPACEFISH_VI_MODE_COLOR white
|
|
|
|
# ------------------------------------------------------------------------------
|
|
# Section
|
|
# ------------------------------------------------------------------------------
|
|
|
|
[ $SPACEFISH_VI_MODE_SHOW = false ]; and return
|
|
|
|
# Ensure fish_vi_key_bindings or fish_hybrid_key_bindings are used
|
|
# Here we are trying to be compatible with default fish_mode_prompt implementation,
|
|
# wich handle both "fish_vi_key_bindings" and "fish_hybrid_key_bindings"
|
|
[ "$fish_key_bindings" = "fish_vi_key_bindings" ]; or [ "$fish_key_bindings" = "fish_hybrid_key_bindings" ]; or return
|
|
|
|
# Use `set -l` to define local variables to avoid populating
|
|
# the global namespace
|
|
set -l vi_mode_symbol
|
|
|
|
# Check current mode and set vi_mode_symbol based on it
|
|
switch $fish_bind_mode
|
|
case default
|
|
set vi_mode_symbol $SPACEFISH_VI_MODE_NORMAL
|
|
case insert
|
|
set vi_mode_symbol $SPACEFISH_VI_MODE_INSERT
|
|
case replace_one
|
|
set vi_mode_symbol $SPACEFISH_VI_MODE_REPLACE_ONE
|
|
case visual
|
|
set vi_mode_symbol $SPACEFISH_VI_MODE_VISUAL
|
|
end
|
|
|
|
__sf_lib_section \
|
|
$SPACEFISH_VI_MODE_COLOR \
|
|
$SPACEFISH_VI_MODE_PREFIX \
|
|
$vi_mode_symbol \
|
|
$SPACEFISH_VI_MODE_SUFFIX
|
|
end
|