From: Jeff King <peff@peff.net>
To: Junio C Hamano <gitster@pobox.com>
Cc: Kerrick Staley <mail@kerrickstaley.com>, git@vger.kernel.org
Subject: Re: bash-completion now loads completions dynamically, so __git_ps1 is not defined when you open a shell
Date: Thu, 29 Mar 2012 01:57:02 -0400 [thread overview]
Message-ID: <20120329055702.GC27604@sigill.intra.peff.net> (raw)
In-Reply-To: <7v1uoctlp2.fsf@alter.siamese.dyndns.org>
On Wed, Mar 28, 2012 at 03:17:13PM -0700, Junio C Hamano wrote:
> Kerrick Staley <mail@kerrickstaley.com> writes:
>
> > The __git_ps1 function is defined in same script that defines Git's
> > tab completions (contrib/completion/git-completion.bash). Since
> > bash-completion loads completions on-the-fly in newer versions, the
> > __git_ps1 function isn't immediately available in a new shell. How
> > should this be handled? Should users just source git-completion.bash
> > before they redefine $PS1?
>
> Sorry, I don't quite get it. "newer verions" of what?
>
> To me, completion scripts have always been to be dot-sourced early, making
> sure inclusion happen before PS1 is used. Did we change anything recently
> to break it????
No, it is not us. The bash-completion project used to look in something
like /etc/bash_completions.d and load everything at shell startup.
Packagers could then drop our git-completion file there, and everything
just worked.
But it made starting the shell very slow, as you loaded completions for
commands that you were unlikely to ever run. Newer versions of
bash-completions load as little as possible on startup. When you first
try to tab-complete "git <tab>", _then_ it looks for a "git" file and
loads it on the fly.
So people who put ". /path/to/git-completion.bash" have nothing to worry
about. Everything will work as normal. People who depend on dropping
the file somewhere that bash-completion can find it (or who use a
package which does so) will find that they do not have __git_ps1 at
shell startup with newer versions of bash-completion. Those people will
need to start sourcing the file themselves (or possibly bash-completion
could do it, but it really feels like it is not their responsibility, as
the prompt functions have nothing to do with completion).
We can help them out by breaking the file apart into "must be loaded at
startup" and "can be loaded dynamically" bits, so they don't end up
loading more than they need to.
-Peff
next prev parent reply other threads:[~2012-03-29 5:57 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-03-28 20:27 bash-completion now loads completions dynamically, so __git_ps1 is not defined when you open a shell Kerrick Staley
2012-03-28 22:17 ` Junio C Hamano
2012-03-29 5:57 ` Jeff King [this message]
2012-03-28 23:06 ` Jonathan Nieder
2012-03-29 0:00 ` Kerrick Staley
2012-03-29 5:49 ` Jeff King
2012-04-07 13:01 ` Felipe Contreras
2012-04-07 13:47 ` Jonathan Nieder
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20120329055702.GC27604@sigill.intra.peff.net \
--to=peff@peff.net \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=mail@kerrickstaley.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).