Re: [PATCH/RFC] completion: complete refs in multiple steps
- Date: Mon, 28 Jan 2019 12:27:07 -0500
- From: Jeff King <peff@xxxxxxxx>
- Subject: Re: [PATCH/RFC] completion: complete refs in multiple steps
On Mon, Jan 28, 2019 at 03:38:28PM +0100, SZEDER Gábor wrote:
> > - __gitcomp_direct "$(__git_refs "$remote" "$track" "$pfx" "$cur_" "$sfx")"
> > + __gitcomp_direct "$(__git_refs "$remote" "$track" "$pfx" "$cur_" "$sfx" | __git_collapse_refs "$cur_")"
> > }
> In general I think it would be much better to rely more on 'git
> for-each-ref' to do the heavy lifting, extending it with new format
> specifiers/options as necessary.
FWIW, that was my first thought, too.
> '%(refname:rstrip=-<N>)' already comes somewhat close to what we would
> need for full ref completion (i.e. 'refs/b<TAB>' to complete
> 'refs/bisec/bad'), we only have to figure out how many "ref path
> components" to show based on the number of path components in the
> current word to be completed. Alas, it won't add the trailing '/' for
> "ref directories".
I think it also makes it hard to do one thing which (I think) people
would want: if there is a single deep ref, complete the whole thing.
$ git for-each-ref --refname='%(refname)'
we'd ideally complete "fo" to "foo/" and "ano" to "another/deep/one",
rather than making the user tab through each level.
Doing that requires actually understanding that the refs are in a list,
and not formatting each one independently. So I kind of wonder if it
would be easier to simply have a completion mode in ref-filter.