Subject: Re: [PATCH v5] git-completion.bash: add support for path completion

From: Manlio Perillo <[email-masked]>
Date: Sat, 12 Jan 2013 13:53:13 +0100

Il 11/01/2013 19:48, Manlio Perillo ha scritto:
> The git-completion.bash script did not implemented full, git aware,
> support to complete paths, for git commands that operate on files within
> the current working directory or the index.
> [...]
>  
> +# Try to count non option arguments passed on the command line for the
> +# specified git command.
> +# When options are used, it is necessary to use the special -- option to
> +# tell the implementation were non option arguments begin.
> +# XXX this can not be improved, since options can appear everywhere, as
> +# an example:
> +#	git mv x -n y
> +#
> +# __git_count_arguments requires 1 argument: the git command executed.
> +__git_count_arguments ()
> +{
> +	local word i c=0
> +
> +	# Skip "git" (first argument)
> +	for ((i=1; i < ${#words[@]}; i++)); do
> +		word="${words[i]}"
> +
> +		case "$word" in
> +			--)

Sorry, I have incorrectly (again) indented the case labels.
I have now configured my editor to correctly indent this.

> +				# Good; we can assume that the following are only non
> +				# option arguments.
> +				((c = 0))
> +				;;

Here I was thinking to do something like this (not tested):

		-*)
			if [ -n ${2-} ]; then
				# Assume specified git command only
                                # accepts simple options
				# (without arguments)
				((c = 0))

Since git mv only accepts simple options, this will make the use of '--'
not required.

Note that I'm assuming the single '-' character is used as a non-option
argument; not sure this is the case of Git.

> [...]

Regards  Manlio