zsh-workers
 help / color / mirror / code / Atom feed
From: Luka Perkov <lists@lukaperkov.net>
To: Frank Terbeck <ft@bewatermyfriend.org>
Cc: zsh-workers@zsh.org
Subject: Re: PATCH: _quilt: fix push and pop completion
Date: Wed, 27 Jul 2011 20:21:22 +0200	[thread overview]
Message-ID: <20110727182122.GA12513@w500.lan> (raw)
In-Reply-To: <87wrf46u2s.fsf@ft.bewatermyfriend.org>

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


  reply	other threads:[~2011-07-27 18:21 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-07-26 22:57 Luka Perkov
2011-07-27  7:50 ` Frank Terbeck
2011-07-27 18:21   ` Luka Perkov [this message]
2011-07-29 13:10     ` Frank Terbeck
2011-07-29 22:15       ` Luka Perkov

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=20110727182122.GA12513@w500.lan \
    --to=lists@lukaperkov.net \
    --cc=ft@bewatermyfriend.org \
    --cc=zsh-workers@zsh.org \
    /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).