From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 9371 invoked by alias); 27 Jul 2011 18:21:33 -0000 Mailing-List: contact zsh-workers-help@zsh.org; run by ezmlm Precedence: bulk X-No-Archive: yes List-Id: Zsh Workers List List-Post: List-Help: X-Seq: 29624 Received: (qmail 4701 invoked from network); 27 Jul 2011 18:21:32 -0000 X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on f.primenet.com.au X-Spam-Level: X-Spam-Status: No, score=-2.6 required=5.0 tests=BAYES_00,RCVD_IN_DNSWL_LOW autolearn=ham version=3.3.1 Received-SPF: none (ns1.primenet.com.au: domain at lukaperkov.net does not designate permitted sender hosts) Date: Wed, 27 Jul 2011 20:21:22 +0200 From: Luka Perkov To: Frank Terbeck Cc: zsh-workers@zsh.org Subject: Re: PATCH: _quilt: fix push and pop completion Message-ID: <20110727182122.GA12513@w500.lan> References: <20110726225739.GA6008@w500.lan> <87wrf46u2s.fsf@ft.bewatermyfriend.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <87wrf46u2s.fsf@ft.bewatermyfriend.org> User-Agent: Mutt/1.5.21 (2010-09-15) On Wed, Jul 27, 2011 at 09:50:19AM +0200, Frank Terbeck wrote: > Luka Perkov wrote: > > Patch fixes 'bug' in _quilt completion script when there is not possible > > to do push or pop. Also tabs are replaced with spaces because they were > > not consistent. > > This still doesn't quite work for me. > > When I'm trying push or pop completion in a directory where there are no > quilt patches at all, the completion is still echoing back error > messages to me. > > Also, your patch runs `quilt' twice, which is not needed. Yes, I knew this and could not find way around it. I'm glad you did :) > How about checking for the return value of `quilt' after running the > {un,}applied sub-commands? Great. I fixed it a bit more so when you run for example 'quilt pop' you can only choose one patch; that is how it should work. That's the 'CURRENT == 2' stuff... I think this can be applied if that is ok with everyone. diff --git a/Completion/Unix/Command/_quilt b/Completion/Unix/Command/_quilt index a2fd799..0c51ba5 100644 --- a/Completion/Unix/Command/_quilt +++ b/Completion/Unix/Command/_quilt @@ -1,5 +1,8 @@ #compdef quilt +local -a tmp +local rc + _arguments \ '--trace' \ '--quiltrc:config file:_files' \ @@ -10,21 +13,37 @@ _arguments \ '*::subcmd:->subcmd' && return 0 case "$state" in - (subcmd) + (subcmd) case "$words[1]" in (applied|delete|files|graph|header|next|previous|refresh|unapplied) - _wanted -V 'patches' expl 'patch' compadd ${(f)"$(quilt series)"} - ;; + _wanted -V 'patches' expl 'patch' compadd ${(f)"$(quilt series)"} + ;; (push) - _wanted -V 'unapplied patches' expl 'patch' compadd ${(f)"$(quilt unapplied)"} - ;; + if (( CURRENT == 2 )); then + tmp=( ${(f)"$(quilt unapplied 2>&1)"} ) + rc=$? + if (( rc == 0 )); then + _wanted -V 'unapplied patches' expl 'patch' compadd "${tmp[@]}" + else + _message "No unapplied patches" + fi + fi + ;; (pop) - _wanted -V 'applied patches' expl 'patch' compadd ${(f)"$(quilt applied)"} - ;; + if (( CURRENT == 2 )); then + tmp=( ${(f)"$(quilt applied 2>&1)"} ) + rc=$? + if (( rc == 0 )); then + _wanted -V 'applied patches' expl 'patch' compadd "${tmp[@]}" + else + _message "No applied patches" + fi + fi + ;; (*) - _files - ;; + _files + ;; esac ;; esac