summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog8
-rw-r--r--Completion/Unix/Command/_stgit59
2 files changed, 16 insertions, 51 deletions
diff --git a/ChangeLog b/ChangeLog
index 79744103c..635c4028a 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2010-12-16 Andrey Borzenkov <bor@zsh.org>
+
+ * 27715: Completion/Unix/Command/_stgit: fixes for new
+ version (workaround removed commands); autogenerate list
+ of stg subcommands.
+
2010-02-16 Peter Stephenson <pws@csr.com>
* unposted: Completion/Unix/Command/.distfiles: new files
@@ -12759,5 +12765,5 @@
*****************************************************
* This is used by the shell to define $ZSH_PATCHLEVEL
-* $Revision: 1.4902 $
+* $Revision: 1.4903 $
*****************************************************
diff --git a/Completion/Unix/Command/_stgit b/Completion/Unix/Command/_stgit
index c8a3c8c80..129b21a92 100644
--- a/Completion/Unix/Command/_stgit
+++ b/Completion/Unix/Command/_stgit
@@ -2,53 +2,7 @@
typeset -a subcmds
-subcmds=(
- 'help:print the detailed command usage'
- 'version:display version information'
- 'copyright:display copyright information'
- 'clone:make a local clone of a remote repository'
- 'id:print the GIT hash value of a StGIT reference'
- 'applied:print the applied patches'
- 'branch:manage patch stacks'
- 'clean:delete the empty patches in the series'
- 'commit:permanently store the applied patches into stack base'
- 'float:push patches to the top, even if applied'
- 'goto:push or pop patches to the given one'
- 'hide:hide a patch in the series'
- 'init:initialise the current branch for use with StGIT'
- 'patches:show the applied patches modifying a file'
- 'pop:pop one or more patches from the stack'
- 'pull:pull the changes from the remote repository'
- 'push:push one or more patches onto of the stack'
- 'rebase:move the stack base to another point in history'
- 'repair:Fix StGit metadata if branch was modified with git commands'
- 'series:print the patch series'
- 'sink:send patches deeper down the stack'
- 'top:print the name of the top patch'
- 'unapplied:print the unapplied patches'
- 'uncommit:turn regular GIT commits into StGIT patches'
- 'unhide:unhide a hidden patch in the series'
- 'delete:delete patches'
- 'edit:edit a patch description or diff'
- 'export:exports patches to a directory'
- 'files:show the files modified by a patch (or the current patch)'
- 'fold:integrate a GNU diff patch into the current patch'
- 'import:import a GNU diff file as a new patch'
- 'log:display the patch changelog'
- 'mail:send a patch or series of patches by e-mail'
- 'new:create a new patch and make it the topmost one'
- 'pick:import a patch from a different branch or a commit object'
- 'refresh:generate a new commit for the current patch'
- 'rename:rename a patch in the series'
- 'show:show the commit corresponding to a patch (or the current patch)'
- 'sync:synchronise patches with a branch or a series'
- 'add:add files or directories to the repository'
- 'cp:copy files inside the repository'
- 'diff:show the tree diff'
- 'resolved:mark a file conflict as solved'
- 'rm:remove files from the repository'
- 'status:show the tree status'
-)
+subcmds=( ${${${(M)${(f)"$(stg help 2> /dev/null)"}## *}# }/#(#b)([^[:space:]]##)[[:space:]]##(*)/$match[1]:$match[2]} )
local curcontext="$curcontext"
local subcmd
@@ -64,14 +18,19 @@ else
case $subcmd in
(push)
- _wanted -V "unapplied patches" expl "patch" compadd $(stg unapplied) \
+ _wanted -V "unapplied patches" expl "patch" \
+ compadd ${${(M)${(f)"$(stg series 2> /dev/null)"}##- *}#- } \
&& ret=0
;;
(pop)
- _wanted -V "applied patches" expl "patch" compadd $(stg applied) && ret=0
+ _wanted -V "applied patches" expl "patch" \
+ compadd ${${(M)${(f)"$(stg series 2> /dev/null)"}##[+>] *}#[+>] } \
+ && ret=0
;;
(edit|files|goto|rename|log|float|delete|sink|mail|sync|show|pick|hide)
- _wanted -V "patches" expl "patch" compadd $(stg series --noprefix) && ret=0
+ _wanted -V "patches" expl "patch" \
+ compadd $(stg series --noprefix > /dev/null) \
+ && ret=0
;;
(*)
_files