Now the parameter completion is only available for subcommands delivered with git. Providers of external subcommands do not have a way to supply bash completion for their commands (other than instructing users to hack their git-completion.bash file). This makes it possible to have completion also for external git subcommands. It can be provided by specifying a function (or a command in PATH) '_git_<subcommand>' that sets the environment variable COMPREPLY. All dashes (-) in the subcommand name are replaced with underscores (_). E.g. completion for command 'git foo-bar' can be provided by '_git_foo_bar'. Signed-off-by: Teemu Matilainen <teemu.matilainen@xxxxxx> --- contrib/completion/git-completion.bash | 8 +++++++- 1 files changed, 7 insertions(+), 1 deletions(-) diff --git a/contrib/completion/git-completion.bash b/contrib/completion/git-completion.bash index fe93747..c7ac727 100755 --- a/contrib/completion/git-completion.bash +++ b/contrib/completion/git-completion.bash @@ -14,6 +14,9 @@ # *) git 'subcommands' # *) tree paths within 'ref:path/to/file' expressions # *) common --long-options +# *) completion for external 'git <sub-command>' can be provided by +# specifying function (or command in PATH) '_git_<sub_command>' +# that sets COMPREPLY # # To use these routines: # @@ -2257,7 +2260,10 @@ _git () svn) _git_svn ;; tag) _git_tag ;; whatchanged) _git_log ;; - *) COMPREPLY=() ;; + *) + local f="_git_${command//-/_}" + type -t "$f" >/dev/null && "$f" || COMPREPLY=() + ;; esac } -- 1.7.0.83.g241b9 -- 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