Mercurial > hg > mercurial-crew-with-dirclash
annotate contrib/zsh_completion @ 3511:060aefba4459
zsh: rewrite
This version of zsh completion handles global options more correctly,
completes options for command abbreviations, and does much more lazy
evaluation.
author | Brendan Cully <brendan@kublai.com> |
---|---|
date | Wed, 25 Oct 2006 15:08:40 -0700 |
parents | 776c317566b6 |
children | a6dd7ab568cc |
rev | line source |
---|---|
1362 | 1 #compdef hg |
2 | |
3 # Zsh completion script for mercurial. Rename this file to _hg and copy | |
4 # it into your zsh function path (/usr/share/zsh/site-functions for | |
5 # instance) | |
6 # | |
7 # Copyright (C) 2005 Steve Borho | |
8 # | |
9 # This is free software; you can redistribute it and/or modify it under | |
10 # the terms of the GNU General Public License as published by the Free | |
11 # Software Foundation; either version 2 of the License, or (at your | |
12 # option) any later version. | |
13 # | |
14 | |
15 local curcontext="$curcontext" state line | |
3511 | 16 local repos newFiles addedFiles commitMessage |
17 typeset -A _hg_cmd_globals | |
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 } | |
3491
459e7cd943d4
zsh: complete according to the -R option if specified
Brendan Cully <brendan@kublai.com>
parents:
3490
diff
changeset
|
86 |
3511 | 87 _hg_get_commands() { |
88 typeset -ga _hg_cmd_list | |
89 typeset -gA _hg_alias_list | |
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 } | |
3482
46958e428fcd
zsh completion: basic mq support
Brendan Cully <brendan@kublai.com>
parents:
1544
diff
changeset
|
134 |
3511 | 135 _hg_unknown() { |
136 typeset -a status_files | |
137 _hg_status u | |
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 | |
3491
459e7cd943d4
zsh: complete according to the -R option if specified
Brendan Cully <brendan@kublai.com>
parents:
3490
diff
changeset
|
182 } |
459e7cd943d4
zsh: complete according to the -R option if specified
Brendan Cully <brendan@kublai.com>
parents:
3490
diff
changeset
|
183 |
3511 | 184 # Common options |
185 _hg_global_opts=( | |
186 '(--repository)-R+[repository root directory]:repository:_files -/' | |
187 '(-R)--repository[repository root directory]:repository:_files -/' | |
188 '--cwd[change working directory]:new working directory:_files -/' | |
189 '(--noninteractive)-y[do not prompt, assume yes for any required answers]' | |
190 '(-y)--noninteractive[do not prompt, assume yes for any required answers]' | |
191 '(--verbose)-v[enable additional output]' | |
192 '(-v)--verbose[enable additional output]' | |
193 '(--quiet)-q[suppress output]' | |
194 '(-q)--quiet[suppress output]' | |
195 '(--help)-h[display help and exit]' | |
196 '(-h)--help[display help and exit]' | |
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)' | |
3482
46958e428fcd
zsh completion: basic mq support
Brendan Cully <brendan@kublai.com>
parents:
1544
diff
changeset
|
351 } |
1362 | 352 |
3511 | 353 _hg_cmd_export() { |
354 _arguments -s -w : $_hg_global_opts $_hg_diff_opts \ | |
355 '(--outout)-o+[print output to file with formatted name]:filespec:' \ | |
356 '(-o)--output[print output to file with formatted name]:filespec:' \ | |
357 '--switch-parent[diff against the second parent]' \ | |
358 '*:revision:_hg_tags' | |
359 } | |
3482
46958e428fcd
zsh completion: basic mq support
Brendan Cully <brendan@kublai.com>
parents:
1544
diff
changeset
|
360 |
3511 | 361 _hg_cmd_grep() { |
362 _arguments -s -w : $_hg_global_opts $_hg_pat_opts \ | |
363 '(-print0)-0[end filenames with NUL]' \ | |
364 '(-0)--print0[end filenames with NUL]' \ | |
365 '--all[print all revisions with matches]' \ | |
366 '(--follow)-f[follow changeset or file history]' \ | |
367 '(-f)--follow[follow changeset or file history]' \ | |
368 '(--ignore-case)-i[ignore case when matching]' \ | |
369 '(-i)--ignore-case[ignore case when matching]' \ | |
370 '(--files-with-matches)-l[print only filenames and revs that match]' \ | |
371 '(-l)--files-with-matches[print only filenames and revs that match]' \ | |
372 '(--line-number)-n[print matching line numbers]' \ | |
373 '(-n)--line-number[print matching line numbers]' \ | |
374 '*-r+[search in given revision range]:revision:_hg_tags' \ | |
375 '*--rev[search in given revision range]:revision:_hg_tags' \ | |
376 '(--user)-u[print user who committed change]' \ | |
377 '(-u)--user[print user who committed change]' \ | |
378 '*:search pattern:_files -W $(_hg_cmd root)' | |
379 } | |
1362 | 380 |
3511 | 381 _hg_cmd_heads() { |
382 _arguments -s -w : $_hg_global_opts $_hg_style_opts \ | |
383 '(--rev)-r+[show only heads which are descendants of rev]:revision:_hg_tags' \ | |
384 '(-r)--rev[show only heads which are descendants of rev]:revision:_hg_tags' | |
385 } | |
386 | |
387 _hg_cmd_help() { | |
388 _arguments -s -w : $_hg_global_opts \ | |
389 '*:mercurial command:_hg_commands' | |
390 } | |
1362 | 391 |
3511 | 392 _hg_cmd_import() { |
393 _arguments -s -w : $_hg_global_opts \ | |
394 '(--strip)-p+[directory strip option for patch (default: 1)]:count:' \ | |
395 '(-p)--strip[directory strip option for patch (default: 1)]:count:' \ | |
396 '(--message)-m+[use <text> as commit message]:text:' \ | |
397 '(-m)--message[use <text> as commit message]:text:' \ | |
398 '(--force)-f[skip check for outstanding uncommitted changes]' \ | |
399 '(-f)--force[skip check for outstanding uncommitted changes]' \ | |
400 '*:patch:_files' | |
401 } | |
1438
c22da894e4cc
zsh completions: new -M, -m arguments for log, etc.
Steve Borho <steve@borho.org>
parents:
1368
diff
changeset
|
402 |
3511 | 403 _hg_cmd_incoming() { |
404 _arguments -s -w : $_hg_global_opts $_hg_remote_opts $_hg_style_opts \ | |
405 '(--no-merges)-M[do not show merge revisions]' \ | |
406 '(-M)--no-merges[do not show merge revisions]' \ | |
407 '(--force)-f[run even when the remote repository is unrelated]' \ | |
408 '(-f)--force[run even when the remote repository is unrelated]' \ | |
409 '(--patch)-p[show patch]' \ | |
410 '(-p)--patch[show patch]' \ | |
411 '(--rev)-r+[a specific revision up to which you would like to pull]' \ | |
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 } | |
1438
c22da894e4cc
zsh completions: new -M, -m arguments for log, etc.
Steve Borho <steve@borho.org>
parents:
1368
diff
changeset
|
418 |
3511 | 419 _hg_cmd_init() { |
420 _arguments -s -w : $_hg_global_opts $_hg_remote_opts \ | |
421 ':dir:_files -/' | |
422 } | |
1438
c22da894e4cc
zsh completions: new -M, -m arguments for log, etc.
Steve Borho <steve@borho.org>
parents:
1368
diff
changeset
|
423 |
3511 | 424 _hg_cmd_locate() { |
425 _arguments -s -w : $_hg_global_opts $_hg_pat_opts \ | |
426 '(--rev)-r+[search repository as it stood at revision]:revision:_hg_tags' \ | |
427 '(-r)--rev[search repository as it stood at revision]:revision:_hg_tags' \ | |
428 '(--print0)-0[end filenames with NUL, for use with xargs]' \ | |
429 '(-0)--print0[end filenames with NUL, for use with xargs]' \ | |
430 '(--fullpath)-f[print complete paths]' \ | |
431 '(-f)--fullpath[print complete paths]' \ | |
432 '*:search pattern:_files -W $(_hg_cmd root)' | |
433 } | |
1438
c22da894e4cc
zsh completions: new -M, -m arguments for log, etc.
Steve Borho <steve@borho.org>
parents:
1368
diff
changeset
|
434 |
3511 | 435 _hg_cmd_log() { |
436 _arguments -s -w : $_hg_global_opts $_hg_pat_opts $_hg_style_opts \ | |
437 '(--follow --follow-first)-f[follow changeset or history]' \ | |
438 '(-f --follow-first)--follow[follow changeset or history]' \ | |
439 '(-f --follow)--follow-first[only follow the first parent of merge changesets]' \ | |
440 '(--copies)-C[show copied files]' \ | |
441 '(-C)--copies[show copied files]' \ | |
442 '(--keyword)-k+[search for a keyword]:' \ | |
443 '(-k)--keyword[search for a keyword]:' \ | |
444 '(--limit)-l+[limit number of changes displayed]:' \ | |
445 '(-l)--limit[limit number of changes displayed]:' \ | |
446 '*'{-r,--rev}'[show the specified revision or range]:revision:_hg_tags' \ | |
447 '(--no-merges)-M[do not show merges]' \ | |
448 '(-M)--no-merges[do not show merges]' \ | |
449 '(--only-merges)-m[show only merges]' \ | |
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 } | |
1438
c22da894e4cc
zsh completions: new -M, -m arguments for log, etc.
Steve Borho <steve@borho.org>
parents:
1368
diff
changeset
|
457 |
3511 | 458 _hg_cmd_manifest() { |
459 _arguments -s -w : $_hg_global_opts \ | |
460 ':revision:_hg_tags' | |
461 } | |
1438
c22da894e4cc
zsh completions: new -M, -m arguments for log, etc.
Steve Borho <steve@borho.org>
parents:
1368
diff
changeset
|
462 |
3511 | 463 _hg_cmd_outgoing() { |
464 _arguments -s -w : $_hg_global_opts $_hg_remote_opts $_hg_style_opts \ | |
465 '(--no-merges)-M[do not show merge revisions]' \ | |
466 '(-M)--no-merges[do not show merge revisions]' \ | |
467 '(--force)-f[run even when the remote repository is unrelated]' \ | |
468 '(-f)--force[run even when the remote repository is unrelated]' \ | |
469 '(--patch)-p[show patch]' \ | |
470 '(-p)--patch[show patch]' \ | |
471 '(--rev)-r+[a specific revision you would like to push]' \ | |
472 '(-r)--rev[a specific revision you would like to push]' \ | |
473 '(--newest-first)-n[show newest record first]' \ | |
474 '(-n)--newest-first[show newest record first]' \ | |
475 ':destination:_hg_remote' | |
476 } | |
1438
c22da894e4cc
zsh completions: new -M, -m arguments for log, etc.
Steve Borho <steve@borho.org>
parents:
1368
diff
changeset
|
477 |
3511 | 478 _hg_cmd_parents() { |
479 _arguments -s -w : $_hg_global_opts $_hg_style_opts \ | |
480 '(--rev)-r[show parents of the specified rev]:revision:_hg_tags' \ | |
481 '(-r)--rev[show parents of the specified rev]:revision:_hg_tags' \ | |
482 ':revision:_hg_tags' | |
483 } | |
484 | |
485 _hg_cmd_paths() { | |
486 _arguments -s -w : $_hg_global_opts \ | |
487 ':path:_hg_paths' | |
488 } | |
489 | |
490 _hg_cmd_pull() { | |
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 } | |
1438
c22da894e4cc
zsh completions: new -M, -m arguments for log, etc.
Steve Borho <steve@borho.org>
parents:
1368
diff
changeset
|
498 |
3511 | 499 _hg_cmd_push() { |
500 _arguments -s -w : $_hg_global_opts $_hg_remote_opts \ | |
501 '(--force)-f[force push]' \ | |
502 '(-f)--force[force push]' \ | |
503 '(--rev)-r+[a specific revision you would like to push]' \ | |
504 '(-r)--rev[a specific revision you would like to push]' \ | |
505 ':destination:_hg_remote' | |
506 } | |
1438
c22da894e4cc
zsh completions: new -M, -m arguments for log, etc.
Steve Borho <steve@borho.org>
parents:
1368
diff
changeset
|
507 |
3511 | 508 _hg_cmd_remove() { |
509 _arguments -s -w : $_hg_global_opts $_hg_pat_opts \ | |
510 '(--after)-A[record remove that has already occurred]' \ | |
511 '(-A)--after[record remove that has already occurred]' \ | |
512 '(--force)-f[remove file even if modified]' \ | |
513 '(-f)--force[remove file even if modified]' \ | |
514 '*:file:_files -W $(_hg_cmd root)' | |
515 } | |
1438
c22da894e4cc
zsh completions: new -M, -m arguments for log, etc.
Steve Borho <steve@borho.org>
parents:
1368
diff
changeset
|
516 |
3511 | 517 _hg_cmd_rename() { |
518 _arguments -s -w : $_hg_global_opts $_hg_pat_opts $_hg_dryrun_opts \ | |
519 '(--after)-A[record a rename that has already occurred]' \ | |
520 '(-A)--after[record a rename that has already occurred]' \ | |
521 '(--force)-f[forcibly copy over an existing managed file]' \ | |
522 '(-f)--force[forcibly copy over an existing managed file]' \ | |
523 '*:file:_files -W $(_hg_cmd root)' | |
524 } | |
1362 | 525 |
3511 | 526 _hg_cmd_revert() { |
527 _arguments -s -w : $_hg_global_opts $_hg_pat_opts $_hg_dryrun_opts \ | |
528 '(--all :)-a[revert all changes when no arguments given]' \ | |
529 '(-a :)--all[revert all changes when no arguments given]' \ | |
530 '(--rev)-r+[revision to revert to]:revision:_hg_tags' \ | |
531 '(-r)--rev[revision to revert to]:revision:_hg_tags' \ | |
532 '--no-backup[do not save backup copies of files]' \ | |
533 '*:file:_files -W $(_hg_cmd root)' | |
534 } | |
1438
c22da894e4cc
zsh completions: new -M, -m arguments for log, etc.
Steve Borho <steve@borho.org>
parents:
1368
diff
changeset
|
535 |
3511 | 536 _hg_cmd_serve() { |
537 _arguments -s -w : $_hg_global_opts \ | |
538 '(--accesslog)-A+[name of access log file]:log file:_files' \ | |
539 '(-A)--accesslog[name of access log file]:log file:_files' \ | |
540 '(--errorlog)-E+[name of error log file]:log file:_files' \ | |
541 '(-E)--errorlog[name of error log file]:log file:_files' \ | |
542 '(--daemon)-d[run server in background]' \ | |
543 '(-d)--daemon[run server in background]' \ | |
544 '(--port)-p+[listen port]:listen port:' \ | |
545 '(-p)--port[listen port]:listen port:' \ | |
546 '(--address)-a+[interface address]:interface address:' \ | |
547 '(-a)--address[interface address]:interface address:' \ | |
548 '(--name)-n+[name to show in web pages]:repository name:' \ | |
549 '(-n)--name[name to show in web pages]:repository name:' \ | |
550 '(--templates)-t[web template directory]:template dir:_files -/' \ | |
551 '(-t)--templates[web template directory]:template dir:_files -/' \ | |
552 '--style[web template style]:style' \ | |
553 '--stdio[for remote clients]' \ | |
554 '(--ipv6)-6[use IPv6 in addition to IPv4]' \ | |
555 '(-6)--ipv6[use IPv6 in addition to IPv4]' | |
556 } | |
1438
c22da894e4cc
zsh completions: new -M, -m arguments for log, etc.
Steve Borho <steve@borho.org>
parents:
1368
diff
changeset
|
557 |
3511 | 558 _hg_cmd_status() { |
559 _arguments -s -w : $_hg_global_opts $_hg_pat_opts \ | |
560 '(--all)-A[show status of all files]' \ | |
561 '(-A)--all[show status of all files]' \ | |
562 '(--modified)-m[show only modified files]' \ | |
563 '(-m)--modified[show only modified files]' \ | |
564 '(--added)-a[show only added files]' \ | |
565 '(-a)--added[show only added files]' \ | |
566 '(--removed)-r[show only removed files]' \ | |
567 '(-r)--removed[show only removed files]' \ | |
568 '(--deleted)-d[show only deleted (but tracked) files]' \ | |
569 '(-d)--deleted[show only deleted (but tracked) files]' \ | |
570 '(--clean)-c[show only files without changes]' \ | |
571 '(-c)--clean[show only files without changes]' \ | |
572 '(--unknown)-u[show only unknown files]' \ | |
573 '(-u)--unknown[show only unknown files]' \ | |
574 '(--ignored)-i[show ignored files]' \ | |
575 '(-i)--ignored[show ignored files]' \ | |
576 '(--no-status)-n[hide status prefix]' \ | |
577 '(-n)--no-status[hide status prefix]' \ | |
578 '(--copies)-C[show source of copied files]' \ | |
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 } | |
1438
c22da894e4cc
zsh completions: new -M, -m arguments for log, etc.
Steve Borho <steve@borho.org>
parents:
1368
diff
changeset
|
585 |
3511 | 586 _hg_cmd_tag() { |
587 _arguments -s -w : $_hg_global_opts \ | |
588 '(--local)-l[make the tag local]' \ | |
589 '(-l)--local[make the tag local]' \ | |
590 '(--message)-m+[message for tag commit log entry]:message:' \ | |
591 '(-m)--message[message for tag commit log entry]:message:' \ | |
592 '(--date)-d+[record datecode as commit date]:date code:' \ | |
593 '(-d)--date[record datecode as commit date]:date code:' \ | |
594 '(--user)-u+[record user as commiter]:user:' \ | |
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 } | |
1438
c22da894e4cc
zsh completions: new -M, -m arguments for log, etc.
Steve Borho <steve@borho.org>
parents:
1368
diff
changeset
|
600 |
3511 | 601 _hg_cmd_tip() { |
602 _arguments -s -w : $_hg_global_opts $_hg_style_opts \ | |
603 '(--patch)-p[show patch]' \ | |
604 '(-p)--patch[show patch]' | |
605 } | |
1438
c22da894e4cc
zsh completions: new -M, -m arguments for log, etc.
Steve Borho <steve@borho.org>
parents:
1368
diff
changeset
|
606 |
3511 | 607 _hg_cmd_unbundle() { |
608 _arguments -s -w : $_hg_global_opts \ | |
609 '(--update)-u[update to new tip if changesets were unbundled]' \ | |
610 '(-u)--update[update to new tip if changesets were unbundled]' \ | |
611 ':files:_files' | |
612 } | |
1362 | 613 |
3511 | 614 _hg_cmd_update() { |
615 _arguments -s -w : $_hg_global_opts \ | |
616 '(--clean)-C[overwrite locally modified files]' \ | |
617 '(-C)--clean[overwrite locally modified files]' \ | |
618 '(--force)-f[force a merge with outstanding changes]' \ | |
619 '(-f)--force[force a merge with outstanding changes]' \ | |
620 ':revision:_hg_tags' | |
621 } | |
1362 | 622 |
3511 | 623 # HGK |
624 _hg_cmd_view() { | |
625 _arguments -s -w : $_hg_global_opts \ | |
626 '(--limit)-l+[limit number of changes displayed]:' \ | |
627 '(-l)--limit[limit number of changes displayed]:' \ | |
628 ':revision range:_hg_tags' | |
629 } | |
1362 | 630 |
3511 | 631 # MQ |
632 _hg_cmd_qdelete() { | |
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 } | |
1362 | 640 |
3511 | 641 _hg_cmd_qheader() { |
642 _arguments -s -w : $_hg_global_opts \ | |
643 ':patch:_hg_qseries' | |
644 } | |
1362 | 645 |
3511 | 646 _hg_cmd_qnew() { |
647 _arguments -s -w : $_hg_global_opts $_hg_commit_opts \ | |
648 '(--force)-f[import uncommitted changes into patch]' \ | |
649 '(-f)--force[import uncommitted changes into patch]' \ | |
650 ':patch:' | |
651 } | |
1368
d1d605d1e839
Fix completion function for 'hg pull'. Fix truncation bug and remove tabs.
Steve Borho <steve@borho.org>
parents:
1365
diff
changeset
|
652 |
3511 | 653 _hg_cmd_qpop() { |
654 _arguments -s -w : $_hg_global_opts \ | |
655 '(--all :)-a[pop all patches]' \ | |
656 '(-a :)--all[pop all patches]' \ | |
657 '(--name)-n+[queue name to pop]:' \ | |
658 '(-n)--name[queue name to pop]:' \ | |
659 '(--force)-f[forget any local changes]' \ | |
660 '(-f)--force[forget any local changes]' \ | |
661 ':patch:_hg_qapplied' | |
662 } | |
3482
46958e428fcd
zsh completion: basic mq support
Brendan Cully <brendan@kublai.com>
parents:
1544
diff
changeset
|
663 |
3511 | 664 _hg_cmd_qpush() { |
665 _arguments -s -w : $_hg_global_opts \ | |
666 '(--all :)-a[apply all patches]' \ | |
667 '(-a :)--all[apply all patches]' \ | |
668 '(--list)-l[list patch name in commit text]' \ | |
669 '(-l)--list[list patch name in commit text]' \ | |
670 '(--merge)-m+[merge from another queue]:' \ | |
671 '(-m)--merge[merge from another queue]:' \ | |
672 '(--name)-n+[merge queue name]:' \ | |
673 '(-n)--name[merge queue name]:' \ | |
674 '(--force)-f[apply if the patch has rejects]' \ | |
675 '(-f)--force[apply if the patch has rejects]' \ | |
676 ':patch:_hg_qunapplied' | |
677 } | |
3482
46958e428fcd
zsh completion: basic mq support
Brendan Cully <brendan@kublai.com>
parents:
1544
diff
changeset
|
678 |
3511 | 679 _hg_cmd_qrefresh() { |
680 _arguments -s -w : $_hg_global_opts $_hg_pat_opts $_hg_commit_opts \ | |
681 '(--git)-g[use git extended diff format]' \ | |
682 '(-g)--git[use git extended diff format]' \ | |
683 '(--short)-s[short refresh]' \ | |
684 '(-s)--short[short refresh]' \ | |
685 '*:files:_files -W $(_hg_cmd root)' | |
686 } | |
3482
46958e428fcd
zsh completion: basic mq support
Brendan Cully <brendan@kublai.com>
parents:
1544
diff
changeset
|
687 |
3511 | 688 _hg_cmd_strip() { |
689 _arguments -s -w : $_hg_global_opts \ | |
690 '(--force)-f[force multi-head removal]' \ | |
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 } | |
3487
1b9494d2b070
zsh: expand tags lazily
Brendan Cully <brendan@kublai.com>
parents:
3482
diff
changeset
|
698 |
3511 | 699 _hg "$@" |