Subject: Re: [PATCH 1/4] completion: introduce __gitcomp_subcommand

From: Junio C Hamano <[email-masked]>
Date: Fri, 26 Jan 2024 09:26:44 -0800

Rubén Justo <[email-masked]> writes:

> +# Completion for subcommands in commands that follow the syntax:
> +#
> +#    git <command> <subcommand>
> +#
> +# 1: List of possible completion words.
> +# Returns false if the current word is not a possible subcommand
> +# (possitioned after the command), or if no option is found in
> +# the list provided.
> +__gitcomp_subcommand ()
> +{
> +	local subcommands="$1"
> +
> +	if [ $cword -eq $(($__git_cmd_idx + 1)) ]; then
> +		__gitcomp "$subcommands"
> +
> +		test -n "$COMPREPLY"
> +	else
> +		false
> +	fi
> +}

I am not at all familiar with the code in this file, so treat this
as a question from somebody who do not know the calling convention
used around here.

This helper function clobbers what was in COMPREPLY[@] before
calling it, from a caller's point of view.  Is it a pattern that
potential callers in this file should already find familiar, and
they do not have to be reminded that they cannot rely on what they
prepared in COMPREPLY to be preserved across a call into this
function?  Otherwise I would suggest mentioning it in the helpful
comment before the function, but I cannot tell if such a comment is
even needed by the intended audience, so...