Subject: Re: bash completion only provides revs, not paths

From: Uwe Kleine-König <[email-masked]>
Date: Wed, 23 Apr 2008 07:56:37 +0200

Hello Shawn,

Shawn O. Pearce wrote:
> Uwe Kleine-Knig <[email-masked]> wrote:
> > currently autocompletion in 
> > 
> > 	ukleinek@zentaur:~/gsrc/linux-2.6 git log ar<tab>
> > 
> > only yields "armltd/" (i.e. the prefix of some remote tracking branches)
> > but most of the time I want it to complete to "arch/".
> 
> Right.  It favors refs over paths.  Why?  Because I complete refs
> more than I complete paths.
>  
> > I don't understand that autocompletion stuff, but probably to fix that
> > several __git_complete_revlist should be replaced by a
> > __git_complete_revlist_or_path.  The harder part is to implement the
> > latter function.  An optimal implementation would only give back paths
> > if there is a "--" somewhere before the cursor.
> 
> Its ugly, but if we only do path name completion after a -- then
> we can just return "" as the options to bash, and it will go off
> and do the path name completion itself.  If we do path names and
> and refs at the same time, that's a disaster waiting to happen.
> We would have to do the path name completion ourselves.
I thought compgen can be used for that:

	ukleinek@zentaur:~/gsrc/linux-2.6$ compgen -f ar
	arch

> How is this?
I like it and have already applied it.
 
> --8<--
> bash completion: Completely only path names after -- in options
> 
> If the user has inserted a -- before the current argument we are
> being asked to complete they are most likely trying to force Git into
> treating this argument as a path name, and not as a ref.  We should
> allow bash to complete it as a path from the local working directory.
> 
> Suggested-by: Uwe Kleine-Knig <[email-masked]>
There is a letter missing in my name.  I wonder why it's always the only
non-ascii one :-)

Best regards and thanks,
Uwe

-- 
Uwe Kleine-König, Software Engineer
Digi International GmbH Branch Breisach, Küferstrasse 8, 79206 Breisach, Germany
Tax: 315/5781/0242 / VAT: DE153662976 / Reg. Amtsgericht Dortmund HRB 13962