about summary refs log tree commit diff
path: root/Completion/Unix/Command/_quilt
diff options
context:
space:
mode:
Diffstat (limited to 'Completion/Unix/Command/_quilt')
-rw-r--r--Completion/Unix/Command/_quilt36
1 files changed, 22 insertions, 14 deletions
diff --git a/Completion/Unix/Command/_quilt b/Completion/Unix/Command/_quilt
index cbb1d90df..a2fd799a6 100644
--- a/Completion/Unix/Command/_quilt
+++ b/Completion/Unix/Command/_quilt
@@ -1,22 +1,30 @@
 #compdef quilt
 
-local _quilt_subcommands expl curcontext="$curcontext"
-
 _arguments \
   '--trace' \
   '--quiltrc:config file:_files' \
   '--version' \
-  '*::quilt command:->subcmd' && return 0
-
-
- _quilt_subcommands=(add files import previous setup annotate fold mail
- push snapshot applied fork new refresh top delete graph next remove
- unapplied diff grep patches rename upgrade edit header pop series)
+  ':quilt command:(add files import previous setup annotate fold mail push
+    snapshot applied fork new refresh top delete graph next remove unapplied
+    diff grep patches rename upgrade edit header pop series)' \
+  '*::subcmd:->subcmd' && return 0
 
+case "$state" in
+    (subcmd)
 
-if (( CURRENT == 1 )); then
-  _describe -t subcommand 'subcommand' _quilt_subcommands
-else
-  # this part should be tailored for subcmds
-  _files
-fi
+  case "$words[1]" in
+      (applied|delete|files|graph|header|next|previous|refresh|unapplied)
+      	_wanted -V 'patches' expl 'patch' compadd ${(f)"$(quilt series)"}
+	;;
+      (push)
+    	_wanted -V 'unapplied patches' expl 'patch' compadd ${(f)"$(quilt unapplied)"}
+    	;;
+      (pop)
+    	_wanted -V 'applied patches' expl 'patch' compadd ${(f)"$(quilt applied)"}
+    	;;
+      (*)
+    	_files
+    	;;
+  esac
+  ;;
+esac