mirror of
git://git.code.sf.net/p/zsh/code
synced 2025-09-03 10:21:46 +02:00
21076: use _files with (e) qualifier to handle completing files by their status
This commit is contained in:
parent
dfe7d91ae7
commit
835a5ad8b5
2 changed files with 35 additions and 5 deletions
|
@ -1,3 +1,8 @@
|
|||
2005-03-31 Oliver Kiddle <opk@zsh.org>
|
||||
|
||||
* 21076: Completion/Unix/Command/_subversion: use _files with
|
||||
(e) glob qualifier to handle completing files by their status
|
||||
|
||||
2005-03-27 Clint Adams <clint@zsh.org>
|
||||
|
||||
* 21075: Completion/Unix/Command/_baz: update baz completion
|
||||
|
|
|
@ -21,9 +21,28 @@ _svn_controlled() {
|
|||
[[ -f ${(M)REPLY##*/}.svn/text-base/${REPLY##*/}.svn-base ]]
|
||||
}
|
||||
|
||||
(( $+functions[_svn_adm_files] )) ||
|
||||
_svn_adm_files() {
|
||||
compadd ${${(M)${(f)"$(svn status)"}:#(#s)[ADM]*}##[ADM] ##}
|
||||
(( $+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)}"
|
||||
|
||||
if (( ! $+_cache_svn_status[$dir] )); then
|
||||
_cache_svn_status[$dir]="$(_call_program files svn status -N $dir)"
|
||||
fi
|
||||
|
||||
(( ${(M)#${(f)_cache_svn_status[$dir]}:#(#s)${~pat}*$REPLY} ))
|
||||
}
|
||||
|
||||
(( $+functions[_svn_urls] )) ||
|
||||
|
@ -68,6 +87,7 @@ _svn_command () {
|
|||
(( $+functions[_svn_subcommand] )) ||
|
||||
_svn_subcommand () {
|
||||
local subcmd _svn_subcmds _svn_subcmd_usage
|
||||
typeset -A _cache_svn_status
|
||||
|
||||
_svn_subcmd_usage=${${(M)${(f)"$(LC_MESSAGES=C _call_program options svn help $1)"}:#usage:*}#usage: $1 }
|
||||
|
||||
|
@ -87,9 +107,14 @@ _svn_subcommand () {
|
|||
'*:file:_files -g "*(e:_svn_controlled:)"'
|
||||
)
|
||||
;;
|
||||
(revert)
|
||||
delete)
|
||||
_svn_subcmds+=(
|
||||
'*:file:_svn_adm_files'
|
||||
'*:file:_files -g ".svn(/e:_svn_deletedfiles:)"'
|
||||
)
|
||||
;;
|
||||
revert|commit)
|
||||
_svn_subcmds+=(
|
||||
'*:file:_files -g "(.svn|*)(/e:_svn_deletedfiles:,e:_svn_status:)"'
|
||||
)
|
||||
;;
|
||||
*)
|
||||
|
|
Loading…
Reference in a new issue