##// END OF EJS Templates
Fix completion function for 'hg pull'. Fix truncation bug and remove tabs.
Steve Borho -
r1368:d1d605d1 default
parent child Browse files
Show More
@@ -16,34 +16,34 b' local curcontext="$curcontext" state lin'
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
@@ -51,106 +51,106 b' case $service in'
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
121 (heads)
122 _arguments '-b[find branch info]'
123 ;;
124
120
125 (outgoing|out)
121 (heads)
126 _arguments '-p[show patch]'
122 _arguments '-b[find branch info]'
127 ;;
123 ;;
128
124
129 (paths)
125 (outgoing|out)
130 _arguments '*:symbolic name:(default default-push)'
126 _arguments '-p[show patch]'
131 ;;
132
133 (init)
134 _arguments '*:new repo directory:_files -/'
135 ;;
127 ;;
136
128
137 (unbundle)
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'
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' \
@@ -163,34 +163,34 b' case $service in'
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:' \
@@ -198,71 +198,71 b' case $service in'
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]' \
@@ -273,10 +273,10 b' case $service in'
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]' \
@@ -286,27 +286,27 b' case $service in'
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
General Comments 0
You need to be logged in to leave comments. Login now