82 lines
2.6 KiB
Fish
82 lines
2.6 KiB
Fish
# right prompt for agnoster theme
|
|
# shows vim mode status
|
|
|
|
# ===========================
|
|
# Color setting
|
|
|
|
# You can set these variables in config.fish like:
|
|
# set -g color_dir_bg red
|
|
# If not set, default color from agnoster will be used.
|
|
# ===========================
|
|
set -q color_vi_mode_indicator; or set color_vi_mode_indicator black
|
|
set -q color_vi_mode_normal; or set color_vi_mode_normal green
|
|
set -q color_vi_mode_insert; or set color_vi_mode_insert blue
|
|
set -q color_vi_mode_visual; or set color_vi_mode_visual red
|
|
|
|
|
|
# ===========================
|
|
# Cursor setting
|
|
|
|
# You can set these variables in config.fish like:
|
|
# set -g cursor_vi_mode_insert bar_blinking
|
|
# ===========================
|
|
set -q cursor_vi_mode_normal; or set cursor_vi_mode_normal box_steady
|
|
set -q cursor_vi_mode_insert; or set cursor_vi_mode_insert bar_steady
|
|
set -q cursor_vi_mode_visual; or set cursor_vi_mode_visual box_steady
|
|
|
|
|
|
function fish_cursor_name_to_code -a cursor_name -d "Translate cursor name to a cursor code"
|
|
# these values taken from
|
|
# https://github.com/gnachman/iTerm2/blob/master/sources/VT100Terminal.m#L1646
|
|
# Beginning with the statement "case VT100CSI_DECSCUSR:"
|
|
if [ $cursor_name = "box_blinking" ]
|
|
echo 1
|
|
else if [ $cursor_name = "box_steady" ]
|
|
echo 2
|
|
else if [ $cursor_name = "underline_blinking" ]
|
|
echo 3
|
|
else if [ $cursor_name = "underline_steady" ]
|
|
echo 4
|
|
else if [ $cursor_name = "bar_blinking" ]
|
|
echo 5
|
|
else if [ $cursor_name = "bar_steady" ]
|
|
echo 6
|
|
else
|
|
echo 2
|
|
end
|
|
end
|
|
|
|
function prompt_vi_mode -d 'vi mode status indicator'
|
|
set -l right_segment_separator \uE0B2
|
|
switch $fish_bind_mode
|
|
case default
|
|
set -l mode (fish_cursor_name_to_code $cursor_vi_mode_normal)
|
|
echo -e "\e[\x3$mode q"
|
|
set_color $color_vi_mode_normal
|
|
echo "$right_segment_separator"
|
|
set_color -b $color_vi_mode_normal $color_vi_mode_indicator
|
|
echo " N "
|
|
case insert
|
|
set -l mode (fish_cursor_name_to_code $cursor_vi_mode_insert)
|
|
echo -e "\e[\x3$mode q"
|
|
set_color $color_vi_mode_insert
|
|
echo "$right_segment_separator"
|
|
set_color -b $color_vi_mode_insert $color_vi_mode_indicator
|
|
echo " I "
|
|
case visual
|
|
set -l mode (fish_cursor_name_to_code $cursor_vi_mode_visual)
|
|
echo -e "\e[\x3$mode q"
|
|
set_color $color_vi_mode_visual
|
|
echo "$right_segment_separator"
|
|
set_color -b $color_vi_mode_visual $color_vi_mode_indicator
|
|
echo " V "
|
|
end
|
|
end
|
|
|
|
function fish_right_prompt -d 'Prints right prompt'
|
|
if test "$fish_key_bindings" = "fish_vi_key_bindings"
|
|
prompt_vi_mode
|
|
set_color normal
|
|
end
|
|
end
|