diff --git a/.zsh/Completion/_vim b/.zsh/Completion/_vim new file mode 100644 index 0000000..eedc3fe --- /dev/null +++ b/.zsh/Completion/_vim @@ -0,0 +1,90 @@ +#compdef vim exim gvim gex gview rvim rview rgvim rgview evim eview vimdiff gvimdiff + +(( $+functions[_vim_files] )) || +_vim_files () { + case $PREFIX in + (+*) _files -P './' $* && return 0 ;; + (*) _files $* ;; + esac + case $PREFIX in + (+) _message -e 'start at a given line (default: end of file)' ;; + (+<1->) _message -e 'line number' ;; + esac +} + +local arguments +local state +local list + +arguments=( + '( -e -s -d -y)-v[vi mode]' + '(-v -d -y)-e[ex mode]' + '(-v -e -s -y)-d[diff mode]' + '(-v -e -s -d )-y[easy mode]' + '-R[readonly mode]' + '-Z[restricted mode]' + '-m[modifications (writing files) not allowed]' + '-M[modifications in text not allowed]' + '-b[binary mode]' + '-l[lisp mode]' + '-C[make vim compatible with vi]' + '-N[do not force compatibility with vi]' + '(--nofork -f)'{--nofork,-f}'[do not detach the GUI version from the shell]' + '-V-[verbosity level]::verbosity:((0\:"do not display any messages" + 1\:"display when viminfo file is read or written" + 2\:"display sourced files" + 5\:"display every searched tag-file" + 8\:"display files that trigger autocommands" + 9\:"display every triggered autocommand (default)" + 12\:"display every executed function" + 13\:"report every thrown, caught, finished, or discarded exception" + 14\:"display anything pending in a \:finally clause" + 15\:"display every executed ex-command"))' + '-D[debugging mode]' + '-n[no swap file (memory only)]' + {-r,-L}'[list swap files and exit or recover from a swap file]::swap file:_vim_files -g \*.sw\?' + '( -H -F)-A[start in Arabic mode]' + '(-A -F)-H[start in Hebrew mode]' + '(-A -H )-H[start in Farsi mode]' + '-T[set terminal type]:::_terminals' + '-u[use given vimrc file instead of default .vimrc]::rc file:_files' + '-U[use given gvimrc file instead of default .gvimrc]::rc file:_files' + '--noplugin[do not load plugin scripts]' + '-p-[number of tabs to open (default: one for each file)]::tab count: ' + '-o-[number of windows to open (default: one for each file)]::window count: ' + '-O-[number of windows to vertically split open (default is one for each file)]::window count: ' + '*--cmd[execute given command before loading any RC files]:command: ' + '-c[executed given command after loading the first file]:command: ' + '-S[source a session file after loading the first file]:session file:_files' + '-s[read normal-mode commands from script file]:script file:_files' + '-w[append all typed commands to given file]:output file:_files' + '-W[write all typed commands to given file]:output file:_files' + '-x[edit encrypted files]' + '-X[do not connect to X server]' + '--remote[edit given files in a vim server if possible]:*:file:_vim_files' + '--remote-silent[as --remote but without complaining if not possible]:*:file:_vim_files' + '--remote-wait[as --remote but wait for files to have been edited]:*:file:_vim_files' + '--remote-wait-silent[as --remote-wait but without complaining if not possible]:*:file:_vim_files' + '--remote-send[send given keys to vim server if possible]:keys: ' + '--remote-tab[as --remote but open tab page for each file]:*:file:_vim_files' + '--remote-expr[evaluate given expression in a vim server and print result]:expression: ' + '(- *)--serverlist[list available vim servers and exit]' + '--servername[name of vim server to send to or name of server to become]:server name: ' + '-i[use given viminfo file instead of default .viminfo]:viminfo file:_files' + '(- *)'{-h,--help}'[print help and exit]' + '(- *)--version[print version information and exit]' + '*:file:_vim_files' + '-t[tag used by ctag]:ctag:->ctag' +) + +_arguments -S $arguments + +case $state in + (ctag) + [ -f ./tags ] || return 1 + list=(${(f)"$(awk "/^$opt_args[-t]/ { print \$1 }" tags )"}) + _values 'ctag' $list && ret=0 + ;; +esac + +