diff options
Diffstat (limited to 'share/functions/fish_vi_cursor.fish')
-rw-r--r-- | share/functions/fish_vi_cursor.fish | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/share/functions/fish_vi_cursor.fish b/share/functions/fish_vi_cursor.fish new file mode 100644 index 00000000..b7a75d9c --- /dev/null +++ b/share/functions/fish_vi_cursor.fish @@ -0,0 +1,43 @@ +function fish_vi_cursor -d 'Set cursor shape for different vi modes' + set -l terminal $argv[1] + set -q terminal[1]; or set terminal auto + set -l uses_echo + + set fcn + switch "$terminal" + case auto + if set -q KONSOLE_PROFILE_NAME + set fcn __fish_cursor_konsole + set uses_echo 1 + else if set -q XTERM_LOCALE + set fcn __fish_cursor_xterm + set uses_echo 1 + else + return 1 + end + end + + set -l tmux_prefix + set -l tmux_postfix + if begin; set -q TMUX; and set -q uses_echo[1]; end + set tmux_prefix echo -ne "'\ePtmux;\e'" + set tmux_postfix echo -ne "'\e\\\\'" + end + + set -q fish_cursor_unknown + or set -g fish_cursor_unknown block blink + + echo " + function fish_vi_cursor_handle --on-variable fish_bind_mode + set -l varname fish_cursor_\$fish_bind_mode + if not set -q \$varname + set varname fish_cursor_unknown + end + #echo \$varname \$\$varname + $tmux_prefix + $fcn \$\$varname + $tmux_postfix + end + " | source +end + |