comparison contrib/zsh_completion @ 1368:d1d605d1e839

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