blob: 8853fac30f3c9b87a13cec195f0fdb228d5e4fbf (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
|
#compdef vim gvim gex gview nvim rvim rview rgvim rgview evim eview vimdiff gvimdiff mvim
(( $+functions[_vim_files] )) ||
_vim_files () {
case $PREFIX in
(+*) _files -P './' $* && return 0 ;;
((scp|http(|s)|(|s)ftp):*) _urls ;;
(*) _files $* ;;
esac
case $PREFIX in
(+) _message -e 'start at a given line (default: end of file)' ;;
(+<1->) _message -e 'line number' ;;
esac
}
local curcontext="$curcontext" state line expl ret=1
typeset -A opt_args
local arguments
arguments=(
'( -e -E -s -d -y)-v[vi mode]'
'(-v -E -d -y)-e[ex mode]'
'(-v -e -d -y)-E[improved ex mode]'
'(-v -e -E -s -d )-y[easy mode]'
'-m[modifications (writing files) not allowed]'
'-M[modifications in text not allowed]'
'-b[binary mode]'
'-l[lisp mode]'
'-C[start in compatible mode]'
'-N[start in incompatible mode]'
'(--nofork -f)'{--nofork,-f}'[do not detach the GUI version from the shell]'
'-V-[verbosity level]::verbosity [10]:->verbosity'
'-D[debugging mode]'
'-n[no swap file (memory only)]'
'-nb[start as NetBean server]'
{-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 )-F[start in Farsi mode]'
'-T[set terminal type]:::_terminals'
'--not-a-term[skip warning for input/output not being a terminal]'
'--ttyfail[exit if input or output is not a terminal]'
'-u[use given vimrc file instead of default .vimrc]:config:->config'
"--noplugin[don't load plugin scripts]"
'-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: '
'-p-[number of tabs to open (default: one for each file)]::tab count: '
'(* -t)-q-[quickfix file]:*:file:_vim_files'
'*--cmd[execute given command before loading any RC files]:command: '
'-c[execute 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, overwriting existing 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-tab-silent[as --remote-silent but open tab page for each file]:*:file:_vim_files'
'--remote-tab-wait[as --remote-wait but open tab page for each file]:*:file:_vim_files'
'--remote-tab-wait-silent[as --remote-wait-silent but open tab page for each file]:*:file:_vim_files'
'--remote-expr[evaluate given expression in a vim server and print result]:expression: '
'--literal[do not expand wildcards in arguments (this is useless with ZSH)]'
'(- *)--serverlist[list available vim servers and exit]'
'--servername[name of vim server to send to or name of server to become]:server name:->server'
'--startuptime[write startup timing messages to given file]:log file:_files'
'--socketid[run GVIM in another window]'
'-i[use specified viminfo file]:viminfo file [~/.viminfo]:_files'
'(- *)'{-h,--help}'[print help and exit]'
'(- *)--version[print version information and exit]'
'(* -q)-t[edit file where tag is defined]:tag:_complete_tag'
'(-t -q)*:file:_vim_files'
'--clean[start with defaults in non-compatible mode]'
)
[[ $service != *g* ]] && arguments+='-g[start with GUI]'
[[ $service != r* ]] && arguments+='-Z[restricted mode]'
[[ $service != *diff ]] && arguments+='(-v -e -E -s -y)-d[diff mode]'
[[ $service != *view ]] && arguments+='-R[readonly mode]'
[[ $service = *g* ]] || (( ${words[(I)-g]} )) && arguments+=(
'-font:font:_xft_fonts'
'-geometry:geometry:_x_geometry'
'(-rv -reverse)'{-rv,-reverse}'[use reverse video]'
'-display:display:_x_display'
'--role[set unique role to identify main window]:role'
'--socketid[open vim inside another GTK widget]:xid'
'--echo-wid[echo window ID on stdout]'
'-U[use given gvimrc file instead of default .gvimrc]:gui config:->configgui'
)
_arguments -C -S $arguments && ret=0
if [[ "$state" = server ]]; then
local -a servers
servers=( ${(f)"$(_call_program servers $words[1] --serverlist 2>/dev/null)"} )
_wanted servers expl server compadd -M 'm:{a-z}={A-Z}' -a servers && ret=0
elif [[ $state = verbosity ]]; then
_tags numbers files
while _tags; do
_requested numbers && _describe -V 'verbosity [10]' "(
0:don\'t' 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'
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'
)" && ret=0
if _requested files expl 'file for verbose output'; then
compset -P '[0-9]#'
_files "$expl[@]" && ret=0
fi
(( ret )) || break
done
elif [[ "$state" = config* ]]; then
_tags special files
local names=(
"NONE:'skip initialization from files and environment variables'"
"NORC:'same as NONE, but load plugins'"
)
# gvim only supports -U NONE to skip GUI initialization.
[[ $state != configgui || $service != *g* ]] && names+=(
"DEFAULTS:'same as NONE, but loads defaults.vim'"
)
while _tags; do
_requested special && _describe -V 'special' "(${(F)names})" && ret=0
if _requested files expl 'rc file'; then
_files "$expl[@]" && ret=0
fi
(( ret )) || break
done
fi
return ret
|