Re: [PATCH 3/6] completion: return the index of found word from __git_find_on_cmdline()
- From
Eric Sunshine <sunshine@sunshineco.com>
- Date
- Oct 17, 2019, 17:52 UTC
- Message-ID
- <CAPig+cTLCTPtUWHKVBQEaP9GkrmrnHPwfef8KnktOSqYQY-jPA@mail.gmail.com>
- In-Reply-To
- <20191017173501.3198-4-szeder.dev@gmail.com>
On Thu, Oct 17, 2019 at 1:35 PM SZEDER Gábor <szeder.dev@gmail.com> wrote:
Show 28 quoted lines
> 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 <szeder.dev@gmail.com>
> ---
> 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...
Show 17 quoted lines
> + 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