##// END OF EJS Templates
zsh completion: basic mq support
Brendan Cully -
r3487:46958e42 default
parent child Browse files
Show More
@@ -1,425 +1,481 b''
1 #compdef hg
1 #compdef hg
2
2
3 # Zsh completion script for mercurial. Rename this file to _hg and copy
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
4 # it into your zsh function path (/usr/share/zsh/site-functions for
5 # instance)
5 # instance)
6 #
6 #
7 # Copyright (C) 2005 Steve Borho
7 # Copyright (C) 2005 Steve Borho
8 #
8 #
9 # This is free software; you can redistribute it and/or modify it under
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
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
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 typeset -A opt_args
17 local subcmds repos tags newFiles addedFiles includeExclude
17 local subcmds repos tags newFiles addedFiles includeExclude commitMessage
18
19 _mq_state () {
20 case "$state" in
21 (qapplied)
22 compadd $(hg qapplied)
23 ;;
24 (qunapplied)
25 compadd $(hg qunapplied)
26 ;;
27 esac
28 }
18
29
19 tags=($(hg tags 2> /dev/null | sed -e 's/[0-9]*:[a-f0-9]\{40\}$//; s/ *$//'))
30 tags=($(hg tags 2> /dev/null | sed -e 's/[0-9]*:[a-f0-9]\{40\}$//; s/ *$//'))
20 subcmds=($(hg -v help | sed -e '1,/^list of commands:/d' \
31 subcmds=($(hg -v help | sed -e '1,/^list of commands:/d' \
21 -e '/^global options:/,$d' -e '/^ [^ ]/!d; s/[,:].*//g;'))
32 -e '/^global options:/,$d' -e '/^ [^ ]/!d; s/[,:].*//g;'))
22
33
23 # A lot of commands have these arguments
34 # A lot of commands have these arguments
24 includeExclude=(
35 includeExclude=(
25 '*-I-[include names matching the given patterns]:dir:_files -W $(hg root) -/'
36 '*-I-[include names matching the given patterns]:dir:_files -W $(hg root) -/'
26 '*--include-[include names matching the given patterns]:dir:_files -W $(hg root) -/'
37 '*--include-[include names matching the given patterns]:dir:_files -W $(hg root) -/'
27 '*-X-[exclude names matching the given patterns]:dir:_files -W $(hg root) -/'
38 '*-X-[exclude names matching the given patterns]:dir:_files -W $(hg root) -/'
28 '*--exclude-[exclude names matching the given patterns]:dir:_files -W $(hg root) -/')
39 '*--exclude-[exclude names matching the given patterns]:dir:_files -W $(hg root) -/')
29
40
41 commitMessage=(
42 '(-m --message -l --logfile --edit)-e[edit commit message]'
43 '(-m --message -l --logfile -e)--edit[edit commit message]'
44 '(-e --edit -l --logfile --message)-m[use <text> as commit message]:message:'
45 '(-e --edit -l --logfile -m)--message[use <text> as commit message]:message:'
46 '(-e --edit -m --message --logfile)-l[read the commit message from <file>]:log file:_files'
47 '(-e --edit -m --message -l)--logfile[read the commit message from <file>]:log file:_files')
48
30 if [[ $service == "hg" ]]; then
49 if [[ $service == "hg" ]]; then
31 _arguments -C -A "-*" \
50 _arguments -C -A "-*" \
32 '(--repository)-R[repository root directory]:root:_files -/' \
51 '(--repository)-R[repository root directory]:root:_files -/' \
33 '(-R)--repository[repository root directory]:root:_files -/' \
52 '(-R)--repository[repository root directory]:root:_files -/' \
34 '--cwd[change working directory]:new working directory:_files -/' \
53 '--cwd[change working directory]:new working directory:_files -/' \
35 '(--noninteractive)-y[do not prompt, assume yes for any required answers]' \
54 '(--noninteractive)-y[do not prompt, assume yes for any required answers]' \
36 '(-y)--noninteractive[do not prompt, assume yes for any required answers]' \
55 '(-y)--noninteractive[do not prompt, assume yes for any required answers]' \
37 '(--verbose)-v[enable additional output]' \
56 '(--verbose)-v[enable additional output]' \
38 '(-v)--verbose[enable additional output]' \
57 '(-v)--verbose[enable additional output]' \
39 '(--quiet)-q[suppress output]' \
58 '(--quiet)-q[suppress output]' \
40 '(-q)--quiet[suppress output]' \
59 '(-q)--quiet[suppress output]' \
41 '(--help)-h[display help and exit]' \
60 '(--help)-h[display help and exit]' \
42 '(-h)--help[display help and exit]' \
61 '(-h)--help[display help and exit]' \
43 '--debug[debug mode]' \
62 '--debug[debug mode]' \
44 '--debugger[start debugger]' \
63 '--debugger[start debugger]' \
45 '--traceback[print traceback on exception]' \
64 '--traceback[print traceback on exception]' \
46 '--time[time how long the command takes]' \
65 '--time[time how long the command takes]' \
47 '--profile[profile]' \
66 '--profile[profile]' \
48 '--version[output version information and exit]' \
67 '--version[output version information and exit]' \
49 '*::command:->subcmd' && return 0
68 '*::command:->subcmd' && return 0
50
69
51 if (( CURRENT == 1 )); then
70 if (( CURRENT == 1 )); then
52 _wanted commands expl 'hg command' compadd -a subcmds
71 _wanted commands expl 'hg command' compadd -a subcmds
53 return
72 return
54 fi
73 fi
55 service="$words[1]"
74 service="$words[1]"
56 curcontext="${curcontext%:*}=$service:"
75 curcontext="${curcontext%:*}=$service:"
57 fi
76 fi
58
77
59 case $service in
78 case $service in
60 (add)
79 (add)
61 newFiles=(${(ps:\0:)"$(hg status -0un .)"})
80 newFiles=(${(ps:\0:)"$(hg status -0un .)"})
62 _arguments $includeExclude \
81 _arguments $includeExclude \
63 '*:file:->unknown'
82 '*:file:->unknown'
64 _wanted files expl 'unknown files' compadd -a newFiles
83 _wanted files expl 'unknown files' compadd -a newFiles
65 ;;
84 ;;
66
85
67 (addremove)
86 (addremove)
68 _arguments $includeExclude \
87 _arguments $includeExclude \
69 '*:directories:_files -/' # assume they want to add/remove a dir
88 '*:directories:_files -/' # assume they want to add/remove a dir
70 ;;
89 ;;
71
90
72 (forget)
91 (forget)
73 addedFiles=(${(ps:\0:)"$(hg status -0an .)"})
92 addedFiles=(${(ps:\0:)"$(hg status -0an .)"})
74 _arguments $includeExclude \
93 _arguments $includeExclude \
75 '*:file:->added'
94 '*:file:->added'
76 _wanted files expl 'newly added files' compadd -a addedFiles
95 _wanted files expl 'newly added files' compadd -a addedFiles
77 ;;
96 ;;
78
97
79 (remove|rm)
98 (remove|rm)
80 _arguments $includeExclude \
99 _arguments $includeExclude \
81 '*:file:_files'
100 '*:file:_files'
82 ;;
101 ;;
83
102
84 (copy|cp)
103 (copy|cp)
85 _arguments $includeExclude \
104 _arguments $includeExclude \
86 '(--after)-A[record a copy that has already occurred]' \
105 '(--after)-A[record a copy that has already occurred]' \
87 '(-A)--after[record a copy that has already occurred]' \
106 '(-A)--after[record a copy that has already occurred]' \
88 '(--force)-f[forcibly copy over an existing managed file]' \
107 '(--force)-f[forcibly copy over an existing managed file]' \
89 '(-f)--force[forcibly copy over an existing managed file]' \
108 '(-f)--force[forcibly copy over an existing managed file]' \
90 '(--parents)-p[append source path to dest]' \
109 '(--parents)-p[append source path to dest]' \
91 '(-p)--parents[append source path to dest]' \
110 '(-p)--parents[append source path to dest]' \
92 '*:files:_files'
111 '*:files:_files'
93 ;;
112 ;;
94
113
95 (rename|mv)
114 (rename|mv)
96 if (( CURRENT == 2 )); then
115 if (( CURRENT == 2 )); then
97 _arguments $includeExclude \
116 _arguments $includeExclude \
98 '(--after)-A[record a rename that has already occurred]' \
117 '(--after)-A[record a rename that has already occurred]' \
99 '(-A)--after[record a rename that has already occurred]' \
118 '(-A)--after[record a rename that has already occurred]' \
100 '(--force)-f[replace destination if it exists]' \
119 '(--force)-f[replace destination if it exists]' \
101 '(-F)--force[replace destination if it exists]' \
120 '(-F)--force[replace destination if it exists]' \
102 '(--parents)-p[append source path to dest]' \
121 '(--parents)-p[append source path to dest]' \
103 '(-p)--parents[append source path to dest]' \
122 '(-p)--parents[append source path to dest]' \
104 '*:files:_files'
123 '*:files:_files'
105 else
124 else
106 _arguments '*:destination:_files'
125 _arguments '*:destination:_files'
107 fi
126 fi
108 ;;
127 ;;
109
128
110 (diff)
129 (diff)
111 _arguments $includeExclude \
130 _arguments $includeExclude \
112 '*-r[revision]:revision:($tags)' \
131 '*-r[revision]:revision:($tags)' \
113 '*--rev[revision]:revision:($tags)' \
132 '*--rev[revision]:revision:($tags)' \
114 '(--text)-a[treat all files as text]' \
133 '(--text)-a[treat all files as text]' \
115 '(-a)--text[treat all files as text]' \
134 '(-a)--text[treat all files as text]' \
116 '*:file:_files'
135 '*:file:_files'
117 ;;
136 ;;
118
137
119 (status|st)
138 (status|st)
120 _arguments $includeExclude \
139 _arguments $includeExclude \
121 '(--no-status)-n[hide status prefix]' \
140 '(--no-status)-n[hide status prefix]' \
122 '(-n)--no-status[hide status prefix]' \
141 '(-n)--no-status[hide status prefix]' \
123 '(--print0)-0[end filenames with NUL, for use with xargs]' \
142 '(--print0)-0[end filenames with NUL, for use with xargs]' \
124 '(-0)--print0[end filenames with NUL, for use with xargs]' \
143 '(-0)--print0[end filenames with NUL, for use with xargs]' \
125 '(--modified)-m[show only modified files]' \
144 '(--modified)-m[show only modified files]' \
126 '(-m)--modified[show only modified files]' \
145 '(-m)--modified[show only modified files]' \
127 '(--added)-a[show only added files]' \
146 '(--added)-a[show only added files]' \
128 '(-a)--added[show only added files]' \
147 '(-a)--added[show only added files]' \
129 '(--removed)-r[show only removed files]' \
148 '(--removed)-r[show only removed files]' \
130 '(-r)--removed[show only removed files]' \
149 '(-r)--removed[show only removed files]' \
131 '(--unknown)-u[show only unknown files]' \
150 '(--unknown)-u[show only unknown files]' \
132 '(-u)--unknown[show only unknown files]' \
151 '(-u)--unknown[show only unknown files]' \
133 '*:search pattern, then files:_files'
152 '*:search pattern, then files:_files'
134 ;;
153 ;;
135
154
136 (revert)
155 (revert)
137 addedFiles=(${(ps:\0:)"$(hg status -0amrn .)"})
156 addedFiles=(${(ps:\0:)"$(hg status -0amrn .)"})
138 _arguments \
157 _arguments \
139 '(--rev)-r[revision to revert to]:revision:($tags)' \
158 '(--rev)-r[revision to revert to]:revision:($tags)' \
140 '(-r)--rev[revision to revert to]:revision:($tags)' \
159 '(-r)--rev[revision to revert to]:revision:($tags)' \
141 '(--nonrecursive)-n[do not recurse into subdirectories]' \
160 '(--nonrecursive)-n[do not recurse into subdirectories]' \
142 '(-n)--nonrecursive[do not recurse into subdirectories]' \
161 '(-n)--nonrecursive[do not recurse into subdirectories]' \
143 '*:file:->modified'
162 '*:file:->modified'
144 _wanted files expl 'mofified files' compadd -a addedFiles
163 _wanted files expl 'mofified files' compadd -a addedFiles
145 ;;
164 ;;
146
165
147 (commit|ci)
166 (commit|ci)
148 addedFiles=(${(ps:\0:)"$(hg status -0amrn .)"})
167 addedFiles=(${(ps:\0:)"$(hg status -0amrn .)"})
149 _arguments $includeExclude \
168 _arguments $includeExclude \
150 '(--addremove)-A[run addremove during commit]' \
169 '(--addremove)-A[run addremove during commit]' \
151 '(-A)--addremove[run addremove during commit]' \
170 '(-A)--addremove[run addremove during commit]' \
152 '(--message)-m[use <txt> as commit message]:string:' \
171 '(--message)-m[use <txt> as commit message]:string:' \
153 '(-m)--message[use <txt> as commit message]:string:' \
172 '(-m)--message[use <txt> as commit message]:string:' \
154 '(--logfile)-l[read commit message from <file>]:.log file:_file -g \*.txt' \
173 '(--logfile)-l[read commit message from <file>]:.log file:_file -g \*.txt' \
155 '(-l)--logfile[read commit message from <file>]:.log file:_file -g \*.txt' \
174 '(-l)--logfile[read commit message from <file>]:.log file:_file -g \*.txt' \
156 '(--date)-d[record datecode as commit date]:date code:' \
175 '(--date)-d[record datecode as commit date]:date code:' \
157 '(-d)--date[record datecode as commit date]:date code:' \
176 '(-d)--date[record datecode as commit date]:date code:' \
158 '(--user)-u[record user as commiter]:user:' \
177 '(--user)-u[record user as commiter]:user:' \
159 '(-u)--user[record user as commiter]:user:' \
178 '(-u)--user[record user as commiter]:user:' \
160 '*:file:->modified'
179 '*:file:->modified'
161 _wanted files expl 'mofified files' compadd -a addedFiles
180 _wanted files expl 'mofified files' compadd -a addedFiles
162 ;;
181 ;;
163
182
164 (cat)
183 (cat)
165 _arguments $includeExclude \
184 _arguments $includeExclude \
166 '(--output)-o[print output to file with formatted name]:filespec:' \
185 '(--output)-o[print output to file with formatted name]:filespec:' \
167 '(-o)--output[print output to file with formatted name]:filespec:' \
186 '(-o)--output[print output to file with formatted name]:filespec:' \
168 '(--rev)-r[revision]:revision:($tags)' \
187 '(--rev)-r[revision]:revision:($tags)' \
169 '(-r)--rev[revision]:revision:($tags)' \
188 '(-r)--rev[revision]:revision:($tags)' \
170 '*:file:_files'
189 '*:file:_files'
171 ;;
190 ;;
172
191
173 (annotate)
192 (annotate)
174 _arguments $includeExclude \
193 _arguments $includeExclude \
175 '(--rev)-r[annotate the specified revision]:revision:($tags)' \
194 '(--rev)-r[annotate the specified revision]:revision:($tags)' \
176 '(-r)--rev[annotate the specified revision]:revision:($tags)' \
195 '(-r)--rev[annotate the specified revision]:revision:($tags)' \
177 '(--text)-a[treat all files as text]' \
196 '(--text)-a[treat all files as text]' \
178 '(-a)--text[treat all files as text]' \
197 '(-a)--text[treat all files as text]' \
179 '(--user)-u[list the author]' \
198 '(--user)-u[list the author]' \
180 '(-u)--user[list the author]' \
199 '(-u)--user[list the author]' \
181 '(--changeset)-c[list the changeset]' \
200 '(--changeset)-c[list the changeset]' \
182 '(-c)--changeset[list the changeset]' \
201 '(-c)--changeset[list the changeset]' \
183 '(--number)-n[list the revision number (default)]' \
202 '(--number)-n[list the revision number (default)]' \
184 '(-n)--number[list the revision number (default)]' \
203 '(-n)--number[list the revision number (default)]' \
185 '*:files:_files'
204 '*:files:_files'
186 ;;
205 ;;
187
206
188 (grep)
207 (grep)
189 _arguments $includeExclude \
208 _arguments $includeExclude \
190 '*-r[search in given revision range]:revision:($tags)' \
209 '*-r[search in given revision range]:revision:($tags)' \
191 '*--rev[search in given revision range]:revision:($tags)' \
210 '*--rev[search in given revision range]:revision:($tags)' \
192 '--all[print all revisions with matches]' \
211 '--all[print all revisions with matches]' \
193 '(-print0)-0[end filenames with NUL, for use with xargs]' \
212 '(-print0)-0[end filenames with NUL, for use with xargs]' \
194 '(-0)--print0[end filenames with NUL, for use with xargs]' \
213 '(-0)--print0[end filenames with NUL, for use with xargs]' \
195 '(--ignore-case)-i[ignore case when matching]' \
214 '(--ignore-case)-i[ignore case when matching]' \
196 '(-i)--ignore-case[ignore case when matching]' \
215 '(-i)--ignore-case[ignore case when matching]' \
197 '(--files-with-matches)-l[print names of files and revs that match]' \
216 '(--files-with-matches)-l[print names of files and revs that match]' \
198 '(-l)--files-with-matches[print names of files and revs that match]' \
217 '(-l)--files-with-matches[print names of files and revs that match]' \
199 '(--line-number)-n[print matching line numbers]' \
218 '(--line-number)-n[print matching line numbers]' \
200 '(-n)--line-number[print matching line numbers]' \
219 '(-n)--line-number[print matching line numbers]' \
201 '(--user)-u[print user who committed change]' \
220 '(--user)-u[print user who committed change]' \
202 '(-u)--user[print user who committed change]' \
221 '(-u)--user[print user who committed change]' \
203 '*:search pattern:'
222 '*:search pattern:'
204 ;;
223 ;;
205
224
206 (locate)
225 (locate)
207 _arguments $includeExclude \
226 _arguments $includeExclude \
208 '(--rev)-r[search repository as it stood at revision]:revision:($tags)' \
227 '(--rev)-r[search repository as it stood at revision]:revision:($tags)' \
209 '(-r)--rev[search repository as it stood at revision]:revision:($tags)' \
228 '(-r)--rev[search repository as it stood at revision]:revision:($tags)' \
210 '(--print0)-0[end filenames with NUL, for use with xargs]' \
229 '(--print0)-0[end filenames with NUL, for use with xargs]' \
211 '(-0)--print0[end filenames with NUL, for use with xargs]' \
230 '(-0)--print0[end filenames with NUL, for use with xargs]' \
212 '(--fullpath)-f[print complete paths]' \
231 '(--fullpath)-f[print complete paths]' \
213 '(-f)--fullpath[print complete paths]' \
232 '(-f)--fullpath[print complete paths]' \
214 '*:search pattern:'
233 '*:search pattern:'
215 ;;
234 ;;
216
235
217 (log|history)
236 (log|history)
218 _arguments $includeExclude \
237 _arguments $includeExclude \
219 '*-r[show the specified revision or range]:revision:($tags)' \
238 '*-r[show the specified revision or range]:revision:($tags)' \
220 '*--rev[show the specified revision or range]:revision:($tags)' \
239 '*--rev[show the specified revision or range]:revision:($tags)' \
221 '(--no-merges -M --only-merges)-m[show only merge revisions]' \
240 '(--no-merges -M --only-merges)-m[show only merge revisions]' \
222 '(--no-merges -M -m)--only-merges[show only merge revisions]' \
241 '(--no-merges -M -m)--only-merges[show only merge revisions]' \
223 '(--only-merges -m --no-merges)-M[do not show merge revisions]' \
242 '(--only-merges -m --no-merges)-M[do not show merge revisions]' \
224 '(--only-merges -m -M)--no-merges[do not show merge revisions]' \
243 '(--only-merges -m -M)--no-merges[do not show merge revisions]' \
225 '(--keyword)-k[search for a keyword]:keyword:' \
244 '(--keyword)-k[search for a keyword]:keyword:' \
226 '(-k)--keyword[search for a keyword]:keyword:' \
245 '(-k)--keyword[search for a keyword]:keyword:' \
227 '(--branch)-b[show branches]' \
246 '(--branch)-b[show branches]' \
228 '(-b)--branch[show branches]' \
247 '(-b)--branch[show branches]' \
229 '(--patch)-p[show patch]' \
248 '(--patch)-p[show patch]' \
230 '(-p)--patch[show patch]' \
249 '(-p)--patch[show patch]' \
231 '*:file:_files'
250 '*:file:_files'
232 ;;
251 ;;
233
252
234 (update|checkout|co)
253 (update|checkout|co)
235 _arguments \
254 _arguments \
236 '(--branch)-b[checkout the head of a specific branch]' \
255 '(--branch)-b[checkout the head of a specific branch]' \
237 '(-b)--branch[checkout the head of a specific branch]' \
256 '(-b)--branch[checkout the head of a specific branch]' \
238 '(-C --clean --merge)-m[allow merging of branches]' \
257 '(-C --clean --merge)-m[allow merging of branches]' \
239 '(-C --clean -m)--merge[allow merging of branches]' \
258 '(-C --clean -m)--merge[allow merging of branches]' \
240 '(-m --merge --clean)-C[overwrite locally modified files]' \
259 '(-m --merge --clean)-C[overwrite locally modified files]' \
241 '(-m --merge -C)--clean[overwrite locally modified files]' \
260 '(-m --merge -C)--clean[overwrite locally modified files]' \
242 '*:revision or tag:($tags)'
261 '*:revision or tag:($tags)'
243 ;;
262 ;;
244
263
245 (tag)
264 (tag)
246 _arguments \
265 _arguments \
247 '(--local)-l[make the tag local]' \
266 '(--local)-l[make the tag local]' \
248 '(-l)--local[make the tag local]' \
267 '(-l)--local[make the tag local]' \
249 '(--message)-m[message for tag commit log entry]:string:' \
268 '(--message)-m[message for tag commit log entry]:string:' \
250 '(-m)--message[message for tag commit log entry]:string:' \
269 '(-m)--message[message for tag commit log entry]:string:' \
251 '(--date)-d[record datecode as commit date]:date code:' \
270 '(--date)-d[record datecode as commit date]:date code:' \
252 '(-d)--date[record datecode as commit date]:date code:' \
271 '(-d)--date[record datecode as commit date]:date code:' \
253 '(--user)-u[record user as commiter]:user:' \
272 '(--user)-u[record user as commiter]:user:' \
254 '(-u)--user[record user as commiter]:user:' \
273 '(-u)--user[record user as commiter]:user:' \
255 '*:name, then revision:($tags)'
274 '*:name, then revision:($tags)'
256 ;;
275 ;;
257
276
258 (clone)
277 (clone)
259 if (( CURRENT == 2 )); then
278 if (( CURRENT == 2 )); then
260 repos=( $(hg paths | sed -e 's/^.*= //') )
279 repos=( $(hg paths | sed -e 's/^.*= //') )
261 _arguments \
280 _arguments \
262 '(--no-update)-U[do not update the new working directory]' \
281 '(--no-update)-U[do not update the new working directory]' \
263 '(-U)--no-update[do not update the new working directory]' \
282 '(-U)--no-update[do not update the new working directory]' \
264 '(--ssh)-e[specify ssh command to use]:string:' \
283 '(--ssh)-e[specify ssh command to use]:string:' \
265 '(-e)--ssh[specify ssh command to use]:string:' \
284 '(-e)--ssh[specify ssh command to use]:string:' \
266 '--pull[use pull protocol to copy metadata]' \
285 '--pull[use pull protocol to copy metadata]' \
267 '--remotecmd[specify hg command to run on the remote side]:remote hg:' \
286 '--remotecmd[specify hg command to run on the remote side]:remote hg:' \
268 '*:local repo:_files -/'
287 '*:local repo:_files -/'
269 _wanted source expl 'source repository' compadd -a repos
288 _wanted source expl 'source repository' compadd -a repos
270 elif (( CURRENT == 3 )); then
289 elif (( CURRENT == 3 )); then
271 _arguments '*:dest repo:_files -/'
290 _arguments '*:dest repo:_files -/'
272 fi
291 fi
273 ;;
292 ;;
274
293
275 (rawcommit)
294 (rawcommit)
276 _arguments \
295 _arguments \
277 '(--parent)-p[parent revision]:revision:($tags)' \
296 '(--parent)-p[parent revision]:revision:($tags)' \
278 '(-p)--parent[parent revision]:revision:($tags)' \
297 '(-p)--parent[parent revision]:revision:($tags)' \
279 '(--date)-d[record datecode as commit date]:date code:' \
298 '(--date)-d[record datecode as commit date]:date code:' \
280 '(-d)--date[record datecode as commit date]:date code:' \
299 '(-d)--date[record datecode as commit date]:date code:' \
281 '(--user)-u[record user as commiter]:user:' \
300 '(--user)-u[record user as commiter]:user:' \
282 '(-u)--user[record user as commiter]:user:' \
301 '(-u)--user[record user as commiter]:user:' \
283 '(--message)-m[use <txt> as commit message]:string:' \
302 '(--message)-m[use <txt> as commit message]:string:' \
284 '(-m)--message[use <txt> as commit message]:string:' \
303 '(-m)--message[use <txt> as commit message]:string:' \
285 '(--logfile)-l[read commit message from <file>]:.log file:_file -g \*.txt' \
304 '(--logfile)-l[read commit message from <file>]:.log file:_file -g \*.txt' \
286 '(-l)--logfile[read commit message from <file>]:.log file:_file -g \*.txt' \
305 '(-l)--logfile[read commit message from <file>]:.log file:_file -g \*.txt' \
287 '(--files)-F[file list]:file list:_files' \
306 '(--files)-F[file list]:file list:_files' \
288 '(-F)--files[file list]:file list:_files' \
307 '(-F)--files[file list]:file list:_files' \
289 '*:files to commit:_files'
308 '*:files to commit:_files'
290 ;;
309 ;;
291
310
292 (bundle)
311 (bundle)
293 if (( CURRENT == 2 )); then
312 if (( CURRENT == 2 )); then
294 _arguments '*:changegroup file:_files -g \*.hg'
313 _arguments '*:changegroup file:_files -g \*.hg'
295 elif (( CURRENT == 3 )); then
314 elif (( CURRENT == 3 )); then
296 _arguments '*:other repo:_files -/'
315 _arguments '*:other repo:_files -/'
297 fi
316 fi
298 ;;
317 ;;
299
318
300 (unbundle)
319 (unbundle)
301 _arguments '*:changegroup .hg file:_files -g \*.hg'
320 _arguments '*:changegroup .hg file:_files -g \*.hg'
302 ;;
321 ;;
303
322
304 (incoming)
323 (incoming)
305 _arguments \
324 _arguments \
306 '(--patch)-p[show patch]' \
325 '(--patch)-p[show patch]' \
307 '(-p)--patch[show patch]' \
326 '(-p)--patch[show patch]' \
308 '(--no-merges)-M[do not show merge revisions]' \
327 '(--no-merges)-M[do not show merge revisions]' \
309 '(-M)--no-merges[do not show merge revisions]' \
328 '(-M)--no-merges[do not show merge revisions]' \
310 '(--newest-first)-n[show newest record first]' \
329 '(--newest-first)-n[show newest record first]' \
311 '(-n)--newest-first[show newest record first]' \
330 '(-n)--newest-first[show newest record first]' \
312 '*:mercurial repository:_files -/'
331 '*:mercurial repository:_files -/'
313 ;;
332 ;;
314
333
315 (import|patch)
334 (import|patch)
316 _arguments \
335 _arguments \
317 '(--strip)-p[directory strip option for patch (default: 1)]:count:' \
336 '(--strip)-p[directory strip option for patch (default: 1)]:count:' \
318 '(-p)--strip[directory strip option for patch (default: 1)]:count:' \
337 '(-p)--strip[directory strip option for patch (default: 1)]:count:' \
319 '(--force)-f[skip check for outstanding uncommitted changes]' \
338 '(--force)-f[skip check for outstanding uncommitted changes]' \
320 '(-f)--force[skip check for outstanding uncommitted changes]' \
339 '(-f)--force[skip check for outstanding uncommitted changes]' \
321 '(--base)-b[base directory to read patches from]:file:_files -W $(hg root) -/' \
340 '(--base)-b[base directory to read patches from]:file:_files -W $(hg root) -/' \
322 '(-b)--base[base directory to read patches from]:file:_files -W $(hg root) -/' \
341 '(-b)--base[base directory to read patches from]:file:_files -W $(hg root) -/' \
323 '*:patch file:_files'
342 '*:patch file:_files'
324 ;;
343 ;;
325
344
326 (pull)
345 (pull)
327 repos=( $(hg paths | sed -e 's/^.*= //') )
346 repos=( $(hg paths | sed -e 's/^.*= //') )
328 _arguments \
347 _arguments \
329 '(--update)-u[update working directory to tip after pull]' \
348 '(--update)-u[update working directory to tip after pull]' \
330 '(-u)--update[update working directory to tip after pull]' \
349 '(-u)--update[update working directory to tip after pull]' \
331 '(--ssh)-e[specify ssh command to use]:ssh command:' \
350 '(--ssh)-e[specify ssh command to use]:ssh command:' \
332 '(-e)--ssh[specify ssh command to use]:ssh command:' \
351 '(-e)--ssh[specify ssh command to use]:ssh command:' \
333 '--remotecmd[specify hg command to run on the remote side]:remote hg:' \
352 '--remotecmd[specify hg command to run on the remote side]:remote hg:' \
334 '*:local repo:_files -/'
353 '*:local repo:_files -/'
335 _wanted source expl 'source repository' compadd -a repos
354 _wanted source expl 'source repository' compadd -a repos
336 ;;
355 ;;
337
356
338 (outgoing)
357 (outgoing)
339 _arguments \
358 _arguments \
340 '(--patch)-p[show patch]' \
359 '(--patch)-p[show patch]' \
341 '(-p)--patch[show patch]' \
360 '(-p)--patch[show patch]' \
342 '(--no-merges)-M[do not show merge revisions]' \
361 '(--no-merges)-M[do not show merge revisions]' \
343 '(-M)--no-merges[do not show merge revisions]' \
362 '(-M)--no-merges[do not show merge revisions]' \
344 '(--newest-first)-n[show newest record first]' \
363 '(--newest-first)-n[show newest record first]' \
345 '(-n)--newest-first[show newest record first]' \
364 '(-n)--newest-first[show newest record first]' \
346 '*:local repo:_files -/'
365 '*:local repo:_files -/'
347 _wanted source expl 'source repository' compadd -a repos
366 _wanted source expl 'source repository' compadd -a repos
348 ;;
367 ;;
349
368
350 (export)
369 (export)
351 _arguments \
370 _arguments \
352 '(--outout)-o[print output to file with formatted name]:filespec:' \
371 '(--outout)-o[print output to file with formatted name]:filespec:' \
353 '(-o)--output[print output to file with formatted name]:filespec:' \
372 '(-o)--output[print output to file with formatted name]:filespec:' \
354 '(--text)-a[treat all files as text]' \
373 '(--text)-a[treat all files as text]' \
355 '(-a)--text[treat all files as text]' \
374 '(-a)--text[treat all files as text]' \
356 '*:revision:->revs'
375 '*:revision:->revs'
357 _wanted revs expl 'revision or tag' compadd -a tags
376 _wanted revs expl 'revision or tag' compadd -a tags
358 ;;
377 ;;
359
378
360 (push)
379 (push)
361 repos=( $(hg paths | sed -e 's/^.*= //') )
380 repos=( $(hg paths | sed -e 's/^.*= //') )
362 _arguments \
381 _arguments \
363 '(--force)-f[force push]' \
382 '(--force)-f[force push]' \
364 '(-f)--force[force push]' \
383 '(-f)--force[force push]' \
365 '(--ssh)-e[specify ssh command to use]:ssh command:' \
384 '(--ssh)-e[specify ssh command to use]:ssh command:' \
366 '(-e)--ssh[specify ssh command to use]:ssh command:' \
385 '(-e)--ssh[specify ssh command to use]:ssh command:' \
367 '--remotecmd[specify hg command to run on the remote side]:remote hg:' \
386 '--remotecmd[specify hg command to run on the remote side]:remote hg:' \
368 '*:local repo:_files -/'
387 '*:local repo:_files -/'
369 _wanted source expl 'source repository' compadd -a repos
388 _wanted source expl 'source repository' compadd -a repos
370 ;;
389 ;;
371
390
372 (serve)
391 (serve)
373 _arguments \
392 _arguments \
374 '(--accesslog)-A[name of access log file]:log file:_files' \
393 '(--accesslog)-A[name of access log file]:log file:_files' \
375 '(-A)--accesslog[name of access log file]:log file:_files' \
394 '(-A)--accesslog[name of access log file]:log file:_files' \
376 '(--errorlog)-E[name of error log file]:log file:_files' \
395 '(--errorlog)-E[name of error log file]:log file:_files' \
377 '(-E)--errorlog[name of error log file]:log file:_files' \
396 '(-E)--errorlog[name of error log file]:log file:_files' \
378 '(--port)-p[listen port]:listen port:' \
397 '(--port)-p[listen port]:listen port:' \
379 '(-p)--port[listen port]:listen port:' \
398 '(-p)--port[listen port]:listen port:' \
380 '(--address)-a[interface address]:interface address:' \
399 '(--address)-a[interface address]:interface address:' \
381 '(-a)--address[interface address]:interface address:' \
400 '(-a)--address[interface address]:interface address:' \
382 '(--name)-n[name to show in web pages]:repository name:' \
401 '(--name)-n[name to show in web pages]:repository name:' \
383 '(-n)--name[name to show in web pages]:repository name:' \
402 '(-n)--name[name to show in web pages]:repository name:' \
384 '(--templates)-t[web template directory]:template dir:_files -/' \
403 '(--templates)-t[web template directory]:template dir:_files -/' \
385 '(-t)--templates[web template directory]:template dir:_files -/' \
404 '(-t)--templates[web template directory]:template dir:_files -/' \
386 '--style[web template style]:style' \
405 '--style[web template style]:style' \
387 '--stdio[for remote clients]' \
406 '--stdio[for remote clients]' \
388 '(--ipv6)-6[use IPv6 in addition to IPv4]' \
407 '(--ipv6)-6[use IPv6 in addition to IPv4]' \
389 '(-6)--ipv6[use IPv6 in addition to IPv4]'
408 '(-6)--ipv6[use IPv6 in addition to IPv4]'
390 ;;
409 ;;
391
410
392 (help)
411 (help)
393 _wanted commands expl 'hg command' compadd -a subcmds
412 _wanted commands expl 'hg command' compadd -a subcmds
394 ;;
413 ;;
395
414
396 (heads)
415 (heads)
397 _arguments \
416 _arguments \
398 '(--branches)-b[find branch info]' \
417 '(--branches)-b[find branch info]' \
399 '(-b)--branches[find branch info]'
418 '(-b)--branches[find branch info]'
400 ;;
419 ;;
401
420
402 (paths)
421 (paths)
403 _arguments '*:symbolic name:(default default-push)'
422 _arguments '*:symbolic name:(default default-push)'
404 ;;
423 ;;
405
424
406 (init)
425 (init)
407 _arguments '*:new repo directory:_files -/'
426 _arguments '*:new repo directory:_files -/'
408 ;;
427 ;;
409
428
410 (manifest)
429 (manifest)
411 _arguments '*:revision:($tags)'
430 _arguments '*:revision:($tags)'
412 ;;
431 ;;
413
432
414 (parents)
433 (parents)
415 _arguments '*:revision:($tags)'
434 _arguments '*:revision:($tags)'
416 ;;
435 ;;
417
436
418 (identify|recover|root|undo|view|verify|version|ct|tags)
437 (identify|recover|root|undo|view|verify|version|ct|tags)
419 # no arguments for these commands
438 # no arguments for these commands
420 ;;
439 ;;
421
440
441 # MQ commands
442 (qdel*|qrm|qrem*)
443 _arguments \
444 {-k,--keep}'[keep patch file]' \
445 {-r,--rev}'[revision]:applied patch:->qapplied' \
446 '*:unapplied patches:->qunapplied'
447 _mq_state
448 ;;
449
450 (qnew)
451 _arguments $commitMessage \
452 {-f,--force}'[import uncommitted changes into patch]' \
453 ':patch name:'
454 ;;
455
456 (qpo*)
457 applied=( $(hg qapplied) )
458 _arguments \
459 (1){-a,--all}'[pop all patches]' \
460 {-f,--force}'[forget any local changes]' \
461 ':applied patch:->qapplied'
462 _mq_state
463 ;;
464
465 (qpu*)
466 _arguments \
467 (1){-a,--all}'[apply all patches]' \
468 {-f,--force}'[apply if the patch has rejects]' \
469 ':unapplied patch:->qunapplied'
470 _mq_state
471 ;;
472 (qref*)
473 _arguments $commitMessage $includeExclude \
474 {-g,--git}'[use git extended diff format]' \
475 {-s,--short}'[short refresh]'
476 ;;
477
422 (*)
478 (*)
423 _message "unknown hg command completion: $service"
479 _message "unknown hg command completion: $service"
424 ;;
480 ;;
425 esac
481 esac
General Comments 0
You need to be logged in to leave comments. Login now