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