[PATCH 1/2] bash: Enable completion for external subcommands
From: Teemu Matilainen <hidden>
Date: 2016-06-15 22:48:20
Subsystem:
the rest · Maintainer:
Linus Torvalds
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 <redacted> --- 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