##// END OF EJS Templates
zsh: rewrite...
Brendan Cully -
r3537:060aefba default
parent child Browse files
Show More
This diff has been collapsed as it changes many lines, (1110 lines changed) Show them Hide them
@@ -13,499 +13,687 b''
13 #
13 #
14
14
15 local curcontext="$curcontext" state line
15 local curcontext="$curcontext" state line
16 typeset -A opt_args
16 local repos newFiles addedFiles commitMessage
17 local repos newFiles addedFiles includeExclude commitMessage
17 typeset -A _hg_cmd_globals
18 local ridx _hgroot
18
19 _hg() {
20 local cmd
21 integer i=2
22 _hg_cmd_globals=()
23
24 while (( i < $#words ))
25 do
26 case "$words[$i]" in
27 -R|--repository|--cwd|--config)
28 # pass along arguments to hg completer
29 _hg_cmd_globals+="$words[$i]"
30 _hg_cmd_globals+="$words[$i+1]"
31 (( i += 2 ))
32 continue
33 ;;
34 -R*)
35 _hg_cmd_globals+="$words[$i]"
36 (( i++ ))
37 continue
38 ;;
39 -*)
40 # skip option
41 (( i++ ))
42 continue
43 ;;
44 esac
45 if [[ -z "$cmd" ]]
46 then
47 cmd="$words[$i]"
48 words[$i]=()
49 (( CURRENT-- ))
50 fi
51 (( i++ ))
52 done
53
54 if [[ -z "$cmd" ]]
55 then
56 _arguments -s -w : $_hg_global_opts \
57 ':mercurial command:_hg_commands'
58 return
59 fi
60
61 # resolve abbreviations and aliases
62 if ! (( $+functions[_hg_cmd_${cmd}] ))
63 then
64 local cmdexp
65 (( $#_hg_cmd_list )) || _hg_get_commands
66
67 cmdexp=$_hg_cmd_list[(r)${cmd}*]
68 if [[ $cmdexp == $_hg_cmd_list[(R)${cmd}*] ]]
69 then
70 # might be nice to rewrite the command line with the expansion
71 cmd="$cmdexp"
72 fi
73 if [[ -n $_hg_alias_list[$cmd] ]]
74 then
75 cmd=$_hg_alias_list[$cmd]
76 fi
77 fi
78
79 if (( $+functions[_hg_cmd_${cmd}] ))
80 then
81 curcontext="${curcontext%:*:*}:hg-${cmd}:"
82 _hg_cmd_${cmd}
83 return
84 fi
85 }
19
86
20 # FIXME: why isn't opt_args available?
87 _hg_get_commands() {
21 [[ -d .hg ]] && _hgroot="$PWD"
88 typeset -ga _hg_cmd_list
22 ridx=$words[(i)-R]
89 typeset -gA _hg_alias_list
23 (( $ridx < $#words )) && _hgroot="${words[$ridx+1]}"
90 local hline cmd cmdalias
91 _call_program help hg --verbose help | while read -A hline
92 do
93 cmd="$hline[1]"
94 case $cmd in
95 *:)
96 cmd=${cmd%:}
97 _hg_cmd_list+=($cmd)
98 ;;
99 *,)
100 cmd=${cmd%,}
101 _hg_cmd_list+=($cmd)
102 integer i=2
103 while (( i <= $#hline ))
104 do
105 cmdalias=${hline[$i]%(:|,)}
106 _hg_cmd_list+=($cmdalias)
107 _hg_alias_list+=($cmdalias $cmd)
108 (( i++ ))
109 done
110 ;;
111 esac
112 done
113 }
114
115 _hg_commands() {
116 (( $#_hg_cmd_list )) || _hg_get_commands
117 _describe -t hg-commands 'Mercurial command' _hg_cmd_list
118 }
119
120 _hg_tags() {
121 typeset -a tags
122 local tag rev
123
124 _hg_cmd tags 2> /dev/null | while read tag rev
125 do
126 tags+=($tag)
127 done
128 (( $#tags )) && _describe -t hg-tags 'tags' tags
129 }
130
131 _hg_status() {
132 status_files=(${(ps:\0:)"$(_hg_cmd status -0n$1 .)"})
133 }
24
134
25 # hg dispatch (borrowed from _cvs)
135 _hg_unknown() {
26 (( $+functions[_hg_cmd] )) ||
136 typeset -a status_files
27 _hg_cmd () {
137 _hg_status u
28 _call_program hg hg -R "$_hgroot" "$@"
138 (( $#status_files )) && _describe -t hg-unknown-files 'unknown files' status_files
139 }
140
141 _hg_missing() {
142 typeset -a status_files
143 _hg_status d
144 (( $#status_files )) && _describe -t hg-missing-files 'missing files' status_files
145 }
146
147 _hg_addremove() {
148 _alternative "unknown files:unknown files:_hg_unknown" \
149 "missing files:missing files:_hg_missing"
150 }
151
152 _hg_paths() {
153 typeset -a paths pnames
154 _hg_cmd paths 2> /dev/null | while read -A pnames
155 do
156 paths+=($pnames[1])
157 done
158 (( $#paths )) && _describe -t hg-paths 'repository aliases' paths
159 }
160
161 _hg_remote() {
162 _alternative 'repository aliases:repository aliases:_hg_paths' \
163 'directory:directory:_files -/'
164 }
165
166 _hg_qseries() {
167 typeset -a patches
168 patches=($(_hg_cmd qseries))
169 (( $#patches )) && _describe -t hg-patches 'patches' patches
170 }
171
172 _hg_qapplied() {
173 typeset -a patches
174 patches=($(_hg_cmd qapplied))
175 (( $#patches )) && _describe -t hg-applied-patches 'applied patches' patches
176 }
177
178 _hg_qunapplied() {
179 typeset -a patches
180 patches=($(_hg_cmd qunapplied))
181 (( $#patches )) && _describe -t hg-unapplied-patches 'unapplied patches' patches
29 }
182 }
30
183
31 (( $+functions[_hg_state] )) ||
184 # Common options
32 _hg_state () {
185 _hg_global_opts=(
33 case "$state" in
186 '(--repository)-R+[repository root directory]:repository:_files -/'
34 (tags)
187 '(-R)--repository[repository root directory]:repository:_files -/'
35 compadd $(_hg_cmd tags 2> /dev/null |
188 '--cwd[change working directory]:new working directory:_files -/'
36 sed -e 's/[0-9]*:[a-f0-9]*$//; s/ *$//')
189 '(--noninteractive)-y[do not prompt, assume yes for any required answers]'
37 ;;
190 '(-y)--noninteractive[do not prompt, assume yes for any required answers]'
38 (qapplied)
191 '(--verbose)-v[enable additional output]'
39 compadd $(_hg_cmd qapplied)
192 '(-v)--verbose[enable additional output]'
40 ;;
193 '(--quiet)-q[suppress output]'
41 (qunapplied)
194 '(-q)--quiet[suppress output]'
42 compadd $(_hg_cmd qunapplied)
195 '(--help)-h[display help and exit]'
43 ;;
196 '(-h)--help[display help and exit]'
44 esac
197 '--debug[debug mode]'
198 '--debugger[start debugger]'
199 '--traceback[print traceback on exception]'
200 '--time[time how long the command takes]'
201 '--profile[profile]'
202 '--version[output version information and exit]'
203 )
204
205 _hg_pat_opts=(
206 '*-I+[include names matching the given patterns]:dir:_files -W $(_hg_cmd root) -/'
207 '*--include[include names matching the given patterns]:dir:_files -W $(_hg_cmd root) -/'
208 '*-X+[exclude names matching the given patterns]:dir:_files -W $(_hg_cmd root) -/'
209 '*--exclude[exclude names matching the given patterns]:dir:_files -W $(_hg_cmd root) -/')
210
211 _hg_diff_opts=(
212 '(--text)-a[treat all files as text]'
213 '(-a)--text[treat all files as text]'
214 '(--git)-g[use git extended diff format]'
215 '(-g)--git[use git extended diff format]'
216 "--nodates[don't include dates in diff headers]")
217
218 _hg_dryrun_opts=(
219 '(--dry-run)-n[do not perform actions, just print output]'
220 '(-n)--dry-run[do not perform actions, just print output]')
221
222 _hg_style_opts=(
223 '--style[display using template map file]:'
224 '--template[display with template]:')
225
226 _hg_commit_opts=(
227 '(-m --message -l --logfile --edit)-e[edit commit message]'
228 '(-m --message -l --logfile -e)--edit[edit commit message]'
229 '(-e --edit -l --logfile --message)-m+[use <text> as commit message]:message:'
230 '(-e --edit -l --logfile -m)--message[use <text> as commit message]:message:'
231 '(-e --edit -m --message --logfile)-l+[read the commit message from <file>]:log file:_files'
232 '(-e --edit -m --message -l)--logfile[read the commit message from <file>]:log file:_files')
233
234 _hg_remote_opts=(
235 '(--ssh)-e+[specify ssh command to use]:'
236 '(-e)--ssh[specify ssh command to use]:'
237 '--remotecmd[specify hg command to run on the remote side]:')
238
239 _hg_cmd() {
240 _call_program hg hg "$_hg_cmd_globals[@]" "$@"
241 }
242
243 _hg_cmd_add() {
244 _arguments -s -w : $_hg_global_opts $_hg_pat_opts $_hg_dryrun_opts \
245 '*:unknown files:_hg_unknown'
246 }
247
248 _hg_cmd_addremove() {
249 _arguments -s -w : $_hg_global_opts $_hg_pat_opts $_hg_dryrun_opts \
250 '(--similarity)-s[guess renamed files by similarity (0<=s<=100)]:' \
251 '(-s)--similarity[guess renamed files by similarity (0<=s<=100)]:' \
252 '*:unknown or missing files:_hg_addremove'
253 }
254
255 _hg_cmd_annotate() {
256 _arguments -s -w : $_hg_global_opts $_hg_pat_opts \
257 '(--rev)-r+[annotate the specified revision]:revision:_hg_tags' \
258 '(-r)--rev[annotate the specified revision]:revision:_hg_tags' \
259 '(--follow)-f[follow file copies and renames]' \
260 '(-f)--follow[follow file copies and renames]' \
261 '(--text)-a[treat all files as text]' \
262 '(-a)--text[treat all files as text]' \
263 '(--user)-u[list the author]' \
264 '(-u)--user[list the author]' \
265 '(--date)-d[list the date]' \
266 '(-d)--date[list the date]' \
267 '(--number)-n[list the revision number (default)]' \
268 '(-n)--number[list the revision number (default)]' \
269 '(--changeset)-c[list the changeset]' \
270 '(-c)--changeset[list the changeset]' \
271 '*:files:_files -W $(_hg_cmd root)'
272 }
273
274 _hg_cmd_archive() {
275 _arguments -s -w : $_hg_global_opts $_hg_pat_opts \
276 '--no-decode[do not pass files through decoders]' \
277 '(--prefix)-p+[directory prefix for files in archive]:' \
278 '(-p)--prefix[directory prefix for files in archive]:' \
279 '(--rev)-r+[revision to distribute]:revision:_hg_tags' \
280 '(-r)--rev[revision to distribute]:revision:_hg_tags' \
281 '(--type)-t+[type of distribution to create]:archive type:(files tar tbz2 tgz uzip zip)' \
282 '(-t)--type[type of distribution to create]:archive type:(files tar tbz2 tgz uzip zip)' \
283 '*:destination:_files'
284 }
285
286 _hg_cmd_bundle() {
287 _arguments -s -w : $_hg_global_opts $_hg_remote_opts \
288 '(--force)-f[run even when remote repository is unrelated]' \
289 '(-f)--force[run even when remote repository is unrelated]' \
290 '(2)*--base[a base changeset to specify instead of a destination]:revision:_hg_tags' \
291 ':output file:_files' \
292 ':destination repository:_files -/'
293 }
294
295 _hg_cmd_cat() {
296 _arguments -s -w : $_hg_global_opts $_hg_pat_opts \
297 '(--output)-o+[print output to file with formatted name]:filespec:' \
298 '(-o)--output[print output to file with formatted name]:filespec:' \
299 '(--rev)-r+[revision]:revision:_hg_tags' \
300 '(-r)--rev[revision]:revision:_hg_tags' \
301 '*:file:_files -W $(_hg_cmd root)'
302 }
303
304 _hg_cmd_clone() {
305 _arguments -s -w : $_hg_global_opts $_hg_remote_opts \
306 '(--noupdate)-U[do not update the new working directory]' \
307 '(-U)--noupdate[do not update the new working directory]' \
308 '(--rev)-r+[a changeset you would like to have after cloning]:' \
309 '(-r)--rev[a changeset you would like to have after cloning]:' \
310 '--uncompressed[use uncompressed transfer (fast over LAN)]' \
311 ':source repository:_hg_remote' \
312 ':destination:_files -/'
313 }
314
315 _hg_cmd_commit() {
316 _arguments -s -w : $_hg_global_opts $_hg_pat_opts \
317 '(--addremove)-A[mark new/missing files as added/removed before committing]'
318 '(-A)--addremove[mark new/missing files as added/removed before committing]'
319 '(--message)-m+[use <text> as commit message]:text:' \
320 '(-m)--message[use <text> as commit message]:text:' \
321 '(--logfile)-l+[read commit message from <file>]:.log file:_file -g \*.txt' \
322 '(-l)--logfile[read commit message from <file>]:.log file:_file -g \*.txt' \
323 '(--date)-d+[record datecode as commit date]:date code:' \
324 '(-d)--date[record datecode as commit date]:date code:' \
325 '(--user)-u+[record user as commiter]:user:' \
326 '(-u)--user[record user as commiter]:user:' \
327 '*:file:_files -W $(_hg_cmd root)'
328 }
329
330 _hg_cmd_copy() {
331 _arguments -s -w : $_hg_global_opts $_hg_pat_opts $_hg_dryrun_opts \
332 '(--after)-A[record a copy that has already occurred]' \
333 '(-A)--after[record a copy that has already occurred]' \
334 '(--force)-f[forcibly copy over an existing managed file]' \
335 '(-f)--force[forcibly copy over an existing managed file]' \
336 '*:file:_files -W $(_hg_cmd root)'
337 }
338
339 _hg_cmd_diff() {
340 _arguments -s -w : $_hg_global_opts $_hg_pat_opts $_hg_diff_opts \
341 '*'{-r,--rev}'+[revision]:revision:_hg_tags ' \
342 '(--show-function)-p[show which function each change is in]' \
343 '(-p)--show-function[show which function each change is in]' \
344 '(--ignore-all-space)-w[ignore white space when comparing lines]' \
345 '(-w)--ignore-all-space[ignore white space when comparing lines]' \
346 '(--ignore-space-change)-b[ignore changes in the amount of white space]' \
347 '(-b)--ignore-space-change[ignore changes in the amount of white space]' \
348 '(--ignore-blank-lines)-B[ignore changes whose lines are all blank]' \
349 '(-B)--ignore-blank-lines[ignore changes whose lines are all blank]' \
350 '*:file:_files -W $(_hg_cmd root)'
45 }
351 }
46
352
47 (( $+_hg_commands )) ||
353 _hg_cmd_export() {
48 _hg_commands=($(hg -v help | sed -e '1,/^list of commands:/d' \
354 _arguments -s -w : $_hg_global_opts $_hg_diff_opts \
49 -e '/^global options:/,$d' -e '/^ [^ ]/!d; s/[,:].*//g;'))
355 '(--outout)-o+[print output to file with formatted name]:filespec:' \
50
356 '(-o)--output[print output to file with formatted name]:filespec:' \
51 # A lot of commands have these arguments
357 '--switch-parent[diff against the second parent]' \
52 includeExclude=(
358 '*:revision:_hg_tags'
53 '*-I-[include names matching the given patterns]:dir:_files -W $(_hg_cmd root) -/'
359 }
54 '*--include-[include names matching the given patterns]:dir:_files -W $(_hg_cmd root) -/'
55 '*-X-[exclude names matching the given patterns]:dir:_files -W $(_hg_cmd root) -/'
56 '*--exclude-[exclude names matching the given patterns]:dir:_files -W $(_hg_cmd root) -/')
57
58 styleOpts=(
59 '--style[display using template map file]:'
60 '--template[display with template]:')
61
62 commitMessage=(
63 '(-m --message -l --logfile --edit)-e[edit commit message]'
64 '(-m --message -l --logfile -e)--edit[edit commit message]'
65 '(-e --edit -l --logfile --message)-m[use <text> as commit message]:message:'
66 '(-e --edit -l --logfile -m)--message[use <text> as commit message]:message:'
67 '(-e --edit -m --message --logfile)-l[read the commit message from <file>]:log file:_files'
68 '(-e --edit -m --message -l)--logfile[read the commit message from <file>]:log file:_files')
69
360
70 if [[ $service == "hg" ]]; then
361 _hg_cmd_grep() {
71 _arguments -C -A "-*" \
362 _arguments -s -w : $_hg_global_opts $_hg_pat_opts \
72 '(--repository)-R[repository root directory]:root:_files -/' \
363 '(-print0)-0[end filenames with NUL]' \
73 '(-R)--repository[repository root directory]:root:_files -/' \
364 '(-0)--print0[end filenames with NUL]' \
74 '--cwd[change working directory]:new working directory:_files -/' \
365 '--all[print all revisions with matches]' \
75 '(--noninteractive)-y[do not prompt, assume yes for any required answers]' \
366 '(--follow)-f[follow changeset or file history]' \
76 '(-y)--noninteractive[do not prompt, assume yes for any required answers]' \
367 '(-f)--follow[follow changeset or file history]' \
77 '(--verbose)-v[enable additional output]' \
368 '(--ignore-case)-i[ignore case when matching]' \
78 '(-v)--verbose[enable additional output]' \
369 '(-i)--ignore-case[ignore case when matching]' \
79 '(--quiet)-q[suppress output]' \
370 '(--files-with-matches)-l[print only filenames and revs that match]' \
80 '(-q)--quiet[suppress output]' \
371 '(-l)--files-with-matches[print only filenames and revs that match]' \
81 '(--help)-h[display help and exit]' \
372 '(--line-number)-n[print matching line numbers]' \
82 '(-h)--help[display help and exit]' \
373 '(-n)--line-number[print matching line numbers]' \
83 '--debug[debug mode]' \
374 '*-r+[search in given revision range]:revision:_hg_tags' \
84 '--debugger[start debugger]' \
375 '*--rev[search in given revision range]:revision:_hg_tags' \
85 '--traceback[print traceback on exception]' \
376 '(--user)-u[print user who committed change]' \
86 '--time[time how long the command takes]' \
377 '(-u)--user[print user who committed change]' \
87 '--profile[profile]' \
378 '*:search pattern:_files -W $(_hg_cmd root)'
88 '--version[output version information and exit]' \
379 }
89 '*::command:->subcmd' && return 0
90
380
91 if (( CURRENT == 1 )); then
381 _hg_cmd_heads() {
92 _wanted commands expl 'hg command' compadd -a _hg_commands
382 _arguments -s -w : $_hg_global_opts $_hg_style_opts \
93 return
383 '(--rev)-r+[show only heads which are descendants of rev]:revision:_hg_tags' \
94 fi
384 '(-r)--rev[show only heads which are descendants of rev]:revision:_hg_tags'
95 service="$words[1]"
385 }
96 curcontext="${curcontext%:*}=$service:"
386
97 fi
387 _hg_cmd_help() {
388 _arguments -s -w : $_hg_global_opts \
389 '*:mercurial command:_hg_commands'
390 }
98
391
99 case $service in
392 _hg_cmd_import() {
100 (add)
393 _arguments -s -w : $_hg_global_opts \
101 newFiles=(${(ps:\0:)"$(_hg_cmd status -0un .)"})
394 '(--strip)-p+[directory strip option for patch (default: 1)]:count:' \
102 _arguments $includeExclude \
395 '(-p)--strip[directory strip option for patch (default: 1)]:count:' \
103 '*:file:->unknown'
396 '(--message)-m+[use <text> as commit message]:text:' \
104 _wanted files expl 'unknown files' compadd -a newFiles
397 '(-m)--message[use <text> as commit message]:text:' \
105 ;;
398 '(--force)-f[skip check for outstanding uncommitted changes]' \
106
399 '(-f)--force[skip check for outstanding uncommitted changes]' \
107 (addremove)
400 '*:patch:_files'
108 _arguments $includeExclude \
401 }
109 '*:directories:_files -/' # assume they want to add/remove a dir
110 ;;
111
112 (forget)
113 addedFiles=(${(ps:\0:)"$(_hg_cmd status -0an .)"})
114 _arguments $includeExclude \
115 '*:file:->added'
116 _wanted files expl 'newly added files' compadd -a addedFiles
117 ;;
118
119 (remove|rm)
120 _arguments $includeExclude \
121 '*:file:_files'
122 ;;
123
402
124 (copy|cp)
403 _hg_cmd_incoming() {
125 _arguments $includeExclude \
404 _arguments -s -w : $_hg_global_opts $_hg_remote_opts $_hg_style_opts \
126 '(--after)-A[record a copy that has already occurred]' \
405 '(--no-merges)-M[do not show merge revisions]' \
127 '(-A)--after[record a copy that has already occurred]' \
406 '(-M)--no-merges[do not show merge revisions]' \
128 '(--force)-f[forcibly copy over an existing managed file]' \
407 '(--force)-f[run even when the remote repository is unrelated]' \
129 '(-f)--force[forcibly copy over an existing managed file]' \
408 '(-f)--force[run even when the remote repository is unrelated]' \
130 '(--parents)-p[append source path to dest]' \
409 '(--patch)-p[show patch]' \
131 '(-p)--parents[append source path to dest]' \
410 '(-p)--patch[show patch]' \
132 '*:files:_files'
411 '(--rev)-r+[a specific revision up to which you would like to pull]' \
133 ;;
412 '(-r)--rev[a specific revision up to which you would like to pull]' \
413 '(--newest-first)-n[show newest record first]' \
414 '(-n)--newest-first[show newest record first]' \
415 '--bundle[file to store the bundles into]:bundle file:_files' \
416 ':source:_hg_remote'
417 }
134
418
135 (rename|mv)
419 _hg_cmd_init() {
136 if (( CURRENT == 2 )); then
420 _arguments -s -w : $_hg_global_opts $_hg_remote_opts \
137 _arguments $includeExclude \
421 ':dir:_files -/'
138 '(--after)-A[record a rename that has already occurred]' \
422 }
139 '(-A)--after[record a rename that has already occurred]' \
140 '(--force)-f[replace destination if it exists]' \
141 '(-F)--force[replace destination if it exists]' \
142 '(--parents)-p[append source path to dest]' \
143 '(-p)--parents[append source path to dest]' \
144 '*:files:_files'
145 else
146 _arguments '*:destination:_files'
147 fi
148 ;;
149
423
150 (diff)
424 _hg_cmd_locate() {
151 _arguments $includeExclude \
425 _arguments -s -w : $_hg_global_opts $_hg_pat_opts \
152 '*-r[revision]:revision:->tags' \
426 '(--rev)-r+[search repository as it stood at revision]:revision:_hg_tags' \
153 '*--rev[revision]:revision:->tags' \
427 '(-r)--rev[search repository as it stood at revision]:revision:_hg_tags' \
154 '(--text)-a[treat all files as text]' \
428 '(--print0)-0[end filenames with NUL, for use with xargs]' \
155 '(-a)--text[treat all files as text]' \
429 '(-0)--print0[end filenames with NUL, for use with xargs]' \
156 '*:file:_files'
430 '(--fullpath)-f[print complete paths]' \
157 ;;
431 '(-f)--fullpath[print complete paths]' \
432 '*:search pattern:_files -W $(_hg_cmd root)'
433 }
158
434
159 (status|st)
435 _hg_cmd_log() {
160 _arguments $includeExclude \
436 _arguments -s -w : $_hg_global_opts $_hg_pat_opts $_hg_style_opts \
161 '(--no-status)-n[hide status prefix]' \
437 '(--follow --follow-first)-f[follow changeset or history]' \
162 '(-n)--no-status[hide status prefix]' \
438 '(-f --follow-first)--follow[follow changeset or history]' \
163 '(--print0)-0[end filenames with NUL, for use with xargs]' \
439 '(-f --follow)--follow-first[only follow the first parent of merge changesets]' \
164 '(-0)--print0[end filenames with NUL, for use with xargs]' \
440 '(--copies)-C[show copied files]' \
165 '(--modified)-m[show only modified files]' \
441 '(-C)--copies[show copied files]' \
166 '(-m)--modified[show only modified files]' \
442 '(--keyword)-k+[search for a keyword]:' \
167 '(--added)-a[show only added files]' \
443 '(-k)--keyword[search for a keyword]:' \
168 '(-a)--added[show only added files]' \
444 '(--limit)-l+[limit number of changes displayed]:' \
169 '(--removed)-r[show only removed files]' \
445 '(-l)--limit[limit number of changes displayed]:' \
170 '(-r)--removed[show only removed files]' \
446 '*'{-r,--rev}'[show the specified revision or range]:revision:_hg_tags' \
171 '(--unknown)-u[show only unknown files]' \
447 '(--no-merges)-M[do not show merges]' \
172 '(-u)--unknown[show only unknown files]' \
448 '(-M)--no-merges[do not show merges]' \
173 '*:search pattern, then files:_files'
449 '(--only-merges)-m[show only merges]' \
174 ;;
450 '(-m)--only-merges[show only merges]' \
451 '(--patch)-p[show patch]' \
452 '(-p)--patch[show patch]' \
453 '(--prune)-P+[do not display revision or any of its ancestors]:revision:_hg_tags' \
454 '(-P)--prune[do not display revision or any of its ancestors]:revision:_hg_tags' \
455 '*:files:_files -W $(_hg_cmd root)'
456 }
175
457
176 (revert)
458 _hg_cmd_manifest() {
177 addedFiles=(${(ps:\0:)"$(_hg_cmd status -0amrn .)"})
459 _arguments -s -w : $_hg_global_opts \
178 _arguments \
460 ':revision:_hg_tags'
179 '(--rev)-r[revision to revert to]:revision:->tags' \
461 }
180 '(-r)--rev[revision to revert to]:revision:->tags' \
181 '(--nonrecursive)-n[do not recurse into subdirectories]' \
182 '(-n)--nonrecursive[do not recurse into subdirectories]' \
183 '*:file:->modified'
184 _wanted files expl 'mofified files' compadd -a addedFiles
185 ;;
186
462
187 (commit|ci)
463 _hg_cmd_outgoing() {
188 addedFiles=(${(ps:\0:)"$(_hg_cmd status -0amrn .)"})
464 _arguments -s -w : $_hg_global_opts $_hg_remote_opts $_hg_style_opts \
189 _arguments $includeExclude \
465 '(--no-merges)-M[do not show merge revisions]' \
190 '(--addremove)-A[run addremove during commit]' \
466 '(-M)--no-merges[do not show merge revisions]' \
191 '(-A)--addremove[run addremove during commit]' \
467 '(--force)-f[run even when the remote repository is unrelated]' \
192 '(--message)-m[use <txt> as commit message]:string:' \
468 '(-f)--force[run even when the remote repository is unrelated]' \
193 '(-m)--message[use <txt> as commit message]:string:' \
469 '(--patch)-p[show patch]' \
194 '(--logfile)-l[read commit message from <file>]:.log file:_file -g \*.txt' \
470 '(-p)--patch[show patch]' \
195 '(-l)--logfile[read commit message from <file>]:.log file:_file -g \*.txt' \
471 '(--rev)-r+[a specific revision you would like to push]' \
196 '(--date)-d[record datecode as commit date]:date code:' \
472 '(-r)--rev[a specific revision you would like to push]' \
197 '(-d)--date[record datecode as commit date]:date code:' \
473 '(--newest-first)-n[show newest record first]' \
198 '(--user)-u[record user as commiter]:user:' \
474 '(-n)--newest-first[show newest record first]' \
199 '(-u)--user[record user as commiter]:user:' \
475 ':destination:_hg_remote'
200 '*:file:->modified'
476 }
201 _wanted files expl 'mofified files' compadd -a addedFiles
202 ;;
203
204 (cat)
205 _arguments $includeExclude \
206 '(--output)-o[print output to file with formatted name]:filespec:' \
207 '(-o)--output[print output to file with formatted name]:filespec:' \
208 '(--rev)-r[revision]:revision:->tags' \
209 '(-r)--rev[revision]:revision:->tags' \
210 '*:file:_files'
211 ;;
212
477
213 (annotate)
478 _hg_cmd_parents() {
214 _arguments $includeExclude \
479 _arguments -s -w : $_hg_global_opts $_hg_style_opts \
215 '(--rev)-r[annotate the specified revision]:revision:->tags' \
480 '(--rev)-r[show parents of the specified rev]:revision:_hg_tags' \
216 '(-r)--rev[annotate the specified revision]:revision:->tags' \
481 '(-r)--rev[show parents of the specified rev]:revision:_hg_tags' \
217 '(--text)-a[treat all files as text]' \
482 ':revision:_hg_tags'
218 '(-a)--text[treat all files as text]' \
483 }
219 '(--user)-u[list the author]' \
484
220 '(-u)--user[list the author]' \
485 _hg_cmd_paths() {
221 '(--changeset)-c[list the changeset]' \
486 _arguments -s -w : $_hg_global_opts \
222 '(-c)--changeset[list the changeset]' \
487 ':path:_hg_paths'
223 '(--number)-n[list the revision number (default)]' \
488 }
224 '(-n)--number[list the revision number (default)]' \
489
225 '*:files:_files'
490 _hg_cmd_pull() {
226 ;;
491 _arguments -s -w : $_hg_global_opts $_hg_remote_opts \
492 '(--force)-f[run even when the remote repository is unrelated]' \
493 '(-f)--force[run even when the remote repository is unrelated]' \
494 '(--update)-u[update to new tip if changesets were pulled]' \
495 '(-u)--update[update to new tip if changesets were pulled]' \
496 ':source:_hg_remote'
497 }
227
498
228 (grep)
499 _hg_cmd_push() {
229 _arguments $includeExclude \
500 _arguments -s -w : $_hg_global_opts $_hg_remote_opts \
230 '*-r[search in given revision range]:revision:->tags' \
501 '(--force)-f[force push]' \
231 '*--rev[search in given revision range]:revision:->tags' \
502 '(-f)--force[force push]' \
232 '--all[print all revisions with matches]' \
503 '(--rev)-r+[a specific revision you would like to push]' \
233 '(-print0)-0[end filenames with NUL, for use with xargs]' \
504 '(-r)--rev[a specific revision you would like to push]' \
234 '(-0)--print0[end filenames with NUL, for use with xargs]' \
505 ':destination:_hg_remote'
235 '(--ignore-case)-i[ignore case when matching]' \
506 }
236 '(-i)--ignore-case[ignore case when matching]' \
237 '(--files-with-matches)-l[print names of files and revs that match]' \
238 '(-l)--files-with-matches[print names of files and revs that match]' \
239 '(--line-number)-n[print matching line numbers]' \
240 '(-n)--line-number[print matching line numbers]' \
241 '(--user)-u[print user who committed change]' \
242 '(-u)--user[print user who committed change]' \
243 '*:search pattern:'
244 ;;
245
507
246 (locate)
508 _hg_cmd_remove() {
247 _arguments $includeExclude \
509 _arguments -s -w : $_hg_global_opts $_hg_pat_opts \
248 '(--rev)-r[search repository as it stood at revision]:revision:->tags' \
510 '(--after)-A[record remove that has already occurred]' \
249 '(-r)--rev[search repository as it stood at revision]:revision:->tags' \
511 '(-A)--after[record remove that has already occurred]' \
250 '(--print0)-0[end filenames with NUL, for use with xargs]' \
512 '(--force)-f[remove file even if modified]' \
251 '(-0)--print0[end filenames with NUL, for use with xargs]' \
513 '(-f)--force[remove file even if modified]' \
252 '(--fullpath)-f[print complete paths]' \
514 '*:file:_files -W $(_hg_cmd root)'
253 '(-f)--fullpath[print complete paths]' \
515 }
254 '*:search pattern:'
255 ;;
256
516
257 (log|history)
517 _hg_cmd_rename() {
258 _arguments $includeExclude $styleOpts \
518 _arguments -s -w : $_hg_global_opts $_hg_pat_opts $_hg_dryrun_opts \
259 '*-r[show the specified revision or range]:revision:->tags' \
519 '(--after)-A[record a rename that has already occurred]' \
260 '*--rev[show the specified revision or range]:revision:->tags' \
520 '(-A)--after[record a rename that has already occurred]' \
261 '(--no-merges -M --only-merges)-m[show only merge revisions]' \
521 '(--force)-f[forcibly copy over an existing managed file]' \
262 '(--no-merges -M -m)--only-merges[show only merge revisions]' \
522 '(-f)--force[forcibly copy over an existing managed file]' \
263 '(--only-merges -m --no-merges)-M[do not show merge revisions]' \
523 '*:file:_files -W $(_hg_cmd root)'
264 '(--only-merges -m -M)--no-merges[do not show merge revisions]' \
524 }
265 '(--keyword)-k[search for a keyword]:keyword:' \
266 '(-k)--keyword[search for a keyword]:keyword:' \
267 '(--branch)-b[show branches]' \
268 '(-b)--branch[show branches]' \
269 '(--patch)-p[show patch]' \
270 '(-p)--patch[show patch]' \
271 '*:file:_files'
272 ;;
273
525
274 (update|checkout|co)
526 _hg_cmd_revert() {
275 _arguments \
527 _arguments -s -w : $_hg_global_opts $_hg_pat_opts $_hg_dryrun_opts \
276 '(--branch)-b[checkout the head of a specific branch]' \
528 '(--all :)-a[revert all changes when no arguments given]' \
277 '(-b)--branch[checkout the head of a specific branch]' \
529 '(-a :)--all[revert all changes when no arguments given]' \
278 '(-C --clean --merge)-m[allow merging of branches]' \
530 '(--rev)-r+[revision to revert to]:revision:_hg_tags' \
279 '(-C --clean -m)--merge[allow merging of branches]' \
531 '(-r)--rev[revision to revert to]:revision:_hg_tags' \
280 '(-m --merge --clean)-C[overwrite locally modified files]' \
532 '--no-backup[do not save backup copies of files]' \
281 '(-m --merge -C)--clean[overwrite locally modified files]' \
533 '*:file:_files -W $(_hg_cmd root)'
282 '*:revision or tag:->tags'
534 }
283 ;;
284
285 (tag)
286 _arguments \
287 '(--local)-l[make the tag local]' \
288 '(-l)--local[make the tag local]' \
289 '(--message)-m[message for tag commit log entry]:string:' \
290 '(-m)--message[message for tag commit log entry]:string:' \
291 '(--date)-d[record datecode as commit date]:date code:' \
292 '(-d)--date[record datecode as commit date]:date code:' \
293 '(--user)-u[record user as commiter]:user:' \
294 '(-u)--user[record user as commiter]:user:' \
295 '*:name, then revision:->tags'
296 ;;
297
535
298 (clone)
536 _hg_cmd_serve() {
299 if (( CURRENT == 2 )); then
537 _arguments -s -w : $_hg_global_opts \
300 repos=( $(_hg_cmd paths | sed -e 's/^.*= //') )
538 '(--accesslog)-A+[name of access log file]:log file:_files' \
301 _arguments \
539 '(-A)--accesslog[name of access log file]:log file:_files' \
302 '(--no-update)-U[do not update the new working directory]' \
540 '(--errorlog)-E+[name of error log file]:log file:_files' \
303 '(-U)--no-update[do not update the new working directory]' \
541 '(-E)--errorlog[name of error log file]:log file:_files' \
304 '(--ssh)-e[specify ssh command to use]:string:' \
542 '(--daemon)-d[run server in background]' \
305 '(-e)--ssh[specify ssh command to use]:string:' \
543 '(-d)--daemon[run server in background]' \
306 '--pull[use pull protocol to copy metadata]' \
544 '(--port)-p+[listen port]:listen port:' \
307 '--remotecmd[specify hg command to run on the remote side]:remote hg:' \
545 '(-p)--port[listen port]:listen port:' \
308 '*:local repo:_files -/'
546 '(--address)-a+[interface address]:interface address:' \
309 _wanted source expl 'source repository' compadd -a repos
547 '(-a)--address[interface address]:interface address:' \
310 elif (( CURRENT == 3 )); then
548 '(--name)-n+[name to show in web pages]:repository name:' \
311 _arguments '*:dest repo:_files -/'
549 '(-n)--name[name to show in web pages]:repository name:' \
312 fi
550 '(--templates)-t[web template directory]:template dir:_files -/' \
313 ;;
551 '(-t)--templates[web template directory]:template dir:_files -/' \
314
552 '--style[web template style]:style' \
315 (rawcommit)
553 '--stdio[for remote clients]' \
316 _arguments \
554 '(--ipv6)-6[use IPv6 in addition to IPv4]' \
317 '(--parent)-p[parent revision]:revision:->tags' \
555 '(-6)--ipv6[use IPv6 in addition to IPv4]'
318 '(-p)--parent[parent revision]:revision:->tags' \
556 }
319 '(--date)-d[record datecode as commit date]:date code:' \
320 '(-d)--date[record datecode as commit date]:date code:' \
321 '(--user)-u[record user as commiter]:user:' \
322 '(-u)--user[record user as commiter]:user:' \
323 '(--message)-m[use <txt> as commit message]:string:' \
324 '(-m)--message[use <txt> as commit message]:string:' \
325 '(--logfile)-l[read commit message from <file>]:.log file:_file -g \*.txt' \
326 '(-l)--logfile[read commit message from <file>]:.log file:_file -g \*.txt' \
327 '(--files)-F[file list]:file list:_files' \
328 '(-F)--files[file list]:file list:_files' \
329 '*:files to commit:_files'
330 ;;
331
557
332 (bundle)
558 _hg_cmd_status() {
333 if (( CURRENT == 2 )); then
559 _arguments -s -w : $_hg_global_opts $_hg_pat_opts \
334 _arguments '*:changegroup file:_files -g \*.hg'
560 '(--all)-A[show status of all files]' \
335 elif (( CURRENT == 3 )); then
561 '(-A)--all[show status of all files]' \
336 _arguments '*:other repo:_files -/'
562 '(--modified)-m[show only modified files]' \
337 fi
563 '(-m)--modified[show only modified files]' \
338 ;;
564 '(--added)-a[show only added files]' \
339
565 '(-a)--added[show only added files]' \
340 (unbundle)
566 '(--removed)-r[show only removed files]' \
341 _arguments '*:changegroup .hg file:_files -g \*.hg'
567 '(-r)--removed[show only removed files]' \
342 ;;
568 '(--deleted)-d[show only deleted (but tracked) files]' \
343
569 '(-d)--deleted[show only deleted (but tracked) files]' \
344 (incoming)
570 '(--clean)-c[show only files without changes]' \
345 _arguments $styleOpts \
571 '(-c)--clean[show only files without changes]' \
346 '(--patch)-p[show patch]' \
572 '(--unknown)-u[show only unknown files]' \
347 '(-p)--patch[show patch]' \
573 '(-u)--unknown[show only unknown files]' \
348 '(--no-merges)-M[do not show merge revisions]' \
574 '(--ignored)-i[show ignored files]' \
349 '(-M)--no-merges[do not show merge revisions]' \
575 '(-i)--ignored[show ignored files]' \
350 '(--newest-first)-n[show newest record first]' \
576 '(--no-status)-n[hide status prefix]' \
351 '(-n)--newest-first[show newest record first]' \
577 '(-n)--no-status[hide status prefix]' \
352 '*:mercurial repository:_files -/'
578 '(--copies)-C[show source of copied files]' \
353 ;;
579 '(-C)--copies[show source of copied files]' \
580 '(--print0)-0[end filenames with NUL, for use with xargs]' \
581 '(-0)--print0[end filenames with NUL, for use with xargs]' \
582 '--rev[show difference from revision]:revision:_hg_tags' \
583 '*:files:_files'
584 }
354
585
355 (import|patch)
586 _hg_cmd_tag() {
356 _arguments \
587 _arguments -s -w : $_hg_global_opts \
357 '(--strip)-p[directory strip option for patch (default: 1)]:count:' \
588 '(--local)-l[make the tag local]' \
358 '(-p)--strip[directory strip option for patch (default: 1)]:count:' \
589 '(-l)--local[make the tag local]' \
359 '(--force)-f[skip check for outstanding uncommitted changes]' \
590 '(--message)-m+[message for tag commit log entry]:message:' \
360 '(-f)--force[skip check for outstanding uncommitted changes]' \
591 '(-m)--message[message for tag commit log entry]:message:' \
361 '(--base)-b[base directory to read patches from]:file:_files -W $(_hg_cmd root) -/' \
592 '(--date)-d+[record datecode as commit date]:date code:' \
362 '(-b)--base[base directory to read patches from]:file:_files -W $(_hg_cmd root) -/' \
593 '(-d)--date[record datecode as commit date]:date code:' \
363 '*:patch file:_files'
594 '(--user)-u+[record user as commiter]:user:' \
364 ;;
595 '(-u)--user[record user as commiter]:user:' \
596 '(--rev)-r+[revision to tag]:revision:_hg_tags' \
597 '(-r)--rev[revision to tag]:revision:_hg_tags' \
598 ':tag name:'
599 }
365
600
366 (pull)
601 _hg_cmd_tip() {
367 repos=( $(_hg_cmd paths | sed -e 's/^.*= //') )
602 _arguments -s -w : $_hg_global_opts $_hg_style_opts \
368 _arguments \
603 '(--patch)-p[show patch]' \
369 '(--update)-u[update working directory to tip after pull]' \
604 '(-p)--patch[show patch]'
370 '(-u)--update[update working directory to tip after pull]' \
605 }
371 '(--ssh)-e[specify ssh command to use]:ssh command:' \
372 '(-e)--ssh[specify ssh command to use]:ssh command:' \
373 '--remotecmd[specify hg command to run on the remote side]:remote hg:' \
374 '*:local repo:_files -/'
375 _wanted source expl 'source repository' compadd -a repos
376 ;;
377
378 (outgoing)
379 _arguments $styleOpts \
380 '(--patch)-p[show patch]' \
381 '(-p)--patch[show patch]' \
382 '(--no-merges)-M[do not show merge revisions]' \
383 '(-M)--no-merges[do not show merge revisions]' \
384 '(--newest-first)-n[show newest record first]' \
385 '(-n)--newest-first[show newest record first]' \
386 '*:local repo:_files -/'
387 _wanted source expl 'source repository' compadd -a repos
388 ;;
389
606
390 (export)
607 _hg_cmd_unbundle() {
391 _arguments \
608 _arguments -s -w : $_hg_global_opts \
392 '(--outout)-o[print output to file with formatted name]:filespec:' \
609 '(--update)-u[update to new tip if changesets were unbundled]' \
393 '(-o)--output[print output to file with formatted name]:filespec:' \
610 '(-u)--update[update to new tip if changesets were unbundled]' \
394 '(--text)-a[treat all files as text]' \
611 ':files:_files'
395 '(-a)--text[treat all files as text]' \
612 }
396 '*:revision:->revs'
397 _wanted revs expl 'revision or tag' compadd -a tags
398 ;;
399
613
400 (push)
614 _hg_cmd_update() {
401 repos=( $(_hg_cmd paths | sed -e 's/^.*= //') )
615 _arguments -s -w : $_hg_global_opts \
402 _arguments \
616 '(--clean)-C[overwrite locally modified files]' \
403 '(--force)-f[force push]' \
617 '(-C)--clean[overwrite locally modified files]' \
404 '(-f)--force[force push]' \
618 '(--force)-f[force a merge with outstanding changes]' \
405 '(--ssh)-e[specify ssh command to use]:ssh command:' \
619 '(-f)--force[force a merge with outstanding changes]' \
406 '(-e)--ssh[specify ssh command to use]:ssh command:' \
620 ':revision:_hg_tags'
407 '--remotecmd[specify hg command to run on the remote side]:remote hg:' \
621 }
408 '*:local repo:_files -/'
409 _wanted source expl 'source repository' compadd -a repos
410 ;;
411
622
412 (serve)
623 # HGK
413 _arguments \
624 _hg_cmd_view() {
414 '(--accesslog)-A[name of access log file]:log file:_files' \
625 _arguments -s -w : $_hg_global_opts \
415 '(-A)--accesslog[name of access log file]:log file:_files' \
626 '(--limit)-l+[limit number of changes displayed]:' \
416 '(--errorlog)-E[name of error log file]:log file:_files' \
627 '(-l)--limit[limit number of changes displayed]:' \
417 '(-E)--errorlog[name of error log file]:log file:_files' \
628 ':revision range:_hg_tags'
418 '(--port)-p[listen port]:listen port:' \
629 }
419 '(-p)--port[listen port]:listen port:' \
420 '(--address)-a[interface address]:interface address:' \
421 '(-a)--address[interface address]:interface address:' \
422 '(--name)-n[name to show in web pages]:repository name:' \
423 '(-n)--name[name to show in web pages]:repository name:' \
424 '(--templates)-t[web template directory]:template dir:_files -/' \
425 '(-t)--templates[web template directory]:template dir:_files -/' \
426 '--style[web template style]:style' \
427 '--stdio[for remote clients]' \
428 '(--ipv6)-6[use IPv6 in addition to IPv4]' \
429 '(-6)--ipv6[use IPv6 in addition to IPv4]'
430 ;;
431
630
432 (help)
631 # MQ
433 _wanted commands expl 'hg command' compadd -a _hg_commands
632 _hg_cmd_qdelete() {
434 ;;
633 _arguments -s -w : $_hg_global_opts \
634 '(--keep)-k[keep patch file]' \
635 '(-k)--keep[keep patch file]' \
636 '*-r+[stop managing a revision]:applied patch:_hg_qapplied' \
637 '*--revision[stop managing a revision]:applied patch:_hg_qapplied' \
638 '*:patch:_hg_qunapplied'
639 }
435
640
436 (heads)
641 _hg_cmd_qheader() {
437 _arguments $styleOpts \
642 _arguments -s -w : $_hg_global_opts \
438 '(--branches)-b[find branch info]' \
643 ':patch:_hg_qseries'
439 '(-b)--branches[find branch info]'
644 }
440 ;;
441
645
442 (paths)
646 _hg_cmd_qnew() {
443 _arguments '*:symbolic name:(default default-push)'
647 _arguments -s -w : $_hg_global_opts $_hg_commit_opts \
444 ;;
648 '(--force)-f[import uncommitted changes into patch]' \
445
649 '(-f)--force[import uncommitted changes into patch]' \
446 (init)
650 ':patch:'
447 _arguments '*:new repo directory:_files -/'
651 }
448 ;;
449
652
450 (manifest)
653 _hg_cmd_qpop() {
451 _arguments '*:revision:->tags'
654 _arguments -s -w : $_hg_global_opts \
452 ;;
655 '(--all :)-a[pop all patches]' \
453
656 '(-a :)--all[pop all patches]' \
454 (par*)
657 '(--name)-n+[queue name to pop]:' \
455 _arguments $styleOpts \
658 '(-n)--name[queue name to pop]:' \
456 '(--rev 1)-r[show parents of the specified rev]:revision:->tags' \
659 '(--force)-f[forget any local changes]' \
457 '(-r 1)--rev[show parents of the specified rev]:revision:->tags' \
660 '(-f)--force[forget any local changes]' \
458 '::revision:->tags'
661 ':patch:_hg_qapplied'
459 ;;
662 }
460
461 (identify|recover|root|undo|verify|version|ct|tags)
462 # no arguments for these commands
463 ;;
464
465 # HGK
466 (vi*)
467 _arguments \
468 '(--limit)-l[limit number of changes displayed]:' \
469 '(-l)--limit[limit number of changes displayed]:' \
470 '::revision range:->tags'
471 ;;
472
473 # MQ commands
474 (qdel*|qrm|qrem*)
475 _arguments \
476 {-k,--keep}'[keep patch file]' \
477 {-r,--rev}'[revision]:applied patch:->qapplied' \
478 '*:unapplied patches:->qunapplied'
479 ;;
480
663
481 (qnew)
664 _hg_cmd_qpush() {
482 _arguments $commitMessage \
665 _arguments -s -w : $_hg_global_opts \
483 {-f,--force}'[import uncommitted changes into patch]' \
666 '(--all :)-a[apply all patches]' \
484 ':patch name:'
667 '(-a :)--all[apply all patches]' \
485 ;;
668 '(--list)-l[list patch name in commit text]' \
486
669 '(-l)--list[list patch name in commit text]' \
487 (qpo*)
670 '(--merge)-m+[merge from another queue]:' \
488 _arguments \
671 '(-m)--merge[merge from another queue]:' \
489 (1){-a,--all}'[pop all patches]' \
672 '(--name)-n+[merge queue name]:' \
490 {-f,--force}'[forget any local changes]' \
673 '(-n)--name[merge queue name]:' \
491 ':applied patch:->qapplied'
674 '(--force)-f[apply if the patch has rejects]' \
492 ;;
675 '(-f)--force[apply if the patch has rejects]' \
676 ':patch:_hg_qunapplied'
677 }
493
678
494 (qpu*)
679 _hg_cmd_qrefresh() {
495 _arguments \
680 _arguments -s -w : $_hg_global_opts $_hg_pat_opts $_hg_commit_opts \
496 (1){-a,--all}'[apply all patches]' \
681 '(--git)-g[use git extended diff format]' \
497 {-f,--force}'[apply if the patch has rejects]' \
682 '(-g)--git[use git extended diff format]' \
498 ':unapplied patch:->qunapplied'
683 '(--short)-s[short refresh]' \
499 ;;
684 '(-s)--short[short refresh]' \
500 (qref*)
685 '*:files:_files -W $(_hg_cmd root)'
501 _arguments $commitMessage $includeExclude \
686 }
502 {-g,--git}'[use git extended diff format]' \
503 {-s,--short}'[short refresh]'
504 ;;
505
687
506 (*)
688 _hg_cmd_strip() {
507 _message "unknown hg command completion: $service"
689 _arguments -s -w : $_hg_global_opts \
508 ;;
690 '(--force)-f[force multi-head removal]' \
509 esac
691 '(-f)--force[force multi-head removal]' \
692 '(--backup)-b[bundle unrelated changesets]' \
693 '(-b)--backup[bundle unrelated changesets]' \
694 '(--nobackup)-n[no backups]' \
695 '(-n)--nobackup[no backups]' \
696 ':revision:_hg_tags'
697 }
510
698
511 _hg_state
699 _hg "$@"
General Comments 0
You need to be logged in to leave comments. Login now