On Thu, Oct 17, 2019 at 1:35 PM SZEDER Gábor <[email protected]> wrote:
> When using the __git_find_on_cmdline() helper function so far we've
> only been interested in which one of a set of words appear on the
> command line. To complete options for some of 'git worktree's
> subcommands in the following patches we'll need not only that, but the
> index of that word on the command line as well.
>
> Extend __git_find_on_cmdline() to optionally show the index of the
> found word on the command line (IOW in the $words array) when the
> '--show-idx' option is given.
>
> Signed-off-by: SZEDER Gábor <[email protected]>
> ---
> diff --git a/contrib/completion/git-completion.bash
> b/contrib/completion/git-completion.bash
> @@ -1069,18 +1069,32 @@ __git_aliased_command ()
> # Check whether one of the given words is present on the command line,
> # and print the first word found.
> +#
> +# Usage: __git_find_on_cmdline [<option>]... "<wordlist>"
> +# --show-idx: Optionally show the index of the found word in the $words
> array.
> __git_find_on_cmdline ()
> {
> - local word c=1
> + local word c=1 show_idx
> +
> + while test $# -gt 1; do
> + case "$1" in
> + --show-idx) show_idx=y ;;
> + *) return 1 ;;
Should this emit an error message to aid a person debugging a test
which fails on a call to __git_find_on_cmdline()? For instance:
echo "unrecognized option/argument: $1" >&2
return 1
;;
or something...
> + esac
> + shift
> + done
> local wordlist="$1"
>
> while [ $c -lt $cword ]; do
> for word in $wordlist; do
> if [ "$word" = "${words[c]}" ]; then
> - echo "$word"
> + if [ -n "$show_idx" ]; then
> + echo "$c $word"
> + else
> + echo "$word"
> + fi
> return
> fi
> done