Lee Marlow <lee.marlow@xxxxxxxxx> wrote: > Renamed cached __git_commandlist to __git_porcelain_commandlist > and added __git_all_commandlist that only filters out *--* helpers. > Completions for 'git help' will use the __git_all_commandlist, while > __git_porcelain_commandlist is used for git command completion. > Users who actually read man pages may want to see help for plumbing > commands. > > Options added: --all --info --man --web > > Signed-off-by: Lee Marlow <lee.marlow@xxxxxxxxx> Acked-by: Shawn O. Pearce <spearce@xxxxxxxxxxx> > This version fixes a small error in the __git_all_commands ... > diff --git a/contrib/completion/git-completion.bash b/contrib/completion/git-completion.bash > index 2edb341..f3bdea4 100755 > --- a/contrib/completion/git-completion.bash > +++ b/contrib/completion/git-completion.bash > @@ -349,10 +349,10 @@ __git_complete_revlist () > esac > } > > -__git_commands () > +__git_all_commands () > { > - if [ -n "$__git_commandlist" ]; then > - echo "$__git_commandlist" > + if [ -n "$__git_all_commandlist" ]; then > + echo "$__git_all_commandlist" > return > fi > local i IFS=" "$'\n' > @@ -360,6 +360,24 @@ __git_commands () > do > case $i in > *--*) : helper pattern;; > + *) echo $i;; > + esac > + done > +} > +__git_all_commandlist= > +__git_all_commandlist="$(__git_all_commands 2>/dev/null)" > + > +__git_porcelain_commands () > +{ > + if [ -n "$__git_porcelain_commandlist" ]; then > + echo "$__git_porcelain_commandlist" > + return > + fi > + local i IFS=" "$'\n' > + for i in "help" $(__git_all_commands) > + do > + case $i in > + *--*) : helper pattern;; > applymbox) : ask gittus;; > applypatch) : ask gittus;; > archimport) : import;; > @@ -427,8 +445,8 @@ __git_commands () > esac > done > } > -__git_commandlist= > -__git_commandlist="$(__git_commands 2>/dev/null)" > +__git_porcelain_commandlist= > +__git_porcelain_commandlist="$(__git_porcelain_commands 2>/dev/null)" > > __git_aliases () > { > @@ -767,6 +785,18 @@ _git_gc () > COMPREPLY=() > } > > +_git_help () > +{ > + local cur="${COMP_WORDS[COMP_CWORD]}" > + case "$cur" in > + --*) > + __gitcomp "--all --info --man --web" > + return > + ;; > + esac > + __gitcomp "$(__git_all_commands)" > +} > + > _git_ls_remote () > { > __gitcomp "$(__git_remotes)" > @@ -1369,7 +1399,8 @@ _git () > case "$i" in > --git-dir=*) __git_dir="${i#--git-dir=}" ;; > --bare) __git_dir="." ;; > - --version|--help|-p|--paginate) ;; > + --version|-p|--paginate) ;; > + --help) command="help"; break ;; > *) command="$i"; break ;; > esac > c=$((++c)) > @@ -1389,7 +1420,7 @@ _git () > --help > " > ;; > - *) __gitcomp "$(__git_commands) $(__git_aliases)" ;; > + *) __gitcomp "$(__git_porcelain_commands) $(__git_aliases)" ;; > esac > return > fi > @@ -1414,6 +1445,7 @@ _git () > fetch) _git_fetch ;; > format-patch) _git_format_patch ;; > gc) _git_gc ;; > + help) _git_help ;; > log) _git_log ;; > ls-remote) _git_ls_remote ;; > ls-tree) _git_ls_tree ;; -- Shawn. -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html