[PATCH 2/4] completion: introduce __git_find_subcommand
- From
Rubén Justo <rjusto@gmail.com>
- Date
- Jan 26, 2024, 12:51 UTC
- Message-ID
- <221f88b9-fc91-479f-8d08-f530796e2d13@gmail.com>
- In-Reply-To
- <98daf977-dbad-4d3b-a293-6a769895088f@gmail.com>
Let's have a function to get the current subcommand when completing commands that follow the syntax:
git <command> <subcommand>
As a convenience, let's allow an optional "default subcommand" to be returned if none is found.
Signed-off-by: Rubén Justo <rjusto@gmail.com> --- contrib/completion/git-completion.bash | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+)
diff --git a/contrib/completion/git-completion.bash b/contrib/completion/git-completion.bash index 916e137021..5f2e904b56 100644 --- a/contrib/completion/git-completion.bash +++ b/contrib/completion/git-completion.bash @@ -575,6 +575,26 @@ __gitcomp_subcommand () fi } +# Find the current subcommand for commands that follow the syntax: +# +# git <command> <subcommand> +# +# 1: List of possible subcommands. +# 2: Optional subcommand to return when none is found. +__git_find_subcommand () +{ + local subcommand subcommands="$1" default_subcommand="$2" + + for subcommand in $subcommands; do + if [ "$subcommand" = "${words[__git_cmd_idx+1]}" ]; then + echo $subcommand + return + fi + done + + echo $default_subcommand +} + # Execute 'git ls-files', unless the --committable option is specified, in # which case it runs 'git diff-index' to find out the files that can be # committed. It return paths relative to the directory specified in the first
-- 2.43.0