Zsh Mailing List Archive
Messages sorted by: Reverse Date, Date, Thread, Author

Re: PATCH: _quilt: fix push and pop completion



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.

How about checking for the return value of `quilt' after running the
{un,}applied sub-commands?

The following seems to work:


diff --git a/Completion/Unix/Command/_quilt b/Completion/Unix/Command/_quilt
index a2fd799..fd475ed 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' \
@@ -14,17 +17,29 @@ case "$state" in
 
   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)"}
-    	;;
+        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
+        ;;
       (pop)
-    	_wanted -V 'applied patches' expl 'patch' compadd ${(f)"$(quilt applied)"}
-    	;;
+        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
+        ;;
       (*)
-    	_files
-    	;;
+        _files
+        ;;
   esac
   ;;
 esac



Messages sorted by: Reverse Date, Date, Thread, Author