From 11cd9b2de3b8ce3a73260673c5571fecbc95318f Mon Sep 17 00:00:00 2001 From: Peter Stephenson Date: Mon, 12 May 2003 10:55:21 +0000 Subject: 18512, modified: fix up for ${foo/\//stuf} fix --- Completion/Unix/Command/_cvs | 9 +++++---- Completion/Unix/Command/_rsync | 7 ++++--- Completion/Unix/Type/_path_files | 3 ++- 3 files changed, 11 insertions(+), 8 deletions(-) (limited to 'Completion') diff --git a/Completion/Unix/Command/_cvs b/Completion/Unix/Command/_cvs index c0291c46e..ec2b95d0e 100644 --- a/Completion/Unix/Command/_cvs +++ b/Completion/Unix/Command/_cvs @@ -611,7 +611,7 @@ _cvs_loadstat () { (( $+functions[_cvs_root] )) || _cvs_root () { - local cvspassfile id + local cvspassfile id slash typeset -gU _cvs_roots @@ -622,7 +622,8 @@ _cvs_root () { id="$(LC_ALL=C ls -l "$cvspassfile")" fi if [[ "$id" != "$_cvs_pass_id" ]]; then - _cvs_roots=($_cvs_roots ${${${${(f)"$(<$cvspassfile)"}#/1 }%% *}/:2401\\//:/}) + slash=/ + _cvs_roots=($_cvs_roots ${${${${(f)"$(<$cvspassfile)"}#/1 }%% *}/:2401${slash}/:/}) _cvs_pass_id="$id" fi fi @@ -918,13 +919,13 @@ _cvs_existing_entries () { (( $+functions[_cvs_modified_entries] )) || _cvs_modified_entries () { if _cvs_loadstat; then - local expl match linedir realdir pat + local expl match linedir realdir pat slash=/ match=() : ${PREFIX:#(#b)(*/)(*)} linedir="$match[1]" realdir=${(e)~linedir} [[ -f "$realdir"CVS/Entries ]] && - [[ -n ${pat::="${(@j:|:)${(@)${(@)${(@)${(@)${(@)${(@M)${(@f)"$(<"$realdir"CVS/Entries)"}:#/*}#/}/\\/[^\\/]#\\///}%/[^/]#/[^/]#}:#${(j:|:)~${${${${(f)"$(LC_ALL=C builtin stat -gn +mtime -F '%a %b %e %T %Y' ${realdir}*(D) 2>/dev/null)"}##*/}/ //}//(#m)[][*?()<|^~#\\]/\\$MATCH}}}%%/*}//(#m)[][*?()<|^~#\\]/\\$MATCH}"} ]] && + [[ -n ${pat::="${(@j:|:)${(@)${(@)${(@)${(@)${(@)${(@M)${(@f)"$(<"$realdir"CVS/Entries)"}:#/*}#/}/${slash}[^${slash}]#${slash}//}%/[^/]#/[^/]#}:#${(j:|:)~${${${${(f)"$(LC_ALL=C builtin stat -gn +mtime -F '%a %b %e %T %Y' ${realdir}*(D) 2>/dev/null)"}##*/}/ //}//(#m)[][*?()<|^~#\\]/\\$MATCH}}}%%/*}//(#m)[][*?()<|^~#\\]/\\$MATCH}"} ]] && _wanted files expl 'modified file' _path_files -g "$pat" else _cvs_existing_entries diff --git a/Completion/Unix/Command/_rsync b/Completion/Unix/Command/_rsync index 5f2e87fb8..143a7bd4b 100644 --- a/Completion/Unix/Command/_rsync +++ b/Completion/Unix/Command/_rsync @@ -31,13 +31,14 @@ elif [[ -prefix 1 *:: ]]; then _describe "remote modules" remmodules -S/ elif [[ -prefix 1 *: ]]; then - local remfiles remdispf remdispd + local remfiles remdispf remdispd slash compset -P 1 '*:' if zstyle -T ":completion:${curcontext}:" remote-access; then + slash=/ remfiles=(${(f)"$(ssh -a -x ${words[CURRENT]%:*} ls -d1F ${${${words[CURRENT -]#*:}:h}/\\/(#e)/}/\* 2>/dev/null)"}) +]#*:}:h}/${slash}(#e)/}/\* 2>/dev/null)"}) remdispf=(${remfiles:#*/}) remdispd=(${(M)remfiles:#*/}) @@ -46,7 +47,7 @@ elif [[ -prefix 1 *: ]]; then compadd -d remdispf ${${remfiles:#*/}/[*=@|](#e)/} _wanted files expl 'remote files and directories' \ - compadd -S/ -d remdispd ${${(M)remfiles:#*/}/\\/(#e)/} + compadd -S/ -d remdispd ${${(M)remfiles:#*/}/${slash}(#e)/} else _message 'remote files' fi diff --git a/Completion/Unix/Type/_path_files b/Completion/Unix/Type/_path_files index 664b0d85f..dc12c512d 100644 --- a/Completion/Unix/Type/_path_files +++ b/Completion/Unix/Type/_path_files @@ -204,7 +204,8 @@ if [[ "$pre" = [^][*?#^\|\<\>]#(\`[^\`]#\`|\$)*/* && "$compstate[quote]" != \' ] eval 'realpath=${(e)~linepath}' 2>/dev/null [[ -z "$realpath" || "$realpath" = "$linepath" ]] && return 1 pre="${pre#${linepath}}" - i="${#linepath//[^\\/]}" + i='[^/]' + i="${#linepath//$i}" orig="${orig[1,(in:i:)/][1,-2]}" donepath= prepaths=( '' ) -- cgit 1.4.1