bash completion: Resolve git show ref:path<tab> losing ref: portion
authorShawn O. Pearce <spearce@spearce.org>
Tue, 15 Jul 2008 05:52:04 +0000 (05:52 +0000)
committerJunio C Hamano <gitster@pobox.com>
Tue, 15 Jul 2008 06:35:18 +0000 (23:35 -0700)
commitdb8a9ff03831a26aa8bfad8bb026b90739d684ec
treebb730340310f88b7a70eb5db0b1537e2d723d7f2
parent778306e405b416d8073652c535777f2de5fc68ad
bash completion: Resolve git show ref:path<tab> losing ref: portion

Linus reported that the bash completion for git show often dropped
the ref portion of the argument (stuff before the :) when trying
to complete a file name of a file in another branch or tag.

Björn Steinbrink tracked it down to the gvfs completion script
which comes standard on many Fedora Core based systems.  That is
removing : from COMP_WORDBREAKS, making readline treat the entire
argument (including the ref) as the name that must be completed.
When the git completion routines supplied a completion of just the
filename, readline replaced everything.

Since Git users often need to use "ref:path" or "ref:ref" sort of
arguments, and expect completion support on both sides of the :
we really want the : in COMP_WORDBREAKS to provide a good user
experience.  This is also the default that ships with bash as it
can be useful in other contexts, such as rcp/scp.

We now try to add : back to COMP_WORDBREAKS if it has been removed
by a script that loaded before us.  However if this doesn't work
(as the : is stripped after we load) we fallback in the completion
routines to include "ref:" as part of the prefix for completions,
allowing readine to fully insert the argument the user wanted.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
contrib/completion/git-completion.bash