From 25082b65287dff0c0f0023677b068ac231fdb008 Mon Sep 17 00:00:00 2001 From: axel Date: Mon, 5 Feb 2007 01:18:09 +1000 Subject: Update vi/vim completions. Add __fish_complete_text function that completes using any text file, and __fish_filter_mime that filters a file list based on mimetype. This update was written by Velko Hristov with some suggestions and updates by me. darcs-hash:20070204151809-ac50b-b7f3b44ac528f9e994bf0f842ee2e008866fb620.gz --- share/completions/vi.fish | 3 + share/completions/vim.fish | 76 +-------------------- share/functions/__fish_complete_vi.fish | 117 ++++++++++++++++++++++++++++++++ share/functions/__fish_filter_mime.fish | 23 +++++++ 4 files changed, 145 insertions(+), 74 deletions(-) create mode 100644 share/completions/vi.fish create mode 100644 share/functions/__fish_complete_vi.fish create mode 100644 share/functions/__fish_filter_mime.fish (limited to 'share') diff --git a/share/completions/vi.fish b/share/completions/vi.fish new file mode 100644 index 00000000..ab346ac0 --- /dev/null +++ b/share/completions/vi.fish @@ -0,0 +1,3 @@ +# completion for vi + +__fish_complete_vi vi diff --git a/share/completions/vim.fish b/share/completions/vim.fish index ab96d2da..46970706 100644 --- a/share/completions/vim.fish +++ b/share/completions/vim.fish @@ -1,75 +1,3 @@ -#completion for vim +# completion for 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 -c vim -n '__fish_test_arg "-"' -a - --description 'The file to edit is read from stdin. Commands are read from stderr, which should be a tty' - -complete -r -c vim -s c --description 'Execute Ex command after the first file has been read' -complete -r -c vim -s S --description 'Source file after the first file has been read' -complete -r -c vim -l cmd --description 'Execute Ex command before loading any vimrc' -complete -r -c vim -s d --description 'Use device as terminal (Amiga only)' -complete -r -c vim -s i --description 'Set the viminfo file location' -complete -r -c vim -s o --description 'Open stacked windows for each file' -complete -r -c vim -s O --description 'Open side by side windows for each file' -complete -r -c vim -s p --description 'Open tab pages for each file' -complete -r -c vim -s q --description 'Start in quickFix mode' -complete -r -c vim -s r --description 'Use swap files for recovery' -complete -r -c vim -s s --description 'Source and execute script file' -complete -r -c vim -s t --description 'Set the cursor to tag' -complete -r -c vim -s T --description 'Termninal name' -complete -r -c vim -s u --description 'Use alternative vimrc' -complete -r -c vim -s U --description 'Use alternative vimrc in GUI mode' -complete -r -c vim -s w --description 'Record all typed characters' -complete -r -c vim -s W --description 'Record all typed characters (overwrite file)' - -complete -c vim -s A --description 'Start in Arabic mode' -complete -c vim -s b --description 'Start in binary mode' -complete -c vim -s C --description 'Behave mostly like vi' -complete -c vim -s d --description 'Start in diff mode' -complete -c vim -s D --description 'Debugging mode' -complete -c vim -s e --description 'Start in Ex mode' -complete -c vim -s E --description 'Start in improved Ex mode' -complete -c vim -s f --description 'Start in foreground mode' -complete -c vim -s F --description 'Start in Farsi mode' -complete -c vim -s g --description 'Start in GUI mode' -complete -c vim -s h --description 'Print help message and exit' -complete -c vim -s H --description 'Start in Hebrew mode' -complete -c vim -s L --description 'List swap files' -complete -c vim -s l --description 'Start in lisp mode' -complete -c vim -s m --description 'Disable file modification' -complete -c vim -s M --description 'Disallow file modification' -complete -c vim -s N --description 'Reset compatibility mode' -complete -c vim -s n --description 'Don\'t use swap files' -complete -c vim -s R --description 'Read only mode' -complete -c vim -s r --description 'List swap files' -complete -c vim -s s --description 'Start in silent mode' -complete -c vim -s V --description 'Start in verbose mode' -complete -c vim -s v --description 'Start in vi mode' -complete -c vim -s x --description 'Use encription when writing files' -complete -c vim -s X --description 'Don\'t connect to X server' -complete -c vim -s y --description 'Start in easy mode' -complete -c vim -s Z --description 'Start in restricted mode' - -complete -c vim -o nb --description 'Become an editor server for NetBeans' - -complete -c vim -l no-fork --description 'Start in foreground mode' -complete -c vim -l echo-wid --description 'Echo the Window ID on stdout (GTK GUI only)' -complete -c vim -l help --description 'Print help message and exit' -complete -c vim -l literal --description 'Do not expand wildcards' -complete -c vim -l noplugin --description 'Skip loading plugins' -complete -c vim -l remote --description 'Edit files on Vim server' -complete -c vim -l remote-expr --description 'Evaluate expr on Vim server' -complete -c vim -l remote-send --description 'Send keys to Vim server' -complete -c vim -l remote-silent --description 'Edit files on Vim server' -complete -c vim -l remote-wait --description 'Edit files on Vim server' -complete -c vim -l remote-wait-silent --description 'Edit files on Vim server' -complete -c vim -l serverlist --description 'List all Vim servers that can be found' -complete -c vim -l servername --description 'Set server name' -complete -c vim -l version --description 'Print version information and exit' - -complete -r -c vim -l socketid --description 'Run gvim in another window (GTK GUI only)' +__fish_complete_vi vim diff --git a/share/functions/__fish_complete_vi.fish b/share/functions/__fish_complete_vi.fish new file mode 100644 index 00000000..c5fa20ff --- /dev/null +++ b/share/functions/__fish_complete_vi.fish @@ -0,0 +1,117 @@ +#completion for vi/vim + +function __fish_complete_vi -d "Compleletions for vi and its aliases" + + set -l is_vim + command vi --version >/dev/null ^/dev/null; and set is_vim vim + + set -l cmds -c $argv + + complete $cmds -x -a "(__fish_complete_text)" + + # vim + 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 gzip-compressed files + complete $cmds -x -a "(__fish_complete_suffix .gz)" + + 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 'Termninal 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 encription 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 'Readonly 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 + + diff --git a/share/functions/__fish_filter_mime.fish b/share/functions/__fish_filter_mime.fish new file mode 100644 index 00000000..aea1fa17 --- /dev/null +++ b/share/functions/__fish_filter_mime.fish @@ -0,0 +1,23 @@ + +# +# $argv[1] is a mimetype. The mimetype may contain wildcards. All +# following arguments are filenames. Filenames matching the mimetype +# are returned. +# + +function __fish_filter_mime -d "Select files with a specific mimetype" + + set -l mime_search $argv[1] + set -e argv[1] + + set -l mime (mimedb -f $argv) + set -l res + + for i in (seq (count $argv)) + switch $mime[$i] + case $mime_search + set res $res $argv[$i] + end + end + printf "%s\n" $res +end -- cgit v1.2.3