From: Clint Adams <schizo@debian.org>
To: Roger Leigh <rleigh@debian.org>, 390574@bugs.debian.org
Cc: zsh-workers@sunsite.dk
Subject: Re: Bug#390574: zsh: Updated completions for schroot and dchroot
Date: Sun, 1 Oct 2006 17:49:53 -0400 [thread overview]
Message-ID: <20061001214953.GA25131@scowler.net> (raw)
In-Reply-To: <20061001210027.13349.94075.reportbug@hardknott.home>
> Hi,
>
> Attached is a patch to update the completions for schroot and dchroot, and also
> to add completions for dchroot-dsa.
>
> Since I'm new to zsh, some parts of the patch might be suboptimal. Feel free to
> alter it. The bit I'm not sure about is:
>
> - compadd ${${$(dchroot -l)[3,-1]%,}:#\[*\]} && ret=0
> + compadd $(echo ${$(dchroot -l)[3,-1]%,} | sed -e 's/\[//g' -e 's/\]//g' | sort | uniq)
>
> The output of dchroot:
>
> % dchroot -l
> Available chroots: experimental, fake, sarge [stable, sarge-backports], sid [unstable, unstable-sbuild], sid-block [sid-block], sid-file, sid-file-source, sid-snap, sid-snap-source, testsnap, testsnap-source
>
> The ,[] all need stripping, and duplicates need removing. The old code assumes
> there will only be one name in square brackets, but this is no longer the case.
> I didn't find a way to do this with the zsh shell ${} operations.
Yes, you can do it with something like this (the line break is literal)
${(os:,:)${${${"$(dchroot -l)"#Available chroots: }/\[*\]/}//[
]/}}
I'll tweak the patch.
> diff -urN zsh-4.3.2.original/Completion/Debian/Command/_dchroot zsh-4.3.2/Completion/Debian/Command/_dchroot
> --- zsh-4.3.2.original/Completion/Debian/Command/_dchroot 2005-11-25 09:45:33.000000000 +0000
> +++ zsh-4.3.2/Completion/Debian/Command/_dchroot 2006-10-01 21:48:22.030202507 +0100
> @@ -1,18 +1,27 @@
> #compdef dchroot
>
> -local curcontext="$curcontext" state line expl ret=1
> +local expl context state line
> +typeset -A opt_args
>
> -_arguments -C \
> - '(-c -l -h -V)-a[execute in all known chroots]' \
> - '(-a -l -h -V)-c[execute in specified chroot]:chroot:->chroots' \
> - '(- *)-l[list available chroots]' \
> - '(-l)-d[preserve environment in chroot]' \
> - '(-h -l -V)-q[be quiet]' \
> - '(- *)-h[display help information]' \
> - '(- *)-V[display version information]' \
> - '*::args: _normal' && ret=0
> +_arguments -S \
> + '(-h --help)'{-h,--help}'[help]' \
> + '(-a --all)'{-a,--all}'[select all chroots]' \
> + '*'{-c,--chroot=}'[use specified chroot]:chroot:->chroot' \
> + '(-d --directory)'{-d,--directory=}'[directory to use]:dir:_files -W / -P /' \
> + '(-l --list)'{-l,--list}'[list available chroots]' \
> + '(-i --info)'{-i,--info}'[show information about selected chroots]' \
> + '(-p --path)'{-p,--path}'[print path to selected chroot]' \
> + '--config[dump configuration of selected chroots]' \
> + '(-d --preserve-environment)'{-d,--preserve-environment}'[preserve user environment]' \
> + '(-q --quiet)'{-q,--quiet}'[quiet]' \
> + '(-v --verbose)'{-v,--verbose}'[verbose]' \
> + '(-V --version)'{-V,--version}'[version]' \
> + '(-):command name: _command_names -e' \
> + '*::arguments: _normal' && return 0
>
> -[[ -n $state ]] && _wanted chroots expl chroot \
> - compadd ${${$(dchroot -l)[3,-1]%,}:#\[*\]} && ret=0
> -
> -return ret
> +case "$state" in
> + (chroot)
> + _wanted tag expl 'chroot' \
> + compadd $(echo ${$(dchroot -l)[3,-1]%,} | sed -e 's/\[//g' -e 's/\]//g' | sort | uniq)
> + ;;
> +esac
> diff -urN zsh-4.3.2.original/Completion/Debian/Command/_dchroot-dsa zsh-4.3.2/Completion/Debian/Command/_dchroot-dsa
> --- zsh-4.3.2.original/Completion/Debian/Command/_dchroot-dsa 1970-01-01 01:00:00.000000000 +0100
> +++ zsh-4.3.2/Completion/Debian/Command/_dchroot-dsa 2006-10-01 21:49:02.110202507 +0100
> @@ -0,0 +1,26 @@
> +#compdef dchroot-dsa
> +
> +local expl context state line
> +typeset -A opt_args
> +
> +_arguments -S \
> + '(-h --help)'{-h,--help}'[help]' \
> + '(-a --all)'{-a,--all}'[select all chroots]' \
> + '*'{-c,--chroot=}'[use specified chroot]:chroot:->chroot' \
> + '(-d --directory)'{-d,--directory=}'[directory to use]:dir:_files -W / -P /' \
> + '(-l --list)'{-l,--list}'[list available chroots]' \
> + '(-i --info)'{-i,--info}'[show information about selected chroots]' \
> + '(-p --listpaths)'{-p,--listpaths}'[print paths to available chroots]' \
> + '--config[dump configuration of selected chroots]' \
> + '(-q --quiet)'{-q,--quiet}'[quiet]' \
> + '(-v --verbose)'{-v,--verbose}'[verbose]' \
> + '(-V --version)'{-V,--version}'[version]' \
> + '(-):command name: _command_names -e' \
> + '*::arguments: _normal' && return 0
> +
> +case "$state" in
> + (chroot)
> + _wanted tag expl 'chroot' \
> + compadd $(echo ${$(dchroot -l)[3,-1]%,} | sed -e 's/\[//g' -e 's/\]//g' | sort | uniq)
> + ;;
> +esac
> diff -urN zsh-4.3.2.original/Completion/Debian/Command/_schroot zsh-4.3.2/Completion/Debian/Command/_schroot
> --- zsh-4.3.2.original/Completion/Debian/Command/_schroot 2006-02-27 02:08:29.000000000 +0000
> +++ zsh-4.3.2/Completion/Debian/Command/_schroot 2006-10-01 21:45:06.762202507 +0100
> @@ -5,30 +5,30 @@
>
> _arguments -S \
> '(-h --help)'{-h,--help}'[help]' \
> - '(-a --all)'{-a,--all}'[all chroots and active sessions]' \
> - '--all-chroots' \
> - '--all-sessions' \
> - '*'{-c,--chroot=}':chroot:->chroot' \
> - '(-u --user)'{-u,--user=}':user:_users' \
> + '(-a --all)'{-a,--all}'[select all chroots and active sessions]' \
> + '--all-chroots[select all chroots]' \
> + '--all-sessions[select all active sessions]' \
> + '*'{-c,--chroot=}'[use specified chroot]:chroot:->chroot' \
> + '(-d --directory)'{-d,--directory=}'[directory to use]:dir:_files -W / -P /' \
> + '(-u --user)'{-u,--user=}'[username (default current user)]:user:_users' \
> '(-l --list)'{-l,--list}'[list available chroots]' \
> - '(-i --info)'{-i,--info}'[print detailed information about specified chroots]' \
> - '--location[print location of specified chroots]' \
> - '--config[print configuration of specified chroots]' \
> - '(-p --preserve-environment)'{-p,--preserve-environment}'[preserve user environment within chroot]' \
> + '(-i --info)'{-i,--info}'[show information about selected chroots]' \
> + '--location[print location of selected chroots]' \
> + '--config[dump configuration of selected chroots]' \
> + '(-p --preserve-environment)'{-p,--preserve-environment}'[preserve user environment]' \
> '(-q --quiet)'{-q,--quiet}'[quiet]' \
> '(-v --verbose)'{-v,--verbose}'[verbose]' \
> '(-V --version)'{-V,--version}'[version]' \
> - '(-b --begin-session)'{-b,--begin-session}'[begin a session]' \
> - '--recover-session}[recover an existing session]' \
> - '(-e --end-session)'{-e,--end-session=}':session UUID:' \
> - '(-f --force)'{-f,--force}'[force a session operation]' \
> + '(-b --begin-session)'{-b,--begin-session}'[begin a session; returns a session ID]' \
> + '--recover-session[recover an existing session]' \
> + '(-e --end-session)'{-e,--end-session}'[end an existing session]' \
> + '(-f --force)'{-f,--force}'[force operation]' \
> '(-):command name: _command_names -e' \
> '*::arguments: _normal' && return 0
>
> case "$state" in
> (chroot)
> _wanted tag expl 'chroot' \
> - compadd $(schroot -l)
> + compadd $(schroot -l -a)
> ;;
> -
> esac
next parent reply other threads:[~2006-10-01 21:50 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <20061001210027.13349.94075.reportbug@hardknott.home>
2006-10-01 21:49 ` Clint Adams [this message]
[not found] ` <874punel7y.fsf@hardknott.home>
2006-10-02 0:36 ` Clint Adams
[not found] ` <87sli6nyjc.fsf@hardknott.home>
2006-10-03 6:14 ` Clint Adams
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20061001214953.GA25131@scowler.net \
--to=schizo@debian.org \
--cc=390574@bugs.debian.org \
--cc=rleigh@debian.org \
--cc=zsh-workers@sunsite.dk \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://git.vuxu.org/mirror/zsh/
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).