On Fri, Nov 16, 2012 at 3:39 PM, Marc Khouzam <marc.khou...@gmail.com> wrote:
> On Thu, Nov 15, 2012 at 8:41 PM, Felipe Contreras
> <felipe.contre...@gmail.com> wrote:
>> On Thu, Nov 15, 2012 at 12:51 PM, Marc Khouzam <marc.khou...@gmail.com> 
>> wrote:
>>> The current tcsh-completion support for Git, as can be found on the
>>> Internet, takes the approach of defining the possible completions
>>> explicitly.  This has the obvious draw-back to require constant
>>> updating as the Git code base evolves.
>>> The approach taken by this commit is to to re-use the advanced bash
>>> completion script and use its result for tcsh completion.  This is
>>> achieved by executing (versus sourcing) the bash script and
>>> outputting the completion result for tcsh consumption.
>>> Three solutions were looked at to implement this approach with (A)
>>> being retained:
>>>   A) Modifications:
>>>           git-completion.bash and new git-completion.tcsh
>> As I said, I don't think this is needed. It can be done in a single
>> stand-alone script without modifications to git-completion.bash.
>> This works:
> Thank you for taking the time to try things out.
> What you suggest below is an improvement on solution (C).
> I had chosen (A) instead because (C) creates a third script
> which gets generated each time a new shell is started.

We could generate the script only when it's not already present. The
disadvantage is that if this script is updated, the helper one would
not. One way to solve the problem would be to append the current
version of git, and figure a way to query it out. Another would be to
checksum it. But then again, maybe it's more expensive to check the
version or checksum than just write the file again.

Is it possible to just check if this is a login shell?

>> set called = ($_)
> I fought with this a lot before posting to the list.
> It seems that $_ is not set when a double sourcing
> happens.  Testing the solution as an actual user
> showed me that when I start a new shell it
> sources ~/.tcshrc, which then sources ~/.git-completion.tcsh
> and then $_ is empty for some reason.
> I couldn't find another way to figure out where the script
> is located, which is why I had to force the user to use
> ${HOME} for everything.

Ah :(

Felipe Contreras
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to