From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 12279 invoked by alias); 31 Mar 2015 01:27:49 -0000 Mailing-List: contact zsh-users-help@zsh.org; run by ezmlm Precedence: bulk X-No-Archive: yes List-Id: Zsh Users List List-Post: List-Help: X-Seq: 20050 Received: (qmail 14947 invoked from network); 31 Mar 2015 01:27:46 -0000 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on f.primenet.com.au X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,FREEMAIL_FROM, RCVD_IN_DNSWL_NONE autolearn=ham version=3.3.2 Message-ID: <5519F807.2030006@gmx.com> Date: Mon, 30 Mar 2015 21:27:35 -0400 From: Eric Cook User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.5.0 MIME-Version: 1.0 To: zsh-users@zsh.org Subject: Re: device cannot be completed after "ip link show dev" References: <20150330033930.GB2856@localhost.localdomain> In-Reply-To: <20150330033930.GB2856@localhost.localdomain> Content-Type: multipart/mixed; boundary="------------050607040709050404090804" X-Provags-ID: V03:K0:MpjSA7k3+5qTrg7QnMtLJpSTjl8YDU1B2ZjiVm1J4MW6/pO02sx Yv8LnYuz3iP6uqz54GU61B/Na+sVZn4elpDK9fHPTrAGbmlM2MJlc0sW7UEx8Ntz2ltx37l h6VIM+nGbZupVKamoD5OkMZQAu4Fs+tcWUweDnFauP/0cHT6UBbG0f8JOpdD5QN7Bm9ZDRy EnOeRPHNdqejnYyvjIrcg== X-UI-Out-Filterresults: notjunk:1; --------------050607040709050404090804 Content-Type: text/plain; charset=windows-1252 Content-Transfer-Encoding: 7bit On 03/29/2015 11:39 PM, Han Pingtian wrote: > Hi, > > Although in _ip() the "link_show_cmds" is defined to > > 188 local -a link_show_cmds > 189 _regex_words link-show-commands 'link show commands' \ > 190 'dev:specify device:$subcmd_dev' \ > 191 'up:limit display to running devices' > 192 link_show_cmds=("(" $subcmd_dev "|" ")" "$reply[@]" "#" ) > 193 > > but the device cannot be completed after "ip link show dev": > > % ip link show dev > link show commands > dev -- specify device > up -- limit display to running devices > > Only "dev" and "up" listed. It looks like something wrong? > > Thanks! > So if you revert my change to the array subcmd_dev, completing after dev works. But completing after `ip link set lo' or virbr0-nic, "fails to parse the previous word." I can't seem to find a pattern that works in both cases, but adding the previous line back allows completing after: `ip link show dev'. But after the argument for `dev', the option `up' is no longer show. Hopefully someone with better knowledge of the _regex_* functions could help. --------------050607040709050404090804 Content-Type: text/x-patch; name="_ip.patch" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="_ip.patch" diff --git a/Completion/Unix/Command/_ip b/Completion/Unix/Command/_ip index 3b68c35..a6470da 100644 --- a/Completion/Unix/Command/_ip +++ b/Completion/Unix/Command/_ip @@ -9,7 +9,10 @@ # Values encoding simple types # local -a subcmd_dev -subcmd_dev=(/$'[[:alnum:][:punct:][:cntrl:][:digit:]]##\0'/ ':interfaces:network interface:_net_interfaces') +subcmd_dev=( + /$'[[:alnum:][:punct:][:cntrl:]]##\0'/ ':interfaces:network interface:_net_interfaces' + /$'[[:alpha:]]##[[:digit:]]##(\.[[:digit:]]##)#\0'/ ':interfaces:network interface:_net_interfaces' +) local -a subcmd_onoff subcmd_onoff=(/$'(on|off)\0'/ ':onoff:state (on or off):(on off)') --------------050607040709050404090804--