3
# Rudimentary zsh completion support for bzr.
5
# -S means there are no options after a -- and that argument is ignored
7
# To use this you must arrange for it to be in a directory that is on
8
# your $fpath, and also for compinit to be run. I don't understand
9
# how to get zsh to reload this file when it changes, other than by
12
local _bzr_subcommands expl curcontext="$curcontext" state line
13
local bzrRoot helpArgs parentFile
16
helpArgs=( '(--help)-h[show help message]' '(-h)--help[show help message]' )
17
bzrRoot=$(bzr root 2> /dev/null)
18
parentFile=$bzrRoot/.bzr/parent
20
if [[ $service == "bzr" ]]; then
21
_arguments -C -A "-*" \
22
'*::command:->subcmd' && return 0
24
if (( CURRENT == 1 )); then
25
_bzr_subcommands=(${(f)"$(_call_program bzr bzr shell-complete)"})
26
_describe -t subcommand 'subcommand' _bzr_subcommands
31
curcontext="${curcontext%:*}=$service:"
36
fileList=(${(ps:\0:)"$(bzr ls --null --unknown)"})
43
fileList=(${(ps:\0:)"$(bzr ls --null --from-root --unknown)"})
50
fileList=(${(ps:\0:)"$(bzr ls --null --versioned)"})
57
_arguments $helpArgs \
58
'--no-recurse[do not recurse into subdirectories]' \
61
'*:unknown files:_unknownFiles'
64
(annotate|praise|blame)
65
_arguments $helpArgs '*:files:_versionedFiles'
69
if (( CURRENT == 2 )); then
70
_arguments $helpArgs \
71
'(-r)--revision:rev:' \
72
'(--revision)-r:rev:' \
73
'--basis[specify basis branch]:basis:' \
74
'*:FROM_LOCATION:_files -/'
75
elif (( CURRENT == 3 )); then
76
_arguments $helpArgs \
77
'(-r)--revision:rev:' \
78
'(--revision)-r:rev:' \
79
'--basis[specify basis branch]:basis:' \
80
'*:TO_LOCATION:_files -/'
85
if (( CURRENT == 2 )); then
86
_arguments $helpArgs '*:old name:_versionedFiles'
88
_arguments $helpArgs '*:new name:'
93
_arguments $helpArgs \
94
'(-r)--revision:rev:' \
95
'(--revision)-r:rev:' \
96
'*:file:_versionedFiles'
100
_arguments $helpArgs '*:file:_files'
104
_arguments $helpArgs \
105
'(-r)--revision[revision or range]:rev or rev range:' \
106
'(--revision)-r[revision or range]:rev or rev range:' \
107
'(--verbose)-v[show revision manifest]' \
108
'(-v)--verbose[show revision manifest]' \
109
'(--short --long)-l[use long format (default)]' \
110
'(--short -l)--long[use long format (default)]' \
111
'(-l --long)--short[use short format]' \
112
'(--message)-m[specify regexp]:regexp:' \
113
'(-m)--message[specify regexp]:regexp:' \
114
'--show-ids[show file IDs]' \
115
'--forward[reverse direction of revisions]' \
116
'--timezoe[specify timezone for dates]:timezone:' \
117
'*:file:_versionedFiles'
121
_arguments $helpArgs '--all' '*:file:_versionedFiles'
125
_arguments $helpArgs \
126
'--all[include unchanged versioned files]' \
127
'--show-ids[show file IDs]' \
128
'*:file:_versionedFiles'
132
_arguments $helpArgs \
138
(mkdir|upgrade|renames)
139
_arguments $helpArgs '*:DIR:_files -/'
143
_arguments $helpArgs \
146
'*:file:_versionedFiles'
150
_arguments $helpArgs \
151
'--remember[Remember the specified location as a default]' \
152
'--overwrite[Ignore differences, overwrite unconditionally]' \
153
'*:local repository:_files -/'
154
[[ -r $parentFile ]] && compadd -X "Completing parents" $(cat $parentFile)
158
_arguments $helpArgs \
159
'(--verbose -q --quiet)-v' \
160
'(-v -q --quiet)--verbose' \
161
'(--verbose -v --quiet)-q' \
162
'(-v -q --verbose)--quiet' \
163
'*:local repository:_files -/'
164
[[ -r $parentFile ]] && compadd -X "Completing parents" $(cat $parentFile)
168
_arguments $helpArgs \
169
'(--message)-m[commit message]:message text:' \
170
'(-m)--message[commit message]:message text:' \
171
'(--file)-F[commit message from file]:message file:' \
172
'(-F)--file[commit message from file]:message file:' \
173
'--unchanged[include unchanged files]' \
176
'*:modified files:_versionedFiles'
179
(conflicts|added|deleted|modified|unknowns|directories|ignored)
188
_arguments $helpArgs '--email[only show e-mail address]'
192
_arguments $helpArgs \
193
'(-r)--revision[show inventory of a revision]:revision:' \
194
'(--revision)-r[show inventory of a revision]:revision:' \
195
'--show-ids[show file IDs]'
199
_arguments $helpArgs \
200
'(-r)--revision:revision:' \
201
'(--revision)-r:revision:' \
202
'--diff-options[options to pass to gdiff]:diff options:' \
207
_arguments $helpArgs \
208
'(-r)--revision:revision:' \
209
'(--revision)-r:revision:' \
210
'--format=[format of exported file]:format:(dir tar tgz tbz2)' \
211
'--root[root directory of patch]:_files -/' \
212
'*:destination:_files'
216
_arguments $helpArgs '*:NAME_PATTERN:_unknownRoot'
220
_arguments $helpArgs '*:branch:_files -/'
224
_arguments $helpArgs \
225
'(-r)--revision:revision:' \
226
'(--revision)-r:revision:' \
232
(revert|merge-revert)
233
_arguments $helpArgs \
234
'(-r)--revision:revision:' \
235
'(--revision)-r:revision:' \
236
'--no-backup[skip generation of backup~ files]' \
237
'*:file:_versionedFiles'
241
_arguments $helpArgs \
242
'(-r)--revision:revision:' \
243
'(--revision)-r:revision:' \
244
'--reprocess[Reprocess to reduce spurious conflicts]' \
245
'--show-base[Show base revision text in conflicts]' \
246
'--force[ignore uncommitted changes]' \
247
'--merge-type:merge type:(diff3 merge3 weave)' \
248
'*:local repository:_files -/'
249
[[ -r $parentFile ]] && compadd -X "Completing parents" $(cat $parentFile)
253
_arguments $helpArgs \
254
'(--verbose)-v[display more information]' \
255
'(-v)--verbose[display more information]' \
256
'(-r)--revision:revision:' \
257
'(--revision)-r:revision:' \
258
'--from-root[Print all paths from the root of the branch]' \
259
'--non-recursive[Do not recurse into subdirectories]' \
260
'--null[Null separate the files]' \
261
'--ignored[Print ignored files]' \
262
'--unknown[Print unknown files]' \
263
'--versioned[Print versioned files]'
267
if (( CURRENT == 2 )); then
268
_arguments $helpArgs '*:files:_versionedFiles'
270
_arguments '*:destination dir:_files -/'
275
_bzr_subcommands=(${(f)"$(_call_program bzr bzr shell-complete)"})
276
_arguments $helpArgs \
280
_describe -t subcommand 'subcommand' _bzr_subcommands
285
(visualize|visualise|viz|vis)
286
_arguments $helpArgs \
287
'(-r)--revision[starting revision]:rev:' \
288
'(--revision)-r[starting revision]:rev:'
291
(gannotate|gblame|gpraise)
292
_arguments $helpArgs \
293
'--all[show annotations on all lines]' \
294
'--plain[do not hightlight annotation lines]' \
295
'*:files:_versionedFiles'
299
_arguments $helpArgs \
300
'--overwrite[Ignore differences, overwrite unconditionally]' \
301
'*:local repository:_files -/'
302
[[ -r $parentFile ]] && compadd -X "Completing parents" $(cat $parentFile)
306
_arguments $helpArgs \
307
'--dry-run[show files to delete instead of deleting them]' \
308
'--ignored[delete all ignored files]' \
309
'--detritus[delete conflict files, merge backups, failed self-tests, *~, *.tmp, etc]'
314
_message "unknown bzr command completion: $service"