From 6f92781992bc1419944ea8e40d63b9c2ab02fa9f Mon Sep 17 00:00:00 2001 From: Fabian Homborg Date: Wed, 23 Sep 2015 12:59:05 +0200 Subject: Refactor *vi* completions, add nvim wrapper This assumes `vim` is always vim (or close enough, nvim should also work), while `vi` could be either. Fixes #2416 --- share/completions/gvim.fish | 2 +- share/completions/gvimdiff.fish | 4 +- share/completions/nvim.fish | 1 + share/completions/vi.fish | 26 +++++++- share/completions/vim.fish | 72 ++++++++++++++++++++- share/completions/vimdiff.fish | 4 +- share/functions/__fish_complete_vi.fish | 109 -------------------------------- 7 files changed, 98 insertions(+), 120 deletions(-) create mode 100644 share/completions/nvim.fish delete mode 100644 share/functions/__fish_complete_vi.fish diff --git a/share/completions/gvim.fish b/share/completions/gvim.fish index 3fddde14..2601ce90 100644 --- a/share/completions/gvim.fish +++ b/share/completions/gvim.fish @@ -1,2 +1,2 @@ -__fish_complete_vi gvim +complete -c gvim -w vim diff --git a/share/completions/gvimdiff.fish b/share/completions/gvimdiff.fish index b998cc9c..3db0d84b 100644 --- a/share/completions/gvimdiff.fish +++ b/share/completions/gvimdiff.fish @@ -1,3 +1 @@ -# completion for gvimdiff - -__fish_complete_vi gvimdiff +complete -c gvimdiff -w vim diff --git a/share/completions/nvim.fish b/share/completions/nvim.fish new file mode 100644 index 00000000..fcb054f6 --- /dev/null +++ b/share/completions/nvim.fish @@ -0,0 +1 @@ +complete -c nvim -w vim diff --git a/share/completions/vi.fish b/share/completions/vi.fish index ab346ac0..2192f392 100644 --- a/share/completions/vi.fish +++ b/share/completions/vi.fish @@ -1,3 +1,25 @@ -# completion for vi +# plain vi (as bundled with SunOS 5.8) +# todo: +# -wn : Set the default window size to n +# +command : same as -c command + + +# Check if vi is really vim +if vi --version > /dev/null ^ /dev/null + complete -c vi -w vim +else + complete vi -s s --description 'Suppress all interactive user feedback' + complete vi -s C --description 'Encrypt/decrypt text' + complete vi -s l --description 'Set up for editing LISP programs' + complete vi -s L --description 'List saved file names after crash' + complete vi -s R --description 'Read-only mode' + complete vi -s S --description 'Use linear search for tags if tag file not sorted' + complete vi -s v --description 'Start in display editing state' + complete vi -s V --description 'Verbose mode' + complete vi -s x --description 'Encrypt/decrypt text' + + complete vi -r -s r --description 'Recover file after crash' + complete vi -r -s t --description 'Edit the file containing a tag' + complete vi -r -c t --description 'Begin editing by executing the specified editor command' +end -__fish_complete_vi vi diff --git a/share/completions/vim.fish b/share/completions/vim.fish index 46970706..076ff998 100644 --- a/share/completions/vim.fish +++ b/share/completions/vim.fish @@ -1,3 +1,71 @@ -# completion for vim +# these don't work +#complete vim -a - --description 'The file to edit is read from stdin. Commands are read from stderr, which should be a tty' -__fish_complete_vi vim +# todo +# +[num] : Position the cursor on line number +# +/{pat} : Position the cursor on the first occurence of {pat} +# +{command} : Execute Ex command after the first file has been read +complete vim -s c -r --description 'Execute Ex command after the first file has been read' +complete vim -s S -r --description 'Source file after the first file has been read' +complete vim -l cmd -r --description 'Execute Ex command before loading any vimrc' +complete vim -s d -r --description 'Use device as terminal (Amiga only)' +complete vim -s i -r --description 'Set the viminfo file location' +complete vim -s o -r --description 'Open stacked windows for each file' +complete vim -s O -r --description 'Open side by side windows for each file' +complete vim -s p -r --description 'Open tab pages for each file' +complete vim -s q -r --description 'Start in quickFix mode' +complete vim -s r -r --description 'Use swap files for recovery' +complete vim -s s -r --description 'Source and execute script file' +complete vim -s t -r --description 'Set the cursor to tag' +complete vim -s T -r --description 'Terminal name' +complete vim -s u -r --description 'Use alternative vimrc' +complete vim -s U -r --description 'Use alternative vimrc in GUI mode' +complete vim -s w -r --description 'Record all typed characters' +complete vim -s W -r --description 'Record all typed characters (overwrite file)' + +complete vim -s A --description 'Start in Arabic mode' +complete vim -s b --description 'Start in binary mode' +complete vim -s C --description 'Behave mostly like vi' +complete vim -s d --description 'Start in diff mode' +complete vim -s D --description 'Debugging mode' +complete vim -s e --description 'Start in Ex mode' +complete vim -s E --description 'Start in improved Ex mode' +complete vim -s f --description 'Start in foreground mode' +complete vim -s F --description 'Start in Farsi mode' +complete vim -s g --description 'Start in GUI mode' +complete vim -s h --description 'Print help message and exit' +complete vim -s H --description 'Start in Hebrew mode' +complete vim -s L --description 'List swap files' +complete vim -s l --description 'Start in lisp mode' +complete vim -s m --description 'Disable file modification' +complete vim -s M --description 'Disallow file modification' +complete vim -s N --description 'Reset compatibility mode' +complete vim -s n --description 'Don\'t use swap files' +complete vim -s R --description 'Read only mode' +complete vim -s r --description 'List swap files' +complete vim -s s --description 'Start in silent mode' +complete vim -s V --description 'Start in verbose mode' +complete vim -s v --description 'Start in vi mode' +complete vim -s x --description 'Use encryption when writing files' +complete vim -s X --description 'Don\'t connect to X server' +complete vim -s y --description 'Start in easy mode' +complete vim -s Z --description 'Start in restricted mode' + +complete vim -o nb --description 'Become an editor server for NetBeans' + +complete vim -l no-fork --description 'Start in foreground mode' +complete vim -l echo-wid --description 'Echo the Window ID on stdout (GTK GUI only)' +complete vim -l help --description 'Print help message and exit' +complete vim -l literal --description 'Do not expand wildcards' +complete vim -l noplugin --description 'Skip loading plugins' +complete vim -l remote --description 'Edit files on Vim server' +complete vim -l remote-expr --description 'Evaluate expr on Vim server' +complete vim -l remote-send --description 'Send keys to Vim server' +complete vim -l remote-silent --description 'Edit files on Vim server' +complete vim -l remote-wait --description 'Edit files on Vim server' +complete vim -l remote-wait-silent --description 'Edit files on Vim server' +complete vim -l serverlist --description 'List all Vim servers that can be found' +complete vim -l servername --description 'Set server name' +complete vim -l version --description 'Print version information and exit' + +complete vim -l socketid -r --description 'Run gvim in another window (GTK GUI only)' diff --git a/share/completions/vimdiff.fish b/share/completions/vimdiff.fish index bf67fde3..2152fe09 100644 --- a/share/completions/vimdiff.fish +++ b/share/completions/vimdiff.fish @@ -1,3 +1 @@ -# completion for vimdiff - -__fish_complete_vi vimdiff +complete -c vimdiff -w vim diff --git a/share/functions/__fish_complete_vi.fish b/share/functions/__fish_complete_vi.fish deleted file mode 100644 index d64df284..00000000 --- a/share/functions/__fish_complete_vi.fish +++ /dev/null @@ -1,109 +0,0 @@ -#completion for vi/vim - -function __fish_complete_vi -d "Completions for vi and its aliases" --argument-names cmd - set -l is_vim - if type -q $cmd - eval command $cmd --version >/dev/null ^/dev/null; and set -l is_vim vim - end - - # vim - set -l cmds -c $cmd - if test -n "$is_vim" - # these don't work - #complete $cmds -a - --description 'The file to edit is read from stdin. Commands are read from stderr, which should be a tty' - - # todo - # +[num] : Position the cursor on line number - # +/{pat} : Position the cursor on the first occurence of {pat} - # +{command} : Execute Ex command after the first file has been read - complete $cmds -s c -r --description 'Execute Ex command after the first file has been read' - complete $cmds -s S -r --description 'Source file after the first file has been read' - complete $cmds -l cmd -r --description 'Execute Ex command before loading any vimrc' - complete $cmds -s d -r --description 'Use device as terminal (Amiga only)' - complete $cmds -s i -r --description 'Set the viminfo file location' - 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 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 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' - complete $cmds -s W -r --description 'Record all typed characters (overwrite file)' - - complete $cmds -s A --description 'Start in Arabic mode' - complete $cmds -s b --description 'Start in binary mode' - complete $cmds -s C --description 'Behave mostly like vi' - complete $cmds -s d --description 'Start in diff mode' - complete $cmds -s D --description 'Debugging mode' - complete $cmds -s e --description 'Start in Ex mode' - complete $cmds -s E --description 'Start in improved Ex mode' - complete $cmds -s f --description 'Start in foreground mode' - complete $cmds -s F --description 'Start in Farsi mode' - complete $cmds -s g --description 'Start in GUI mode' - complete $cmds -s h --description 'Print help message and exit' - complete $cmds -s H --description 'Start in Hebrew mode' - complete $cmds -s L --description 'List swap files' - complete $cmds -s l --description 'Start in lisp mode' - complete $cmds -s m --description 'Disable file modification' - complete $cmds -s M --description 'Disallow file modification' - complete $cmds -s N --description 'Reset compatibility mode' - complete $cmds -s n --description 'Don\'t use swap files' - complete $cmds -s R --description 'Read only mode' - complete $cmds -s r --description 'List swap files' - complete $cmds -s s --description 'Start in silent mode' - complete $cmds -s V --description 'Start in verbose mode' - complete $cmds -s v --description 'Start in vi mode' - complete $cmds -s x --description 'Use encryption when writing files' - complete $cmds -s X --description 'Don\'t connect to X server' - complete $cmds -s y --description 'Start in easy mode' - complete $cmds -s Z --description 'Start in restricted mode' - - complete $cmds -o nb --description 'Become an editor server for NetBeans' - - complete $cmds -l no-fork --description 'Start in foreground mode' - complete $cmds -l echo-wid --description 'Echo the Window ID on stdout (GTK GUI only)' - complete $cmds -l help --description 'Print help message and exit' - complete $cmds -l literal --description 'Do not expand wildcards' - complete $cmds -l noplugin --description 'Skip loading plugins' - complete $cmds -l remote --description 'Edit files on Vim server' - complete $cmds -l remote-expr --description 'Evaluate expr on Vim server' - complete $cmds -l remote-send --description 'Send keys to Vim server' - complete $cmds -l remote-silent --description 'Edit files on Vim server' - complete $cmds -l remote-wait --description 'Edit files on Vim server' - complete $cmds -l remote-wait-silent --description 'Edit files on Vim server' - complete $cmds -l serverlist --description 'List all Vim servers that can be found' - complete $cmds -l servername --description 'Set server name' - complete $cmds -l version --description 'Print version information and exit' - - complete $cmds -l socketid -r --description 'Run gvim in another window (GTK GUI only)' - - # plain vi (as bundled with SunOS 5.8) - else - - # todo: - # -wn : Set the default window size to n - # +command : same as -c command - - complete $cmds -s s --description 'Suppress all interactive user feedback' - complete $cmds -s C --description 'Encrypt/decrypt text' - complete $cmds -s l --description 'Set up for editing LISP programs' - complete $cmds -s L --description 'List saved file names after crash' - complete $cmds -s R --description 'Read-only mode' - complete $cmds -s S --description 'Use linear search for tags if tag file not sorted' - complete $cmds -s v --description 'Start in display editing state' - complete $cmds -s V --description 'Verbose mode' - complete $cmds -s x --description 'Encrypt/decrypt text' - - complete $cmds -r -s r --description 'Recover file after crash' - complete $cmds -r -s t --description 'Edit the file containing a tag' - complete $cmds -r -c t --description 'Begin editing by executing the specified editor command' - - end - -end - - -- cgit v1.2.3