Zsh Mailing List Archive
Messages sorted by:
Reverse Date,
Date,
Thread,
Author
Re: device cannot be completed after "ip link show dev"
- X-seq: zsh-users 20061
- From: Peter Stephenson <p.stephenson@xxxxxxxxxxx>
- To: zsh-users@xxxxxxx
- Subject: Re: device cannot be completed after "ip link show dev"
- Date: Wed, 01 Apr 2015 13:15:25 +0100
- In-reply-to: <20150401100718.GB2805@localhost.localdomain>
- List-help: <mailto:zsh-users-help@zsh.org>
- List-id: Zsh Users List <zsh-users.zsh.org>
- List-post: <mailto:zsh-users@zsh.org>
- Mailing-list: contact zsh-users-help@xxxxxxx; run by ezmlm
- Organization: Samsung Cambridge Solution Centre
- References: <20150330033930.GB2856@localhost.localdomain> <20150331195701.4bc78e7c@ntlworld.com> <20150401100718.GB2805@localhost.localdomain>
On Wed, 1 Apr 2015 18:07:19 +0800
Han Pingtian <hanpt@xxxxxxxxxxxxxxxxxx> wrote:
> What's going on when
>
> % ip link show dev <tab>
>
> , please? It looks like the old pattern
> /$'[[:alnum:][:punct:][:cntrl:][:digit:]]##\0'/ will match here, so the
> action ':interfaces:network interface:_net_interfaces' will be bypassed?
> But I think there is nothing at the position of <tab>, why the old
> pattern would match a empty string?
At that point it's not using the pattern, it's constructing a
completion. It only uses the pattern to determine if a *previous* entry
on the line is of a particular type.
> > This is better. There's still a possible glitch: if a device springs
> > into existence dynamically we won't accept it as a device already part
> > of the command line argument, though we will still complete it as that
> > calls _net_interfaces again. I think that's fairly minor.
> >
> I have tested (by set a fake net_intf_list) that if there is a interface
> which named "dev", the completion will fail with this patch.
I certain wouldn't expect to support a device called "dev" in the
general case, that will screw up parsing horribly.
> And I have figured out this works:
>
> subcmd_dev=(
> /$'[[:alnum:][:punct:][:cntrl:][:digit:]]##\0'/
> -'if [[ $words[CURRENT-1] = dev ]];then false;else true;fi'
> ':interfaces:network interface:_net_interfaces'
> )
I didn't even know what format guards could take in general... that
seems a reasonable optimisation since after a "dev" you don't care what
the pattern is, it's automatically a device. Except I don't really
understand what guards do, so this may need a bit more testing...
pws
Messages sorted by:
Reverse Date,
Date,
Thread,
Author