More clear way of setting cursor shape

This commit is contained in:
Maxim Gonchar 2014-01-20 16:47:13 +04:00
parent 44c6fa68cf
commit 3591900070
3 changed files with 52 additions and 53 deletions

View file

@ -0,0 +1,11 @@
function __fish_cursor_konsole -d 'Set cursor (konsole)'
set -l shape $argv[1]
switch "$shape"
case block
echo -en '\e]50;CursorShape=0\x7'
case underscore
echo -en '\e]50;CursorShape=2\x7'
case line
echo -en '\e]50;CursorShape=1\x7'
end
end

View file

@ -0,0 +1,16 @@
function __fish_cursor_xterm -d 'Set cursor (xterm)'
set -l shape $argv[1]
switch "$shape"
case block
set shape 2
case underscore
set shape 4
case line
set shape 6
end
if contains blink $argv
set shape (expr $shape - 1)
end
echo -en "\e[$shape q"
end

View file

@ -1,59 +1,31 @@
function fish_vi_cursor -d 'Set cursor shape for different vi modes' function fish_vi_cursor -d 'Set cursor shape for different vi modes'
set -l terminal $argv[1] set -l terminal $argv[1]
set -q terminal[1]; or set terminal auto set -q terminal[1]; or set terminal auto
switch "$terminal" set fcn
case auto switch "$terminal"
if set -q KONSOLE_PROFILE_NAME case auto
set terminal konsole if set -q KONSOLE_PROFILE_NAME
else if set -q XTERM_LOCALE set fcn __fish_cursor_konsole
set terminal xterm else if set -q XTERM_LOCALE
else set fcn __fish_cursor_xterm
#echo Not found else
return 1 return 1
end
end end
end
set -l command set -g fish_cursor_insert line
set -l start set -g fish_cursor_default block
set -l end set -g fish_cursor_unknown block blink
set -l shape_block
set -l shape_line
set -l shape_underline
switch "$terminal"
case konsole iterm
set command echo -en
set start "\e]50;"
set end "\x7"
set shape_block 'CursorShape=0'
set shape_line 'CursorShape=1'
set shape_underline 'CursorShape=2'
case xterm
set command echo -en
set start '\e['
set end ' q'
set shape_block '2'
set shape_underline '4'
set shape_line '6'
end
if not set -q command[1]
#echo not found
return 1
end
set -g fish_cursor_insert $start$shape_line$end
set -g fish_cursor_default $start$shape_block$end
set -g fish_cursor_other $start$shape_block$end
echo " echo "
function fish_vi_cursor_handle --on-variable fish_bind_mode function fish_cursor_vi_handle --on-variable fish_bind_mode
switch \$fish_bind_mode set -l varname fish_cursor_\$fish_bind_mode
case insert if not set -q \$varname
$command \$fish_cursor_insert set varname fish_cursor_unknown
case default end
$command \$fish_cursor_default #echo \$varname \$\$varname
case '*' $fcn \$\$varname
$command \$fish_cursor_other end
end " | source
end
" | source
end end