--- _subversion_original_zsh_5.7.1 2019-08-24 09:54:06.000000000 +0200 +++ _subversion_orthogonal 2019-08-24 22:10:57.000000000 +0200 @@ -1,5 +1,9 @@ #compdef svn svnlite=svn svnadmin svnadmin-static=svnadmin +# This is the file provided by zsh 5.7.1 patched in such a way that I removed from all the calls +# to _file zsh function the option -g and the relative argument, thus making completion less smart +# with compared to original version. + _svn () { local curcontext="$curcontext" state line expl ret=1 typeset -A opt_args @@ -106,23 +110,23 @@ case $cmd in; (add) args+=( - '*:file:_files -g "*(^e:_svn_controlled:)"' + '*:file:_files' ) ;; (commit) args=( ${args/(#b)(*--file*):arg:/$match[1]:file:_files} - '*:file:_files -g "*(e:_svn_status:)"' + '*:file:_files' ) ;; (delete) args+=( - '*:file:_files -g ".svn(/e:_svn_deletedfiles:)"' + '*:file:_files' ) ;; (diff) args+=( - '*: : _alternative "files:file:_files -g \*\(e:_svn_status:\)" "urls:URL:_svn_urls"' + '*: : _alternative "files:file:_files" "urls:URL:_svn_urls"' ) ;; (help) @@ -138,8 +142,8 @@ ;; (log) args+=( - '1: : _alternative "files:file:_files -g \*\(e:_svn_controlled:\)" "urls:URL:_svn_urls"' - '*:file:_files -g "*(e:_svn_controlled:)"' + '1: : _alternative "files:file:_files" "urls:URL:_svn_urls"' + '*:file:_files' ) ;; (mergeinfo) @@ -161,12 +165,12 @@ ;; (resolved) args+=( - '*:file:_files -g "*(e:_svn_conflicts:)"' + '*:file:_files' ) ;; (revert) args+=( - '*:file:_files -g "(.svn|*)(/e:_svn_deletedfiles:,e:_svn_status:)"' + '*:file:_files' ) ;; (unshelve) @@ -308,44 +312,6 @@ return ret } -(( $+functions[_svn_controlled] )) || -_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:)' - local cont controlled - reply=( ) - [[ $REPLY = (*/|).svn ]] || return - controlled=( $REPLY/text-base/*.svn-base(N:r:t) ) - for cont in ${controlled}; do - [[ -e $REPLY:h/$cont ]] || reply+=( ${REPLY%.svn}$cont ) - done -} - -(( $+functions[_svn_status] )) || -_svn_status() { - local dir=$REPLY:h - local pat="${1:-([ADMR~]|?M)}" - - zmodload -F zsh/stat b:zstat 2>/dev/null - local key="$(zstat +device $dir):$(zstat +inode $dir)" - local mtime="$(zstat +mtime $dir/.svn/entries)" - - if (( ! $+_cache_svn_status[$key] || _cache_svn_mtime[$key] != mtime )); then - _cache_svn_status[$key]="$(_call_program files svn status -N $dir)" - _cache_svn_mtime[$key]="$mtime" - fi - - (( ${(M)#${(f)_cache_svn_status[$key]}:#(#s)${~pat}*$REPLY} )) -} (( $+functions[_svn_remote_paths] )) || _svn_remote_paths() {