Allow git submodule subcommands to be completed. This allows the
'--remote' in the command 'git submodule update --remote', for example,
to be fully completed.

Signed-off-by: Denton Liu <liu.den...@gmail.com>
---
Hi Shawn, sorry this is my first contribution to a mailing-list based
project. If I've done anything wrong, please let me know.

Thanks,

Denton Liu

---
 contrib/completion/git-completion.bash | 46 ++++++++++++++++++++++++++--------
 1 file changed, 35 insertions(+), 11 deletions(-)

diff --git a/contrib/completion/git-completion.bash 
b/contrib/completion/git-completion.bash
index 21016bf8d..941fbdfe2 100644
--- a/contrib/completion/git-completion.bash
+++ b/contrib/completion/git-completion.bash
@@ -2556,17 +2556,41 @@ _git_submodule ()
        __git_has_doubledash && return
 
        local subcommands="add status init deinit update summary foreach sync"
-       if [ -z "$(__git_find_on_cmdline "$subcommands")" ]; then
-               case "$cur" in
-               --*)
-                       __gitcomp "--quiet --cached"
-                       ;;
-               *)
-                       __gitcomp "$subcommands"
-                       ;;
-               esac
-               return
-       fi
+       local subcommand="$(__git_find_on_cmdline "$subcommands")"
+
+       case "$subcommand,$cur" in
+       ,--*)
+               __gitcomp "--quiet"
+               ;;
+       ,*)
+               __gitcomp "$subcommands --quiet"
+               ;;
+       add,--*)
+               __gitcomp "--force --name --reference --depth"
+               ;;
+       status,--*)
+               __gitcomp "--cached --recursive"
+               ;;
+       deinit,--*)
+               __gitcomp "--force --all"
+               ;;
+       update,--*)
+               __gitcomp "
+                       --init --remote --no-fetch --no-recommended-shallow
+                       --recommended-shallow --force --rebase --merge 
--reference
+                       --depth --recursive --jobs
+                       "
+               ;;
+       summary,--*)
+               __gitcomp "--cached --files --summary-limit"
+               ;;
+       summary,*)
+               __gitcomp_nl "$(__git_refs)"
+               ;;
+       foreach,--*|sync,--*)
+               __gitcomp "--recursive"
+               ;;
+       esac
 }
 
 _git_svn ()
-- 
2.11.0

Reply via email to