On Thu, Oct 17, 2019 at 1:35 PM SZEDER Gábor <szeder.dev@xxxxxxxxx> 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 <szeder.dev@xxxxxxxxx> > --- > 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