chiark / gitweb /
Teach bash to complete branch names in some places.
authorYann Dirson <ydirson@altern.org>
Sun, 6 May 2007 23:13:57 +0000 (01:13 +0200)
committerCatalin Marinas <catalin.marinas@gmail.com>
Mon, 14 May 2007 21:26:24 +0000 (22:26 +0100)
This patch causes bash completion to look for branch names instead of
patch names for "branch" and "rebase".

Unfortunately, the current completion framework does not seem flexible
enough to get branch completion after "-b" flags, but I feel things
are already better this way.

Signed-off-by: Yann Dirson <ydirson@altern.org>
contrib/stgit-completion.bash

index 3c3bf92d6a43e2fb9880f088dcceaf6bfc12082a..7e45c7e77124365945fbcf160b464f4f83a28427 100644 (file)
@@ -98,6 +98,12 @@ _all_other_patches ()
         | grep -v "^$(cat $g/patches/$b/current 2> /dev/null)$"
 }
 
+_all_branches ()
+{
+    local g=$(_gitdir)
+    [ "$g" ] && (cd .git/patches/ && echo *)
+}
+
 # List the command options
 _cmd_options ()
 {
@@ -137,6 +143,11 @@ _complete_patch_range_options ()
     COMPREPLY=($(compgen -W "$options" -- "$cur"))
 }
 
+_complete_branch ()
+{
+     COMPREPLY=($(compgen -W "$(_cmd_options $1) $($2)" -- "${COMP_WORDS[COMP_CWORD]}"))
+}
+
 # Generate completions for options from the given list.
 _complete_options ()
 {
@@ -211,6 +222,9 @@ _stg ()
         sync)   _stg_patches $command _applied_patches ;;
         # working-copy commands
         diff)   _stg_patches_options $command _applied_patches "-r --range" ;;
+       # commands that usually raher accept branches
+       branch) _complete_branch $command _all_branches ;;
+       rebase) _complete_branch $command _all_branches ;;
         # all the other commands
         *)      _stg_common $command ;;
     esac