zsh-users
 help / color / mirror / code / Atom feed
* no tab completion with equo
@ 2014-09-15 18:13 Clemens Schüller
  2014-09-16 13:01 ` Vadim A. Misbakh-Soloviov
  0 siblings, 1 reply; 7+ messages in thread
From: Clemens Schüller @ 2014-09-15 18:13 UTC (permalink / raw)
  To: zsh users

Hello!


equo is the frontend to the package manager of sabayon linux:

In the equo package is a tab completion file for the zsh. But zsh won't
work with the completion.

--8<---------------cut here---------------start------------->8---
[mente@cougar: ~]% equo [TAB]
No matches for: `command' or `equo command'
--8<---------------cut here---------------end--------------->8---


--8<---------------cut here---------------start------------->8---
[mente@cougar: ~]% dir /usr/share/zsh/site-functions/_equo 
-rw-r--r-- 1 root root 2636 29. Jun 16:35 /usr/share/zsh/site-functions/_equo
--8<---------------cut here---------------start------------->8---


--8<---------------cut here---------------start------------->8---
[mente@cougar: ~]% cat /usr/share/zsh/site-functions/_equo
#compdef equo

local curcontext="$curcontext" state line cmds packages mirrors
typeset -A opt_args


_equo_get_mirrors()
{
  mirrors=( ${(f)"$(equo status | grep Repository\ name | cut -d: -f2 | sed 's/^\ *//')"} )
  _describe -t packages 'mirrors' mirrors
}

_equo_get_cmds()
{
  cmds=( ${(f)"$(equo $1 --help | tr "\t" ":" | grep "^:[^:]" | sed 's/^:\([^:\ ]*\)[^:]*:*/\1:/')"} )
  _describe -t commands 'command params' cmds
}

_equo_get_installed_packages()
{
  packages=( ${(f)"$(equo query list installed | equo query list installed | sed 's/.*\///')"}  )
  _describe -t packages 'installed packages' packages
}

_equo_get_available_packages()
{
  packages=( ${(f)"$(equo search $1 | grep Package |sed 's/.*\/\([^\ ]*\).*/\1/')"}  )
  _describe -t packages 'available packages' packages
}

_arguments -C \
  "--help[print help]" \
  "--version[print version]" \
  "--nocolor[dont use colors]" \
  "--color[use colors(default)]" \
  "--bashcomp[print bash completion script]"\
  '1:command:->cmds' \
  '*:subcommand:->args'

case $state in
  cmds)
    cmds=( ${(f)"$(equo --help |tr "\t" ":" | grep "^:[^:-]" | sed 's/^:\(\w*\).*:\+/\1:/')"} )
    _describe -t commands 'equo command' cmds
  ;;
  args)
    case $line[1] in
      remove|config)
        _equo_get_cmds $line[1] && return 0
        _equo_get_installed_packages
      ;;
      install|fetch|search|source|mask|unmask)
        _equo_get_cmds $line[1] && return 0
        _equo_get_available_packages $line[-1]
      ;;
      repo)
        case $line[2] in
          enable|disable|remove|mirrorsort)
            _equo_get_mirrors
          ;;
          add|merge)
          ;;
          *)
            _equo_get_cmds $line[1] 
          ;;
        esac
      ;;
      query)
        case $line[2] in
          changelog|revdeps|files|needed|removal|graph|revgraph)
            _equo_get_installed_packages
          ;;
          list)
            case $line[3] in
              available)
                _equo_get_mirrors
              ;;
              installed)
              ;;
              *)
                cmds=( ${(f)"$(equo query list --help |tr "\t" ":" | grep "^::[^:]" | sed 's/^::\([^:\ ]*\)[^:]*:*/\1:/')"} )
                _describe -t commands 'command params' cmds
              ;;
            esac
          ;;
          belongs|description|license|mimetype|asociate|orphans|required|sets|slots|tags)
          ;;
          *)
            _equo_get_cmds $line[1]
          ;;
        esac
      ;;
      notice)
        _equo_get_mirrors
      ;;
      cleanup|status)
      ;;
      *)
        _equo_get_cmds $line[1]
      ;;
    esac
  ;;
esac
--8<---------------cut here---------------start------------->8---


Can anyone help me. Thanks :-)

-- 
Best Regards, Clemens Schüller


^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: no tab completion with equo
  2014-09-15 18:13 no tab completion with equo Clemens Schüller
@ 2014-09-16 13:01 ` Vadim A. Misbakh-Soloviov
  2014-09-16 16:22   ` Clemens Schüller
  0 siblings, 1 reply; 7+ messages in thread
From: Vadim A. Misbakh-Soloviov @ 2014-09-16 13:01 UTC (permalink / raw)
  To: zsh-users

[-- Attachment #1: Type: text/plain, Size: 772 bytes --]

В письме от Пн, 15 сентября 2014 20:13:38 пользователь Clemens Schüller 
написал:
> Hello!
> 
> 
> equo is the frontend to the package manager of sabayon linux:
> 
> In the equo package is a tab completion file for the zsh. But zsh won't
> work with the completion.
> 

Hi!
First of all, it is orphaned (nobody fixed it for new equo/entropy API).
I thought to do it some time ago, but I've no enough time for it.

But I can hint, that basic completion is broken here: 
> case $state in
>   cmds)
>     cmds=( ${(f)"$(equo --help |tr "\t" ":" | grep "^:[^:-]" | sed
> 's/^:\(\w*\).*:\+/\1:/')"} ) _describe -t commands 'equo command' cmds

(there is no \t's anymore in equo output) ;)

-- 
Best regards,
mva

[-- Attachment #2: This is a digitally signed message part. --]
[-- Type: application/pgp-signature, Size: 819 bytes --]

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: no tab completion with equo
  2014-09-16 13:01 ` Vadim A. Misbakh-Soloviov
@ 2014-09-16 16:22   ` Clemens Schüller
  2014-09-17  0:28     ` Bart Schaefer
  2014-09-17  6:27     ` Vadim A. Misbakh-Soloviov
  0 siblings, 2 replies; 7+ messages in thread
From: Clemens Schüller @ 2014-09-16 16:22 UTC (permalink / raw)
  To: zsh users

Hello, Vadim!

First of all: Thanks for your reply :-)

"Vadim A. Misbakh-Soloviov" <mva@mva.name> writes:
> В письме от Пн, 15 сентября 2014 20:13:38 пользователь Clemens Schüller 
> написал:


>> case $state in
>>   cmds)
>>     cmds=( ${(f)"$(equo --help |tr "\t" ":" | grep "^:[^:-]" | sed
>> 's/^:\(\w*\).*:\+/\1:/')"} ) _describe -t commands 'equo command' cmds
>
> (there is no \t's anymore in equo output) ;)

When I completely cut out the tr part from the pipe, the error is the same.

Do you mean this or something else?


-- 
Best Regards, Clemens Schüller


^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: no tab completion with equo
  2014-09-16 16:22   ` Clemens Schüller
@ 2014-09-17  0:28     ` Bart Schaefer
  2014-10-09  2:40       ` Clemens Schüller
  2014-09-17  6:27     ` Vadim A. Misbakh-Soloviov
  1 sibling, 1 reply; 7+ messages in thread
From: Bart Schaefer @ 2014-09-17  0:28 UTC (permalink / raw)
  To: Clemens Schuller, zsh users

On Sep 16,  6:22pm, Clemens Schuller wrote:
}
} >>     cmds=( ${(f)"$(equo --help |tr "\t" ":" | grep "^:[^:-]" | sed
} >> 's/^:\(\w*\).*:\+/\1:/')"} ) _describe -t commands 'equo command' cmds
} >
} > (there is no \t's anymore in equo output) ;)
} 
} When I completely cut out the tr part from the pipe, the error is the same.
} 
} Do you mean this or something else?

I think you need to run "equo --help" and look at it.  Removing the "tr"
just fails to convert anything into colons, so the grep|sed that follows
won't properly slice up the listing into the individual sub-commands.


^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: no tab completion with equo
  2014-09-16 16:22   ` Clemens Schüller
  2014-09-17  0:28     ` Bart Schaefer
@ 2014-09-17  6:27     ` Vadim A. Misbakh-Soloviov
  2014-10-09  2:43       ` Clemens Schüller
  1 sibling, 1 reply; 7+ messages in thread
From: Vadim A. Misbakh-Soloviov @ 2014-09-17  6:27 UTC (permalink / raw)
  To: zsh-users

[-- Attachment #1: Type: text/plain, Size: 1439 bytes --]

(sorry, previous try was sent to you personally, but not to the list)
(it's strange, that client hassuch reaction on your letters to the list).
(anyway, resentit to the list)


> When I completely cut out the tr part from the pipe, the error is the same.
> 
> Do you mean this or something else?

No. I not mean you should remove tr. I mean, you should start to dig here (and 
replace that command with properone to get equo command list.
For example,
> equo --bashcomp

Although, it'll be best to minimize equo calls on completion generation (since 
it is both slower and dangerous (nobody guarantee, that Fabio will not change 
syntax again tomorrow ;)

Although, I guess, it is pretty ok to use
> --bashcomp
for first level completion.

Also, as far as I looked in the equo and Entropy  code, --bashcomp should not 
have it's current behaviour of returning first-level arguments all the time, 
but should return proper arguments for each level. Unfortunately, it is 
broken, and probably, you (and me, lol) should poke Fabio (lxnay) about that 
on sabayon BZ or #sabayon-dev @ FreeNode.

Alternativelly, it is possible to just make completion with manually 
predefined arguments list (like I did for emerge in gentoo's zsh-completion 
package) and call equo only when it is really needed (packages completion and 
so on).

Anyway, it needs a bit more work, than just fix tr :)

-- 
Best regards,
mva

[-- Attachment #2: This is a digitally signed message part. --]
[-- Type: application/pgp-signature, Size: 819 bytes --]

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: no tab completion with equo
  2014-09-17  0:28     ` Bart Schaefer
@ 2014-10-09  2:40       ` Clemens Schüller
  0 siblings, 0 replies; 7+ messages in thread
From: Clemens Schüller @ 2014-10-09  2:40 UTC (permalink / raw)
  To: Bart Schaefer; +Cc: zsh users

Hello!

Bart Schaefer <schaefer@brasslantern.com> writes:

> On Sep 16,  6:22pm, Clemens Schuller wrote:
> }
> } >>     cmds=( ${(f)"$(equo --help |tr "\t" ":" | grep "^:[^:-]" | sed
> } >> 's/^:\(\w*\).*:\+/\1:/')"} ) _describe -t commands 'equo command' cmds
> } >
> } > (there is no \t's anymore in equo output) ;)
> } 
> } When I completely cut out the tr part from the pipe, the error is the same.
> } 
> } Do you mean this or something else?
>
> I think you need to run "equo --help" and look at it.  Removing the "tr"
> just fails to convert anything into colons, so the grep|sed that follows
> won't properly slice up the listing into the individual sub-commands.

Sorry, but I am not familiar with shell coding.

I will wait, until the changes are applied in the _equo file ;-)


-- 
Best Regards, Clemens Schüller


^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: no tab completion with equo
  2014-09-17  6:27     ` Vadim A. Misbakh-Soloviov
@ 2014-10-09  2:43       ` Clemens Schüller
  0 siblings, 0 replies; 7+ messages in thread
From: Clemens Schüller @ 2014-10-09  2:43 UTC (permalink / raw)
  To: Vadim A. Misbakh-Soloviov; +Cc: zsh-users

Hello!

"Vadim A. Misbakh-Soloviov" <mva@mva.name> writes:


> (sorry, previous try was sent to you personally, but not to the list)
> (it's strange, that client hassuch reaction on your letters to the list).
> (anyway, resentit to the list)

No problem ;-)


[ ... ]

> Also, as far as I looked in the equo and Entropy  code, --bashcomp should not 
> have it's current behaviour of returning first-level arguments all the time, 
> but should return proper arguments for each level. Unfortunately, it is 
> broken, and probably, you (and me, lol) should poke Fabio (lxnay) about that 
> on sabayon BZ or #sabayon-dev @ FreeNode.
>
> Alternativelly, it is possible to just make completion with manually 
> predefined arguments list (like I did for emerge in gentoo's zsh-completion 
> package) and call equo only when it is really needed (packages completion and 
> so on).
>
> Anyway, it needs a bit more work, than just fix tr :)

As I wrote in the other mail (reply to Barts Posting): I am not familiar
with shell coding. I will wait, until you have the time to fix the
error(s) in the _equo file.


TIA
-- 
Best Regards, Clemens Schüller


^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2014-10-09  2:52 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2014-09-15 18:13 no tab completion with equo Clemens Schüller
2014-09-16 13:01 ` Vadim A. Misbakh-Soloviov
2014-09-16 16:22   ` Clemens Schüller
2014-09-17  0:28     ` Bart Schaefer
2014-10-09  2:40       ` Clemens Schüller
2014-09-17  6:27     ` Vadim A. Misbakh-Soloviov
2014-10-09  2:43       ` Clemens Schüller

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).