Zsh Mailing List Archive
Messages sorted by:
Reverse Date,
Date,
Thread,
Author
Re: zsh 4.2.1-test-A
- X-seq: zsh-workers 20235
- From: Oliver Kiddle <okiddle@xxxxxxxxxxx>
- To: Zsh <zsh-workers@xxxxxxxxxx>
- Subject: Re: zsh 4.2.1-test-A
- Date: Sat, 07 Aug 2004 15:40:03 +0200
- Cc: 261775@xxxxxxxxxxxxxxx
- In-reply-to: <20040806180339.GA31854@xxxxxxxxxxx>
- Mailing-list: contact zsh-workers-help@xxxxxxxxxx; run by ezmlm
- References: <200408061350.i76DovBi028948@xxxxxxxxxxxxxx> <20040806180339.GA31854@xxxxxxxxxxx>
Clint wrote:
> Here's some that still seem to affect 4.2.1-test-A.
>
> #258431 - doesn't complete .iso files for cdrecord.
I can't reproduce this with 4.2.1-test-A so I suspect there is something
that fixed it which isn't in Debian's 4.2.0. Note that we probably
shouldn't add -g \*.iso to _files. There are many other file extensions
(and filesystems besides iso9660) relevant to CD (and DVD) images.
> #261775 - remote rsync completion needs escaping a la scp completion
I ripped the remote file completion out of _ssh and stuck it in. Patch
is below. Hopefully that doesn't break anything. We probably ought to
factor _remote_files out into a separate function given that all of
_ssh, _rsh and _rsync contain near identical code.
> #256789 - brace completion commas aren't escaped (17791, 17913, 17926)
I wouldn't want to attempt to fix that just before a release. Would be
too easy to break something.
Oliver
Index: Completion/Unix/Command/_rsync
===================================================================
RCS file: /cvsroot/zsh/zsh/Completion/Unix/Command/_rsync,v
retrieving revision 1.9
diff -u -r1.9 _rsync
--- Completion/Unix/Command/_rsync 14 Apr 2004 14:54:16 -0000 1.9
+++ Completion/Unix/Command/_rsync 7 Aug 2004 13:18:14 -0000
@@ -1,12 +1,9 @@
#compdef rsync
_rsync_remote_files() {
-local suf tag=accounts
+local expl remfiles remdispf remdispd remmodules suf ret=1 tag=accounts
-if [[ -prefix *::*/ ]]; then
- local remfiles remdispf remdispd
-
- compset -P '*::*/'
+if compset -P '*::*/'; then
remfiles=(${(f)"$(_call_program files rsync ${words[CURRENT]%/*}/)"})
@@ -19,10 +16,7 @@
_wanted files expl 'remote file or directory' \
compadd -S/ -d remdispd ${remdispd##* }
-elif [[ -prefix 1 *:: ]]; then
- local remfiles remmodules
-
- compset -P 1 '*::'
+elif compset -P 1 '*::'; then
remfiles=(${(f)"$(_call_program files rsync ${words[CURRENT]%::*}::)"})
@@ -30,32 +24,33 @@
_describe "remote modules" remmodules -S/
-elif [[ -prefix 1 *: ]]; then
- local remfiles remdispf remdispd slash
+elif compset -P 1 '*:'; then
- compset -P 1 '*:'
-
- if zstyle -T ":completion:${curcontext}:" remote-access; then
- slash=/
- remfiles=(${(f)"$(_call_program files ssh -a -x ${words[CURRENT]%:*} ls -d1FL "${${${words[CURRENT
-]#*:}:h}/${slash}(#e)/}/\* 2>/dev/null")"})
+ if zstyle -T ":completion:${curcontext}:files" remote-access; then
+ remfiles=(${(M)${(f)"$(_call_program files ssh -a -x ${IPREFIX%:} ls -d1FL "${(Q)PREFIX%%[^./][^/]#}\*" 2>/dev/null)"}%%[^/]#(|/)})
+ compset -P '*/'
+ compset -S '/*' || suf='remote file'
remdispf=(${remfiles:#*/})
remdispd=(${(M)remfiles:#*/})
- _wanted files expl 'remote file or directory' \
- compadd -d remdispf ${${remfiles:#*/}/[*=@|](#e)/}
-
- _wanted files expl 'remote file or directory' \
- compadd -S/ -d remdispd ${${(M)remfiles:#*/}/${slash}(#e)/}
+ _tags files
+ while _tags; do
+ while _next_label files expl ${suf:-remote directory}; do
+ [[ -n $suf ]] && compadd "$@" "$expl[@]" -d remdispf \
+ ${(q)remdispf%[*=@|]} && ret=0
+ compadd ${suf:+-S/} "$@" "$expl[@]" -d remdispd \
+ ${(q)remdispd%/} && ret=0
+ done
+ (( ret )) || return 0
+ done
else
- _message -e remote-files 'remote files'
+ _message -e remote-files 'remote file'
fi
-elif [[ -prefix 1 *@ ]]; then
+elif compset -P 1 '*@'; then
local user=${PREFIX%%@*}
- compset -P 1 '*@'
compset -S ':*' || suf=":"
_wanted -C user-at hosts expl "host for $user" \
Messages sorted by:
Reverse Date,
Date,
Thread,
Author