diff options
Diffstat (limited to '.config/fisher/github.com/matchai/spacefish/functions/__sf_section_vi_mode.fish')
-rw-r--r-- | .config/fisher/github.com/matchai/spacefish/functions/__sf_section_vi_mode.fish | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/.config/fisher/github.com/matchai/spacefish/functions/__sf_section_vi_mode.fish b/.config/fisher/github.com/matchai/spacefish/functions/__sf_section_vi_mode.fish new file mode 100644 index 00000000..a22292ac --- /dev/null +++ b/.config/fisher/github.com/matchai/spacefish/functions/__sf_section_vi_mode.fish @@ -0,0 +1,51 @@ +# +# 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 |