Mercurial > hg > mercurial-crew-with-dirclash
annotate contrib/zsh_completion @ 1365:74cf45f8bc19
Suppress warning in zsh_completion script
author | Mikael Berthe <mikael@lilotux.net> |
---|---|
date | Fri, 30 Sep 2005 11:06:13 -0700 |
parents | 246e1a00af6f |
children | d1d605d1e839 |
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 | |
16 typeset -A opt_args | |
17 local subcmds repos tags newFiles addedFiles | |
18 | |
1365
74cf45f8bc19
Suppress warning in zsh_completion script
Mikael Berthe <mikael@lilotux.net>
parents:
1362
diff
changeset
|
19 tags=($(hg tags 2> /dev/null | sed -e 's/[0-9]*:[a-f0-9]\{40\}$//; s/ *$// |
1362 | 20 subcmds=($(hg -v help | sed -e '1,/^list of commands:/d' \ |
21 -e '/^global options:/,$d' -e '/^ [^ ]/!d; s/[,:]//g;')) | |
22 | |
23 if [[ $service == "hg" ]]; then | |
24 _arguments -C -A "-*" \ | |
25 '-R+[repository root directory]' \ | |
26 '-y[non-interactive]' \ | |
27 '-v[verbose]' \ | |
28 '-q[quiet]' \ | |
29 '--time[time how long the command takes]' \ | |
30 '--profile[profile]' \ | |
31 '-h-[display help and exit]' \ | |
32 '--version-[output version information and exit]' \ | |
33 '--cwd[change working directory]:new working directory:_files -/' \ | |
34 '*::command:->subcmd' && return 0 | |
35 | |
36 if (( CURRENT == 1 )); then | |
37 _wanted commands expl 'hg command' compadd -a subcmds | |
38 return | |
39 fi | |
40 service="$words[1]" | |
41 curcontext="${curcontext%:*}=$service:" | |
42 fi | |
43 | |
44 case $service in | |
45 (addremove) | |
46 _arguments \ | |
47 '-I[include path in search]:dir:_files -W $(hg root) -/' \ | |
48 '-X[exclude path in search]:dir:_files -W $(hg root) -/' \ | |
49 '*:directories:_files -/' # assume they want to add/remove a dir | |
50 ;; | |
51 | |
52 (add) | |
53 newFiles=( $(hg status -un) ) | |
54 _arguments \ | |
55 '-I[include path in search]:dir:_files -W $(hg root) -/' \ | |
56 '-X[exclude path in search]:dir:_files -W $(hg root) -/' | |
57 _wanted files expl 'unknown files' compadd -a newFiles | |
58 ;; | |
59 | |
60 (remove|rm) | |
61 _arguments \ | |
62 '-I[include path in search]:dir:_files -W $(hg root) -/' \ | |
63 '-X[exclude path in search]:dir:_files -W $(hg root) -/' \ | |
64 '*:file:_files' | |
65 ;; | |
66 | |
67 (cat) | |
68 _arguments \ | |
69 '-I[include path in search]:dir:_files -W $(hg root) -/' \ | |
70 '-X[exclude path in search]:dir:_files -W $(hg root) -/' \ | |
71 '-o[output to file]:file:' \ | |
72 '-r[revision]:revision:($tags)' \ | |
73 '*:file:_files' | |
74 ;; | |
75 | |
76 (checkout|update|up|co) | |
77 _arguments \ | |
78 '-b[checkout the head of a specific branch]:tag:' \ | |
79 '-m[allow merging of conflicts]' \ | |
80 '-C[overwrite locally modified files]' \ | |
81 '*:revision:->revs' | |
82 _wanted revs expl 'revision or tag' compadd -a tags | |
83 ;; | |
84 | |
85 (commit|ci) | |
86 _arguments \ | |
87 '-I[include path in search]:dir:_files -W $(hg root) -/' \ | |
88 '-X[exclude path in search]:dir:_files -W $(hg root) -/' \ | |
89 '-A[run addremove during commit]' \ | |
90 '-m[commit message]:string:' \ | |
91 '-d[date code]:string:' \ | |
92 '-u[user]:string:' \ | |
93 '*:file:_files' | |
94 ;; | |
95 | |
96 (tag) | |
97 _arguments \ | |
98 '-l[make the tag local]:' \ | |
99 '-m[commit message]:string:' \ | |
100 '-d[date code]:string:' \ | |
101 '-u[user]:string:' \ | |
102 '*:name and revision:' | |
103 ;; | |
104 | |
105 (clone) | |
106 _arguments \ | |
107 '-U[skip update after cloning]' \ | |
108 '-e[ssh command]:string:' \ | |
109 '--pull[use pull protocol to copy metadata]' \ | |
110 '--remotecmd[remote hg command]:command:->subcmd' | |
111 ;; | |
112 | |
113 (export) | |
114 _arguments \ | |
115 '-o[output to a file]:file:' \ | |
116 '-a-[tread all files as text]' \ | |
117 '*:revision:->revs' | |
118 _wanted revs expl 'revision or tag' compadd -a tags | |
119 ;; | |
120 | |
121 (heads) | |
122 _arguments '-b[find branch info]' | |
123 ;; | |
124 | |
125 (outgoing|out) | |
126 _arguments '-p[show patch]' | |
127 ;; | |
128 | |
129 (paths) | |
130 _arguments '*:symbolic name:(default default-push)' | |
131 ;; | |
132 | |
133 (init) | |
134 _arguments '*:new repo directory:_files -/' | |
135 ;; | |
136 | |
137 (unbundle) | |
138 _arguments '*:changegroup file:_files' | |
139 ;; | |
140 | |
141 (manifest) | |
142 _arguments \ | |
143 '*:revision:->revs' | |
144 _wanted revs expl 'revision or tag' compadd -a tags | |
145 ;; | |
146 | |
147 (parents) | |
148 _arguments \ | |
149 '*:revision:->revs' | |
150 _wanted revs expl 'revision or tag' compadd -a tags | |
151 ;; | |
152 | |
153 (serve) | |
154 _arguments \ | |
155 '-A[access log file]:log file:_files' \ | |
156 '-E[error log file]:log file:_files' \ | |
157 '-p[listen port]:listen port:' \ | |
158 '-a[interface address]:interface address:' \ | |
159 '-n[repository name]:repository name:' \ | |
160 '--stdio[for remote clients]' \ | |
161 '-t[template directory]:template dir:_files -/' \ | |
162 '--style[template style]:style' \ | |
163 '-6[use IPv6 in addition to IPv4]' | |
164 ;; | |
165 | |
166 (pull) | |
167 repos=( $(hg paths | sed -e 's/^.*= //') ) | |
168 _arguments \ | |
169 '-u[update working directory]' \ | |
170 '-e[ssh command]:remote commands:' \ | |
171 '--remotecmd[remote hg command]:command:->subcmd' \ | |
172 '*:pull source:->repo' | |
173 _wanted source expl 'source repository' compadd -a repos | |
174 ;; | |
175 | |
176 (pull) | |
177 repos=( $(hg paths | sed -e 's/^.*= //') ) | |
178 _arguments \ | |
179 '-f[force push]' \ | |
180 '-e[ssh command]:remote commands:' \ | |
181 '--remotecmd[remote hg command]:command:->subcmd' \ | |
182 '*:pull source:->repo' | |
183 _wanted source expl 'source repository' compadd -a repos | |
184 ;; | |
185 | |
186 (id|identify) | |
187 ;; | |
188 | |
189 (recover) | |
190 ;; | |
191 | |
192 (rawcommit) | |
193 _arguments \ | |
194 '-p[parent]:revision:($tags)' \ | |
195 '-d[date]:date:' \ | |
196 '-u[user]:user:' \ | |
197 '-F[file list]:file list:_files' \ | |
198 '-m[commit message]:string:' \ | |
199 '-l[commit message file]:message file:_files -g *.txt' \ | |
200 '*:files to commit:_files' | |
201 ;; | |
202 | |
203 (copy|cp) | |
204 _arguments \ | |
205 '-I[include path in search]:dir:_files -W $(hg root) -/' \ | |
206 '-X[exclude path in search]:dir:_files -W $(hg root) -/' \ | |
207 '-A-[record a copy after it has happened]' \ | |
208 '-f[replace destination if it exists]' \ | |
209 '-p[append source path to dest]' \ | |
210 '*:destination:' | |
211 ;; | |
212 | |
213 (rename|mv) | |
214 _arguments \ | |
215 '-I[include path in search]:dir:_files -W $(hg root) -/' \ | |
216 '-X[exclude path in search]:dir:_files -W $(hg root) -/' \ | |
217 '-A-[record a copy after it has happened]' \ | |
218 '-f[replace destination if it exists]' \ | |
219 '-p[append source path to dest]' \ | |
220 '*:destination:' | |
221 ;; | |
222 | |
223 (forget) | |
224 addedFiles=( $(hg status -an) ) | |
225 _arguments \ | |
226 '-I[include path in search]:dir:_files -W $(hg root) -/' \ | |
227 '-X[exclude path in search]:dir:_files -W $(hg root) -/' | |
228 _wanted files expl 'newly added files' compadd -a addedFiles | |
229 ;; | |
230 | |
231 (import|patch) | |
232 _arguments \ | |
233 '-p[path strip (default: 1)]:count:' \ | |
234 '-f[skip check for outstanding changes]' \ | |
235 '-b[base path]:file:_files -W $(hg root)' \ | |
236 '*:patch file:_files' | |
237 ;; | |
238 | |
239 (incoming|in) | |
240 _arguments \ | |
241 '-p[show patch]' \ | |
242 '*:mercurial repository:_files' | |
243 ;; | |
244 | |
245 (diff) | |
246 _arguments \ | |
247 '-I[include path in search]:dir:_files -W $(hg root) -/' \ | |
248 '-X[exclude path in search]:dir:_files -W $(hg root) -/' \ | |
249 '-r[revision]:revision:($tags)' \ | |
250 '-a-[tread all files as text]' \ | |
251 '*:file:_files' | |
252 ;; | |
253 | |
254 (log|history) | |
255 _arguments \ | |
256 '-I[include path in search]:dir:_files -W $(hg root) -/' \ | |
257 '-X[exclude path in search]:dir:_files -W $(hg root) -/' \ | |
258 '-r[revision]:revision:($tags)' \ | |
259 '-b[show branches]' \ | |
260 '-p[show patch]' \ | |
261 '*:file:_files' | |
262 ;; | |
263 | |
264 (grep) | |
265 _arguments \ | |
266 '-I[include path in search]:dir:_files -W $(hg root) -/' \ | |
267 '-X[exclude path in search]:dir:_files -W $(hg root) -/' \ | |
268 '-0[end fields with NUL]' \ | |
269 '--all[print all revisions with matches]' \ | |
270 '-i[ignore case]' \ | |
271 '-l[print names of files and revs with matches]' \ | |
272 '-n[print line numbers]' \ | |
273 '-r[search in revision rev]:revision:($tags)' \ | |
274 '-u[print user who made change]' \ | |
275 '*:search pattern, then files:_files' | |
276 ;; | |
277 | |
278 (status) | |
279 _arguments \ | |
280 '-I[include path in search]:dir:_files -W $(hg root) -/' \ | |
281 '-X[exclude path in search]:dir:_files -W $(hg root) -/' \ | |
282 '-0[end filenames with NUL]' \ | |
283 '-m[show only modified files]' \ | |
284 '-a[show only added files]' \ | |
285 '-r[show only removed files]' \ | |
286 '-u[show only unknown files]' \ | |
287 '-n[hide status prefix]' \ | |
288 '*:search pattern, then files:_files' | |
289 ;; | |
290 | |
291 (locate) | |
292 _arguments \ | |
293 '-r[search in revision rev]:revision:($tags)' \ | |
294 '-0[end fields with NUL]' \ | |
295 '-f[print complete paths]' \ | |
296 '-I[include path in search]:dir:_files -W $(hg root) -/' \ | |
297 '-X[exclude path in search]:dir:_files -W $(hg root) -/' \ | |
298 '*:search pattern:' | |
299 ;; | |
300 | |
301 (help) | |
302 _wanted commands expl 'hg command' compadd -a subcmds | |
303 ;; | |
304 | |
305 (root|undo|view|verify|version) | |
306 # no arguments for these commands | |
307 ;; | |
308 | |
309 (*) | |
310 _message "unknown hg command completion: $service" | |
311 ;; | |
312 esac |