From 4fb328f8a6bb38449076b833d031bd2b0c0ab100 Mon Sep 17 00:00:00 2001 From: Peter Stephenson Date: Wed, 2 Aug 2006 21:42:23 +0000 Subject: unposted: update _subversion from main line --- ChangeLog | 5 +++ Completion/Unix/Command/_subversion | 69 ++++++++++++++++++++++++++++++------- 2 files changed, 62 insertions(+), 12 deletions(-) diff --git a/ChangeLog b/ChangeLog index 3d6dd605a..c3447196c 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2006-08-02 Peter Stephenson + + * unposted: Completion/Unix/Command/_subversion: update from + main line. + 2006-07-30 Peter Stephenson * 22565: Src/compcore.c: Fix bug with menu completion after failed diff --git a/Completion/Unix/Command/_subversion b/Completion/Unix/Command/_subversion index 04509611c..867c2bcf2 100644 --- a/Completion/Unix/Command/_subversion +++ b/Completion/Unix/Command/_subversion @@ -34,38 +34,61 @@ _svn () { ) case $cmd in; - add) + (add) args+=( '*:file:_files -g "*(^e:_svn_controlled:)"' ) ;; - commit) + (commit) args+=( '*:file:_files -g "*(e:_svn_status:)"' ) ;; - delete) + (delete) args+=( '*:file:_files -g ".svn(/e:_svn_deletedfiles:)"' ) ;; - help) + (diff) + args+=( + '*: : _alternative "files:file:_files -g \*\(e:_svn_status:\)" "urls:URL:_svn_urls"' + ) + ;; + (help) args+=( '*::sub command:_svn_commands' ) + ;; + (import) + args+=( + '1:project directory:_files -/' + '2:import location: _alternative "files:file:_files" "urls:URL:_svn_urls"' + ) ;; - log) + (log) args+=( '1: : _alternative "files:file:_files -g \*\(e:_svn_controlled:\)" "urls:URL:_svn_urls"' '*:file:_files -g "*(e:_svn_controlled:)"' ) ;; - revert) + (propset) + args=( + ':propname:(svn:ignore svn:keywords svn:executable svn:eol-style svn:mime-type svn:externals svn:needs-lock)' + ${args/(#b)(*--file*):arg:/$match[1]:file:_files} + '*:path or url: _alternative "files:file:_files" "urls:URL:_svn_urls"' + ) + ;; + (resolved) + args+=( + '*:file:_files -g "*(e:_svn_conflicts:)"' + ) + ;; + (revert) args+=( '*:file:_files -g "(.svn|*)(/e:_svn_deletedfiles:,e:_svn_status:)"' ) ;; - *) + (*) case $usage in *(SRC|DST|TARGET|URL*PATH)*) args+=( @@ -141,6 +164,11 @@ _svn_controlled() { [[ -f ${(M)REPLY##*/}.svn/text-base/${REPLY##*/}.svn-base ]] } +(( $+functions[_svn_conflicts] )) || +_svn_conflicts() { + [ -n $REPLY.(mine|r<->)(N[1]) ] +} + (( $+functions[_svn_deletedfiles] )) || _svn_deletedfiles() { # Typical usage would be _files -g '.svn(/e:_svn_deletedfiles:)' @@ -167,15 +195,32 @@ _svn_status() { (( $+functions[_svn_urls] )) || _svn_urls() { - local expl - - if [[ -prefix *: ]]; then - _urls + local expl remfiles remdispf remdispd suf ret=1 + + if [[ -prefix *: ]] && ! _urls && + zstyle -T ":completion:${curcontext}:" remote-access + then + remfiles=( ${(f)"$(svn list $IPRFIX${PREFIX%%[^./][^/]#} 2>/dev/null)"} ) + compset -P '*/' + compset -S '/*' || suf=file + remdispf=(${remfiles:#*/}) + remdispd=(${(M)remfiles:#*/}) + _tags files + while _tags; do + while _next_label files expl ${suf:-directory}; do + [[ -n $suf ]] && compadd "$@" "$expl[@]" -d remdispf $remdispf && ret=0 + compadd ${suf:+-S/} "$@" "$expl[@]" -d remdispd \ + ${remdispd%/} && ret=0 + done + (( ret )) || return 0 + done else compset -S '[^:]*' _wanted url-schemas expl 'URL schema' compadd -S '' - \ - file:// http:// https:// svn:// svn+ssh:// + file:// http:// https:// svn:// svn+ssh:// && ret=0 fi + + return ret } (( $+functions[_svn_commands] )) || -- cgit 1.4.1