diff --git a/share/functions/__fish_complete_vi.fish b/share/functions/__fish_complete_vi.fish index f2f253dab..8a07ffd2e 100644 --- a/share/functions/__fish_complete_vi.fish +++ b/share/functions/__fish_complete_vi.fish @@ -3,8 +3,8 @@ function __fish_complete_vi -d "Compleletions for vi and its aliases" --argument-names cmd set -l is_vim if type $cmd > /dev/null - eval command $cmd --version >/dev/null ^/dev/null; and set -l is_vim vim - end + eval command $cmd --version >/dev/null ^/dev/null; and set -l is_vim vim + end # vim set -l cmds -c $cmd @@ -24,11 +24,11 @@ function __fish_complete_vi -d "Compleletions for vi and its aliases" --argument complete $cmds -s o -r --description 'Open stacked windows for each file' complete $cmds -s O -r --description 'Open side by side windows for each file' complete $cmds -s p -r --description 'Open tab pages for each file' - complete $cmds -s q -r --description 'Start in quickFix mode' + complete $cmds -s q -r --description 'Start in quickFix mode' complete $cmds -s r -r --description 'Use swap files for recovery' complete $cmds -s s -r --description 'Source and execute script file' complete $cmds -s t -r --description 'Set the cursor to tag' - complete $cmds -s T -r --description 'Terminal name' + complete $cmds -s T -r --description 'Terminal name' complete $cmds -s u -r --description 'Use alternative vimrc' complete $cmds -s U -r --description 'Use alternative vimrc in GUI mode' complete $cmds -s w -r --description 'Record all typed characters' diff --git a/share/functions/__fish_cursor_konsole.fish b/share/functions/__fish_cursor_konsole.fish new file mode 100644 index 000000000..acdcb0de6 --- /dev/null +++ b/share/functions/__fish_cursor_konsole.fish @@ -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 diff --git a/share/functions/__fish_cursor_xterm.fish b/share/functions/__fish_cursor_xterm.fish new file mode 100644 index 000000000..a82be021f --- /dev/null +++ b/share/functions/__fish_cursor_xterm.fish @@ -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 diff --git a/share/functions/fish_default_key_bindings.fish b/share/functions/fish_default_key_bindings.fish index f3ac2e75f..ffb4371f5 100644 --- a/share/functions/fish_default_key_bindings.fish +++ b/share/functions/fish_default_key_bindings.fish @@ -1,9 +1,9 @@ function fish_default_key_bindings -d "Default (Emacs-like) key bindings for fish" -a mode - if not set -q mode[1] - # Clear earlier bindings, if any - bind --erase --all - end + if not set -q mode[1] + # Clear earlier bindings, if any + bind --erase --all + end # This is the default binding, i.e. the one used if no other binding matches bind $argv "" self-insert diff --git a/share/functions/fish_vi_cursor.fish b/share/functions/fish_vi_cursor.fish index e3dae47a7..f8d9ccd1f 100644 --- a/share/functions/fish_vi_cursor.fish +++ b/share/functions/fish_vi_cursor.fish @@ -2,58 +2,30 @@ 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 fcn switch "$terminal" case auto if set -q KONSOLE_PROFILE_NAME - set terminal konsole + set fcn __fish_cursor_konsole else if set -q XTERM_LOCALE - set terminal xterm + set fcn __fish_cursor_xterm else - #echo Not found return 1 - end + end end - set -l command - set -l start - set -l end - 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 + set -g fish_cursor_insert line + set -g fish_cursor_default block + set -g fish_cursor_unknown block blink echo " - function fish_vi_cursor_handle --on-variable fish_bind_mode - switch \$fish_bind_mode - case insert - $command \$fish_cursor_insert - case default - $command \$fish_cursor_default - case '*' - $command \$fish_cursor_other - end + function fish_cursor_vi_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 - " | source + #echo \$varname \$\$varname + $fcn \$\$varname + end + " | source end