Zsh Mailing List Archive
Messages sorted by:
Reverse Date,
Date,
Thread,
Author
_quilt (was Re: rsync --progress stops completion)
- X-seq: zsh-workers 33238
- From: Oliver Kiddle <okiddle@xxxxxxxxxxx>
- To: zsh-workers@xxxxxxx
- Subject: _quilt (was Re: rsync --progress stops completion)
- Date: Thu, 25 Sep 2014 00:11:41 +0200
- Dkim-signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yahoo.co.uk; s=s1024; t=1411596702; bh=OkONykKW1VE5CtA2zA2xxJ9Lni0umYXPlRjMOpvOHzk=; h=X-Yahoo-Newman-Id:X-Yahoo-Newman-Property:X-YMail-OSG:X-Yahoo-SMTP:Received:In-reply-to:From:To:References:Subject:MIME-Version:Content-Type:Content-ID:Date:Message-ID; b=KMLCQ1m9e4oQ1fLgj1BtQJAwVtmEN/q0Appd8V2V3esVKHECJVrgxJK7Ksz8GCjU1egtxbQcRyCX56zYk9KJtlB99DSOvfwr1+G1yGmovVzXdoGO0OAv9XX+ioWT0ZuGQusZBd2d4xiO/zkC/fgFwCl7h6Yj5pbiwHYhVXRO9es=
- In-reply-to: <9603.1411126819@thecus.kiddle.eu>
- List-help: <mailto:zsh-workers-help@zsh.org>
- List-id: Zsh Workers List <zsh-workers.zsh.org>
- List-post: <mailto:zsh-workers@zsh.org>
- Mailing-list: contact zsh-workers-help@xxxxxxx; run by ezmlm
- References: <lv9jav$8l6$1@ger.gmane.org> <2002755.9ryFYYVtTN@note> <5418786F.8030001@thregr.org> <140916175124.ZM5742@torch.brasslantern.com> <54194198.2010607@thregr.org> <140917085133.ZM6725@torch.brasslantern.com> <541AA918.8060503@thregr.org> <140918093602.ZM7963@torch.brasslantern.com> <140918190130.ZM8366@torch.brasslantern.com> <9603.1411126819@thecus.kiddle.eu>
> _quilt - returns 0 even when it finds no completions, breaking the
> zstyle fallback I suggested.
The updated function below fixes this and much else besides. I've just
included the function as-is instead of a patch because there aren't
really any unchanged lines.
This also effectively backs out the change from 29624 (d557905e). That
used _message in the case of there being no matches. We have a more
general mechanism for this (set the format style with the warnings tag).
_quilt was actually using 2>&1 for no apparent reason in the
_call_program call.
Oliver
#compdef quilt
local curcontext="$curcontext" state line
local help="(- : *)-h[show help information]"
local verbose='(-h)-v[verbose, more user friendly output]'
local color='(-h)--color=[use syntax coloring]:color:(always auto never)'
local pstyle='(-h)-p+[select patch style]:patch style:((0\:exclude\ top-level\ directory 1\:use\ .orig\ on\ top-level\ directory ab\:use\ a\ or\ b\ as\ top-level\ directory))'
local -a pform rcfile
pform=(
'(-U -c -C -h)-u[create a unified diff]'
'(-u -c -C -h)-U+[create a unified diff with num lines of context]:lines'
'(-u -U -C -h)-c[create a context diff]'
'(-u -U -c -h)-C+[create a context diff with num lines of context]:lines'
)
typeset -A opt_args
_quilt_applied() {
local expl
_wanted -V patches expl patch compadd \
${(f)"$(_call_program patches quilt $rcfile applied)"}
}
_quilt_series() {
local expl
_wanted -V patches expl 'patch' compadd \
${(f)"$(_call_program patches quilt $rcfile series)"}
}
_quilt_unapplied() {
local expl
_wanted -V patches expl 'unapplied patch' compadd \
${(f)"$(_call_program patches quilt $rcfile unapplied)"}
}
_arguments $help \
'--trace[run the command in bash trace mode]' \
'--quiltrc=[use the specified configuration file]:files:_files' \
'--version[print the version number and exit]' \
':quilt command:(add annotate applied delete diff edit files fold fork graph
grep header import mail new next patches pop previous push refresh remove
rename revert series setup snapshot top unapplied upgrade)' \
'*:: :->subcmd' && return
[[ -z $state ]] && return 1
rcfile=( ${opt_args[--quiltrc]:+--quiltrc=${opt_args[--quiltrc]}} )
case $words[1] in
add)
_arguments -S $help \
'-P+[specify patch to add files to]:patch:_quilt_applied' \
'*:files:_files' && return
;;
annotate)
_arguments $help \
'-P[stop checking for changes at the specified rather than the topmost patch]:patch:_quilt_series' \
':files:_files' && return
;;
applied) _arguments $help ':quilt series:_quilt_series' && return ;;
delete)
_arguments -s $help \
'(:)-n[delete the next patch after topmost]' \
'-r[remove the deleted patch file from the patches directory as well]' \
'--backup[rename the patch file to patch~ rather than deleting it]' \
'(-n):patch:_quilt_series' && return
;;
diff)
_arguments -s $help $pstyle $pform $color \
"--no-timestamps[don't include file timestamps in patch headers]" \
"--no-index[don't output Index: lines]" \
'(-P --snapshot)-z[show changes relative to the topmost or specified patch]' \
'-R[create a reverse diff]' \
'(-z --snapshot)-P[create a diff for the specified patch]:patch:_quilt_series' \
'--combine[create a combined diff for all patches between this patch and the patch specified with -P]:patch:_quilt_series' \
'(-P -z)--snapshot[diff against snapshot]' \
'--diff=[use the specified utility for generating the diff]:diff utility:_command_names -e' \
'--sort[sort files by name]' \
'*:files:_files' && return
;;
edit) _arguments $help '*:files:_files' && return ;;
files)
_arguments -s $help $verbose \
'-a[list all files in all applied patches]' \
'-l[add patch name to output]' \
'--combine[create a listing for all patches between this patch and the topmost or specified patch]::patch:_quilt_series' \
':patch:_quilt_series' && return
;;
fold)
_arguments -s $help \
'-R[apply patch in reverse]' \
'-q[quiet operation]' \
'-f[force apply]' \
'-p+[specify number of pathname components to strip]:components to strip' && return
;;
fork) _arguments $help ':patch name' && return ;;
graph)
_arguments $help \
'--all[include all applied patches and their dependencies]' \
'--reduce[eliminate transitive edges from the graph]' \
'--lines=-[compute dependencies by looking at lines patches modify]::number of lines' \
'--edge-labels=files[label graph edges with file names that adjacent patches modify]' \
'-T ps[produce a PostScript output file]' \
':patch:_quilt_series' && return
;;
grep) _grep && return ;;
header)
_arguments $help \
'(-r -e -h)-a[append to existing patch header]' \
'(-a -e -h)-r[replace existing patch header]' \
'(-a -r -h)-e[edit the header in $EDITOR]' \
'--strip-diffstat[strip diffstat output from the header]' \
'--strip-trailing-whitespace[strip trailing whitespace at the end of lines of the header]' \
'--backup[create backup copy of patch with tilde suffix]' \
':patch:_quilt_series' && return
;;
import)
_arguments $help \
'-p+[number of directory levels to strip when applying]:quilt select strip-level: ' \
'-R[apply patch in reverse]' \
'-P+[patch filename to use inside quilt]:quilt select patch filename: ' \
'-f[overwrite/update existing patches]' \
'-d+[header resolution when overwriting in existing patch]:resolution:((a\:all\ headers n\:new\ headers o\:old\ headers))' \
'*:files:_files' && return
;;
mail)
_arguments $help \
'(-h -M)-m[introduction text to use]:introduction text' \
'(-h -m)-M[read introduction text from file]:file:_files' \
'--prefix=[use an alternate prefix in the bracketed part of the subjects generated]:quilt select prefix: ' \
'--mbox=[store all messages in the specified file in mbox format]:files:_files' \
'--send[send the messages directly]' \
'--sender=[specify envelope sender address to use]:sender:_email_addresses -c' \
'--from=[from header]:address:_email_addresses' \
'--subject=[subject header]:subject' \
'*--to=[append a recipient to the To header]:recipient:_email_addresses' \
'*--cc=[append a recipient to the Cc header]:recipient:_email_addresses' \
'*--bcc=[append a recipient to the Bcc header]:recipient:_email_addresses' \
'--signature=[append specified signature file to messages]:files:_files' \
'--reply-to=[add reply address to message]:address:_email_addresses' \
'*:patch:_quilt_series' && return
;;
new) _arguments $help $pstyle ':patch name' && return ;;
next) _arguments $help ':patch:_quilt_series' && return ;;
patches) _arguments -S $help $verbose $color '*:files:_files' && return ;;
pop)
_arguments -s $help $verbose \
'-a[remove all applied patches]' \
'-f[force remove]' \
'-R[always verify if the patch removes cleanly]' \
'-q[quiet operation]' \
':patch:_quilt_applied' && return
;;
previous) _arguments $help ':patch:_quilt_series' && return ;;
push)
_arguments $help $verbose $color \
'-a[apply all patches in the series file]' \
'-q[quiet operation]' \
'-f[force apply, even if the patch has rejects]' \
'--fuzz=[set the maximum fuzz factor]:factor [2]' \
'--merge=[merge the patch file into the original files]::merge scheme:(merge diff3)' \
'--leave-rejects[leave around the reject files patch produced]' \
':quilt unapplied:_quilt_unapplied' && return
;;
refresh)
_arguments -s $help $pstyle $pform \
'-z-[create a new patch containing the changes instead of refreshing the topmost patch]::new patch name' \
'--no-timestamps[do not include file timestamps in patch headers]' \
'--no-index[do not output Index: lines]' \
'--diffstat[add a diffstat section to the patch header, or replace the existing diffstat section]' \
'-f[enforce refreshing of a patch that is not on top]' \
'--backup[create a backup copy of the old version of a patch as patch~]' \
'--sort[sort files by their name instead of preserving the original order]' \
'--strip-trailing-whitespace[strip trailing whitespace at the end of lines]' \
':patch:_quilt_series' && return
;;
remove)
_arguments $help \
'-P[patch to remove]:patch:_quilt_series' \
'*:file:_files' && return
;;
rename)
_arguments $help \
'(-h)-P[patch to rename]:patch:_quilt_series' \
':new name' && return
;;
revert)
_arguments $help \
'-P[revert changes in the named patch]:patch:_quilt_series' \
'*:files:_files' && return
;;
series) _arguments $help $verbose $color && return ;;
setup)
_arguments $help $verbose \
'-d[specify path prefix for resulting source tree]:prefix:_files -W / -P /' \
'--sourcedir[specify location of package sources]:directory:_directories' \
'--fuzz=[set the maximum fuzz factor]:factor' \
':files:_files' && return
;;
snapshot) _arguments $help '-d[only remove current snapshot]' && return ;;
unapplied) _arguments $help ':patch:_quilt_series' && return ;;
top|upgrade) _arguments $help && return ;;
*)
_default
return
;;
esac
return 1
Messages sorted by:
Reverse Date,
Date,
Thread,
Author