From 89f3361e60ec1da55f53a632a98d834b9f27e2cf Mon Sep 17 00:00:00 2001 From: Clint Adams Date: Sat, 16 Apr 2005 20:22:44 +0000 Subject: * 21147: factor out some common code from _tla and _baz, and fix some breakage from 21075. --- Completion/Unix/Command/_baz | 118 ++--------------------------------- Completion/Unix/Command/_tla | 117 ++-------------------------------- Completion/Unix/Type/_arch_archives | 14 +++++ Completion/Unix/Type/_arch_namespace | 105 +++++++++++++++++++++++++++++++ 4 files changed, 129 insertions(+), 225 deletions(-) create mode 100644 Completion/Unix/Type/_arch_archives create mode 100644 Completion/Unix/Type/_arch_namespace (limited to 'Completion/Unix') diff --git a/Completion/Unix/Command/_baz b/Completion/Unix/Command/_baz index ceedc732d..c5a65437a 100644 --- a/Completion/Unix/Command/_baz +++ b/Completion/Unix/Command/_baz @@ -20,32 +20,20 @@ if zstyle -s ":completion:${curcontext}" hide-shortopts hide_short; then fi # completion functions - (( $+functions[_baz_archives] )) || -_baz_archives () { - local expl completions library name_arg='-n' - if [[ -n $argv[(r)--library] ]]; then - library='library-' - # remove parameter from $@ before calling compadd - argv[(r)--library]=() - name_arg= - fi - completions=($(_call_program baz $BAZ ${library:-}archives $name_arg)) - _description -V archives expl "${library:-}archives" - compadd "$@" "$expl[@]" -- "$completions[@]" -} +_baz_archives () { _arch_archives baz "$@" } (( $+functions[_baz_categories] )) || -_baz_categories () { _baz_namespace 1 "$argv[@]" } +_baz_categories () { _arch_namespace baz 1 "$argv[@]" } (( $+functions[_baz_branches] )) || -_baz_branches () {_baz_namespace 2 "$argv[@]" } +_baz_branches () { _arch_namespace baz 2 "$argv[@]" } (( $+functions[_baz_versions] )) || -_baz_versions () { _baz_namespace 3 "$argv[@]" } +_baz_versions () { _arch_namespace baz 3 "$argv[@]" } (( $+functions[_baz_revisions] )) || -_baz_revisions () { _baz_namespace 4 "$argv[@]" } +_baz_revisions () { _arch_namespace baz 4 "$argv[@]" } (( $+functions[_baz_local_revisions] )) || _baz_local_revisions () { @@ -58,102 +46,6 @@ _baz_local_revisions () { # Should complete based on -A, -R, -d } -(( $+functions[_baz_namespace] )) || -_baz_namespace () { #double as arch_namespace_categories -# takes an integer argument specifying how many components: -# 1: category -# 2: branch -# 3: version -# 4: revision - local suffix expl archive=`$BAZ my-default-archive 2> /dev/null` - local trailing_dashes=0 - [[ -n $argv[(r)--trailing-dashes] ]] && trailing_dashes=1 - local library - [[ -n $argv[(r)--library] ]] && library='library-'; - local exclude_library_revisions=0 - [[ -n $argv[(r)--exclude-library-revisions] ]] && exclude_library_revisions=1 - - if [ $1 -gt 1 ] || (( trailing_dashes )); then - suffix=(-q -S --) - fi - if [[ $PREFIX = */* ]]; then - compset -P '*/' - archive=${IPREFIX%/*} - _description -V categories expl "${library:-}categories in $archive" - compadd $suffix "$expl[@]" `$BAZ ${library:-}categories $archive` - elif [ -z $IPREFIX ]; then - local index=$(( words[(i)-A] + 1 )) - (( index < CURRENT )) || index=$(( words[(i)--archive] + 1 )) - (( index < CURRENT )) && archive=$words[$index] - - if [ $archive ]; then - _description -V categories expl "${library:-}categories in $archive" - compadd "$expl[@]" $suffix `$BAZ ${library:-}categories $archive` - fi - - _baz_archives -S / ${library:+--library} - fi - if [ $archive ] && [ $1 -gt 1 ] && [[ $PREFIX != *@* ]] \ - && [[ $PREFIX = *--* ]]; then - #this match could be better - _baz_namespace_branches $(($1 - 1)) - fi -} - -(( $+functions[_baz_namespace_branches] )) || -_baz_namespace_branches () { - local suffix expl - if [ $1 -gt 1 ] || (( $trailing_dashes )); then - suffix=(-q -S --) - fi - if [[ $IPREFIX != *-- ]]; then - compset -P 1 '*--' - local category=${IPREFIX%--} - _description -V branches expl "${library:-}branches" - compadd $suffix "$expl[@]" \ - ${${(@)$($BAZ ${library:-}branches $archive/$category)}##*--} - fi - if [ $1 -gt 1 ] && [[ $IPREFIX = *-- ]] && [[ $PREFIX = *--* ]]; then - _baz_namespace_versions $(($1 - 1)) - fi -} - -(( $+functions[_baz_namespace_versions] )) || -_baz_namespace_versions () { - local suffix expl - if [ $1 -gt 1 ]; then - suffix=(-q -S --) - fi - if [[ $IPREFIX != *--*-- ]] || [[ $IPREFIX != */*--*-- ]]; then - compset -P 1 '*--' - local branch=${IPREFIX%--} - _description -V versions expl "${library:-}versions" - compadd $suffix "$expl[@]" \ - ${${(@)$($BAZ ${library:-}versions $archive/$branch)}##*--} - fi - if [ $1 -gt 1 ] && [[ $IPREFIX = *--*-- ]] && ([[ $IPREFIX = */*--*-- ]] \ - || [[ $PREFIX != */* ]]) && [[ $PREFIX = *--* ]]; then - _baz_namespace_revisions - fi -} - -(( $+functions[_baz_namespace_revisions] )) || -_baz_namespace_revisions () { - local expl - if [[ $IPREFIX != *--*--*-- ]] || [[ $IPREFIX != */*--*--*-- ]]; then - compset -P 1 '*--' - local version=${IPREFIX%--} - _description -V revisions expl "${library:-}revisions" - local completions c - completions=( - ${${(@)$($BAZ ${library:-}revisions $archive/$version)}##*--} - ) - (( exclude_library_revisions )) && \ - foreach c ($($BAZ library-revisions $archive/$version)); do completions[(r)$c]=(); done - compadd "$expl[@]" -a completions - fi -} - (( $+functions[_baz_config] )) || _baz_config () { local configdir root ret=1 n expl diff --git a/Completion/Unix/Command/_tla b/Completion/Unix/Command/_tla index 0951cc749..876f9dcf3 100644 --- a/Completion/Unix/Command/_tla +++ b/Completion/Unix/Command/_tla @@ -23,30 +23,19 @@ fi # completion functions (( $+functions[_tla_archives] )) || -_tla_archives () { - local expl completions library name_arg='-n' - if [[ -n $argv[(r)--library] ]]; then - library='library-' - # remove parameter from $@ before calling compadd - argv[(r)--library]=() - name_arg= - fi - completions=($(_call_program tla $TLA ${library:-}archives $name_arg)) - _description -V archives expl "${library:-}archives" - compadd "$@" "$expl[@]" -- "$completions[@]" -} +_tla_archives () { _arch_archives tla "$@" } (( $+functions[_tla_categories] )) || -_tla_categories () { _tla_namespace 1 "$argv[@]" } +_tla_categories () { _arch_namespace tla 1 "$argv[@]" } (( $+functions[_tla_branches] )) || -_tla_branches () {_tla_namespace 2 "$argv[@]" } +_tla_branches () {_arch_namespace tla 2 "$argv[@]" } (( $+functions[_tla_versions] )) || -_tla_versions () { _tla_namespace 3 "$argv[@]" } +_tla_versions () { _arch_namespace tla 3 "$argv[@]" } (( $+functions[_tla_revisions] )) || -_tla_revisions () { _tla_namespace 4 "$argv[@]" } +_tla_revisions () { _arch_namespace tla 4 "$argv[@]" } (( $+functions[_tla_local_revisions] )) || _tla_local_revisions () { @@ -59,102 +48,6 @@ _tla_local_revisions () { # Should complete based on -A, -R, -d } -(( $+functions[_tla_namespace] )) || -_tla_namespace () { #double as arch_namespace_categories -# takes an integer argument specifying how many components: -# 1: category -# 2: branch -# 3: version -# 4: revision - local suffix expl archive=`$TLA my-default-archive 2> /dev/null` - local trailing_dashes=0 - [[ -n $argv[(r)--trailing-dashes] ]] && trailing_dashes=1 - local library - [[ -n $argv[(r)--library] ]] && library='library-'; - local exclude_library_revisions=0 - [[ -n $argv[(r)--exclude-library-revisions] ]] && exclude_library_revisions=1 - - if [ $1 -gt 1 ] || (( trailing_dashes )); then - suffix=(-q -S --) - fi - if [[ $PREFIX = */* ]]; then - compset -P '*/' - archive=${IPREFIX%/*} - _description -V categories expl "${library:-}categories in $archive" - compadd $suffix "$expl[@]" `$TLA ${library:-}categories -A $archive` - elif [ -z $IPREFIX ]; then - local index=$(( words[(i)-A] + 1 )) - (( index < CURRENT )) || index=$(( words[(i)--archive] + 1 )) - (( index < CURRENT )) && archive=$words[$index] - - if [ $archive ]; then - _description -V categories expl "${library:-}categories in $archive" - compadd "$expl[@]" $suffix `$TLA ${library:-}categories -A $archive` - fi - - _tla_archives -S / ${library:+--library} - fi - if [ $archive ] && [ $1 -gt 1 ] && [[ $PREFIX != *@* ]] \ - && [[ $PREFIX = *--* ]]; then - #this match could be better - _tla_namespace_branches $(($1 - 1)) - fi -} - -(( $+functions[_tla_namespace_branches] )) || -_tla_namespace_branches () { - local suffix expl - if [ $1 -gt 1 ] || (( $trailing_dashes )); then - suffix=(-q -S --) - fi - if [[ $IPREFIX != *-- ]]; then - compset -P 1 '*--' - local category=${IPREFIX%--} - _description -V branches expl "${library:-}branches" - compadd $suffix "$expl[@]" \ - ${${(@)$($TLA ${library:-}branches -A $archive $category)}##*--} - fi - if [ $1 -gt 1 ] && [[ $IPREFIX = *-- ]] && [[ $PREFIX = *--* ]]; then - _tla_namespace_versions $(($1 - 1)) - fi -} - -(( $+functions[_tla_namespace_versions] )) || -_tla_namespace_versions () { - local suffix expl - if [ $1 -gt 1 ]; then - suffix=(-q -S --) - fi - if [[ $IPREFIX != *--*-- ]] || [[ $IPREFIX != */*--*-- ]]; then - compset -P 1 '*--' - local branch=${IPREFIX%--} - _description -V versions expl "${library:-}versions" - compadd $suffix "$expl[@]" \ - ${${(@)$($TLA ${library:-}versions -A $archive $branch)}##*--} - fi - if [ $1 -gt 1 ] && [[ $IPREFIX = *--*-- ]] && ([[ $IPREFIX = */*--*-- ]] \ - || [[ $PREFIX != */* ]]) && [[ $PREFIX = *--* ]]; then - _tla_namespace_revisions - fi -} - -(( $+functions[_tla_namespace_revisions] )) || -_tla_namespace_revisions () { - local expl - if [[ $IPREFIX != *--*--*-- ]] || [[ $IPREFIX != */*--*--*-- ]]; then - compset -P 1 '*--' - local version=${IPREFIX%--} - _description -V revisions expl "${library:-}revisions" - local completions c - completions=( - ${${(@)$($TLA ${library:-}revisions -A $archive $version)}##*--} - ) - (( exclude_library_revisions )) && \ - foreach c ($($TLA library-revisions -A $archive $version)); do completions[(r)$c]=(); done - compadd "$expl[@]" -a completions - fi -} - (( $+functions[_tla_config] )) || _tla_config () { diff --git a/Completion/Unix/Type/_arch_archives b/Completion/Unix/Type/_arch_archives new file mode 100644 index 000000000..9ffd7e3d3 --- /dev/null +++ b/Completion/Unix/Type/_arch_archives @@ -0,0 +1,14 @@ +#autoload + +local ARCHCMD="$1" +shift +local expl completions library name_arg='-n' +if [[ -n $argv[(r)--library] ]]; then + library='library-' + # remove parameter from $@ before calling compadd + argv[(r)--library]=() + name_arg= +fi +completions=($(_call_program ${ARCHCMD} ${ARCHCMD} ${library:-}archives $name_arg)) +_description -V archives expl "${library:-}archives" +compadd "$@" "$expl[@]" -- "$completions[@]" diff --git a/Completion/Unix/Type/_arch_namespace b/Completion/Unix/Type/_arch_namespace new file mode 100644 index 000000000..171293887 --- /dev/null +++ b/Completion/Unix/Type/_arch_namespace @@ -0,0 +1,105 @@ +#autoload + +_arch_namespace () { #double as arch_namespace_categories + local ARCHCMD="$1" + shift +# takes an integer argument specifying how many components: +# 1: category +# 2: branch +# 3: version +# 4: revision + local suffix expl archive=`$ARCHCMD my-default-archive 2> /dev/null` + local trailing_dashes=0 + [[ -n $argv[(r)--trailing-dashes] ]] && trailing_dashes=1 + local library + [[ -n $argv[(r)--library] ]] && library='library-'; + local exclude_library_revisions=0 + [[ -n $argv[(r)--exclude-library-revisions] ]] && exclude_library_revisions=1 + + if [ $1 -gt 1 ] || (( trailing_dashes )); then + suffix=(-q -S --) + fi + if [[ $PREFIX = */* ]]; then + compset -P '*/' + archive=${IPREFIX%/*} + _description -V categories expl "${library:-}categories in $archive" + compadd $suffix "$expl[@]" `$ARCHCMD ${library:-}categories $archive` + elif [ -z $IPREFIX ]; then + local index=$(( words[(i)-A] + 1 )) + (( index < CURRENT )) || index=$(( words[(i)--archive] + 1 )) + (( index < CURRENT )) && archive=$words[$index] + + if [ $archive ]; then + _description -V categories expl "${library:-}categories in $archive" + compadd "$expl[@]" $suffix `$ARCHCMD ${library:-}categories $archive` + fi + + _arch_archives "$ARCHCMD" -S / ${library:+--library} + fi + if [ $archive ] && [ $1 -gt 1 ] && [[ $PREFIX != *@* ]] \ + && [[ $PREFIX = *--* ]]; then + #this match could be better + _arch_namespace_branches "$ARCHCMD" $(($1 - 1)) + fi +} + +(( $+functions[_arch_namespace_branches] )) || +_arch_namespace_branches () { + local ARCHCMD="$1" + shift + local suffix expl + if [ $1 -gt 1 ] || (( $trailing_dashes )); then + suffix=(-q -S --) + fi + if [[ $IPREFIX != *-- ]]; then + compset -P 1 '*--' + local category=${IPREFIX%--} + _description -V branches expl "${library:-}branches" + compadd $suffix "$expl[@]" \ + ${${(@)$($ARCHCMD ${library:-}branches $category)}##*--} + fi + if [ $1 -gt 1 ] && [[ $IPREFIX = *-- ]] && [[ $PREFIX = *--* ]]; then + _arch_namespace_versions "${ARCHCMD}" $(($1 - 1)) + fi +} + +(( $+functions[_arch_namespace_versions] )) || +_arch_namespace_versions () { + local ARCHCMD="$1" + shift + local suffix expl + if [ $1 -gt 1 ]; then + suffix=(-q -S --) + fi + if [[ $IPREFIX != *--*-- ]] || [[ $IPREFIX != */*--*-- ]]; then + compset -P 1 '*--' + local branch=${IPREFIX%--} + _description -V versions expl "${library:-}versions" + compadd $suffix "$expl[@]" \ + ${${(@)$($ARCHCMD ${library:-}versions $branch)}##*--} + fi + if [ $1 -gt 1 ] && [[ $IPREFIX = *--*-- ]] && ([[ $IPREFIX = */*--*-- ]] \ + || [[ $PREFIX != */* ]]) && [[ $PREFIX = *--* ]]; then + _arch_namespace_revisions "${ARCHCMD}" + fi +} + +(( $+functions[_arch_namespace_revisions] )) || +_arch_namespace_revisions () { + local ARCHCMD="$1" + local expl + if [[ $IPREFIX != *--*--*-- ]] || [[ $IPREFIX != */*--*--*-- ]]; then + compset -P 1 '*--' + local version=${IPREFIX%--} + _description -V revisions expl "${library:-}revisions" + local completions c + completions=( + ${${(@)$($ARCHCMD ${library:-}revisions $version)}##*--} + ) + (( exclude_library_revisions )) && \ + foreach c ($($ARCHCMD library-revisions $version)); do completions[(r)$c]=(); done + compadd "$expl[@]" -a completions + fi +} + +_arch_namespace "$@" -- cgit 1.4.1