Gábor Szeder <[email protected]> writes:
> words[] is just fine, we never modify it after it is filled by
> _get_comp_words_by_ref() at the very beginning.
Hmph. I would have understood if the latter were "we never look at
it (to decide what to do)". "we never modify it" does not sound
like an enough justification behind "words[] is just fine"---maybe I
am not reading you correctly.
> The root of the problem is that the expected position of the name
> of the git command in __git_complete_remote_or_refspec() is
> hardcoded as words[1], but that is not the case when:
>
> 1) it's an alias, as in Felipe's example: git p ori<TAB>,
> because while the index is ok, the content is not.
>
> 2) in presence of options of the main git command: git -c
> foo=bar push ori<TAB>, because the index is off.
>
> 3) the command is a shell alias for which the user explicitly
> set the completion function with __git_complete() (at his own
> risk): alias gp="git push"; __git_complete gp _git_push; gp
> ori<TAB> Neither the index nor the content are ok.
>
> Fixing the hard-coded indexing would only solve 2) but not 1) and
> 3), as it obviously couldn't turn the git or shell alias into a
> git command on its own.
>
> Felipe's patch only deals with 1), as it only kicks in in case of
> a git alias.
Yeah, do completions for commands (not just for the ones that use
remote-or-refspec Felipe's patch addresses) have trouble with the
latter two in general? If that is the case,...
> Communicating the name of the git command to
> __git_complete_remote_or_refspec() by its callers via a new
> variable as suggested by Junio, or perhaps by an additional
> parameter to the function is IMHO the right thing to do, because,
> unless I'm missing something, it would make all three cases work.
... while the above analysis may be correct, taking Felipe's patch
to address only (1) and leaving a solution to the more general
words[1] problem for other patches on top might not be too bad an
approach.
Unless
(A) remote-or-refspec thing is the primary offender, and other
commands do not suffer from the words[1] problem, in which case
I tend to agree that an additional parameter would be the way
to go (there are only a few callers of the function); or
(B) even if words[1] problem is more widespread, such a more
general solution to all three issues can be coded cleanly and
quickly, without having to have Felipe's patch as a stop-gap
measure.
that is.
I'll keep Felipe's patch in the meantime to 'pu'.
Thanks.
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html