git@vger.kernel.org mailing list mirror (one of many)
 help / color / mirror / code / Atom feed
From: Simon Oosthoek <s.oosthoek@xs4all.nl>
To: Junio C Hamano <gitster@pobox.com>
Cc: piotr.krukowiecki@gmail.com, git@vger.kernel.org
Subject: Re: [PATCH] make __git_ps1 accept a third parameter in pcmode
Date: Wed, 26 Dec 2012 21:19:44 +0100	[thread overview]
Message-ID: <20121226201944.GA15039@xs4all.nl> (raw)
In-Reply-To: <7vmwx0oavn.fsf@alter.siamese.dyndns.org>

* Junio C Hamano <gitster@pobox.com> [2012-12-26 11:45:48 -0800]:

> Simon Oosthoek <s.oosthoek@xs4all.nl> writes:
> 
> > The optional third parameter when __git_ps1 is used in
> > PROMPT_COMMAND mode as format string for printf to further
> > customize the way the git status string is embedded in the
> > user's PS1 prompt.
> >
> > Signed-off-by: Simon Oosthoek <s.oosthoek@xs4all.nl>
> > ---
> 
> Thanks.
> 
> If we do not care about the existing users (and in this case,
> because PROMPT_COMMAND mode is in no released version, we could
> declare there is no existing user), another and simpler approach is
> to just drop " (" and ")" altogether and have the user give these as
> part of the pre/post strings.
> 

The problem with doing it in pre-post is when inside non-git directories. You want to avoid any gitstring output, including the brackets, when not inside a repository.

Doing it all in the third parameter is perhaps a better approach, but then it becomes mandatory instead of optional.

> Or we could go the other way and drop "pre/post" strings, making
> them part of the printf_format string.  Perhaps that might be a
> better interface in the longer term.  Then people can use the same
> "<pre>%s<post>" format string and do either of these:
> 
> 	PS1=$(__git_ps1 "<pre>%s<post>")
> 	PROMPT_COMMAND='PS1=$(__git_ps1 "<pre>%s<post>")'
> 
> without __git_ps1 having a special "prompt command" mode, no?

But how to determine which mode to use?
In pcmode, you must set the PS1, in command-subsitute mode, you must print a formatted gitstring.

> 
> I have a feeling that I am missing something major, though...

I think the fundamentally different way of setting the PS1 between the two modes is very confusing. Which is why I originally made a different function (with duplicated code) for both modes.


> 
> >  				if [ "$w" = "*" ]; then
> > -					PS1="$PS1\[$bad_color\]$w"
> > +					gitstring="$gitstring\[$bad_color\]$w"
> >  				fi
> 
> Every time I looked at this line, I wondered why '*' state is
> "bad".  Does a user go into any "bad" state by having a dirty
> working tree?  Same for untracked ($u) and detached.  These are all
> perfectly normal part of a workflow, so while choice of red may be
> fine to attract attention, calling it "bad" sounds misguided.


Well, I'm most often a really casual user of git and to make this function work the way I want to, I found out by trial-and-error that this was a way to test whether it's time to colour the string red or green ;-)

I'm very open to better ways to determine the colour modes. Anyway, the colours are now more or less the same as what git itself uses when printing the status with colour hints in git status.

Cheers

Simon

  reply	other threads:[~2012-12-26 20:20 UTC|newest]

Thread overview: 20+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <CAA01Cso1E4EC4W667FEU_af2=uGOfPuaWEB3y+zPCpB+bPzoaA@mail.gmail.com>
2012-11-28 13:20 ` git-prompt.sh vs leading white space in __git_ps1()::printf_format Simon Oosthoek
     [not found]   ` <CAA01CspHAHN7se2oJ2WgcmpuRfoa+9Sx9sUvaPEmQ-Y+kDwHhA@mail.gmail.com>
2012-11-28 18:04     ` Piotr Krukowiecki
2012-11-28 20:08     ` Simon Oosthoek
2012-11-28 20:47       ` Junio C Hamano
2012-11-28 20:58         ` Simon Oosthoek
2012-12-11 22:47         ` Simon Oosthoek
2012-12-11 23:04           ` Junio C Hamano
2012-12-12  0:03             ` Junio C Hamano
2012-12-12  8:55               ` Simon Oosthoek
2012-12-12 17:50                 ` Junio C Hamano
2012-12-12 20:25                   ` Simon Oosthoek
2012-12-26  7:47                     ` Junio C Hamano
2012-12-26 12:51                       ` Simon Oosthoek
2012-12-26 19:15                       ` [PATCH] make __git_ps1 accept a third parameter in pcmode Simon Oosthoek
2012-12-26 19:45                         ` Junio C Hamano
2012-12-26 20:19                           ` Simon Oosthoek [this message]
2012-12-26 20:32                             ` Junio C Hamano
2012-12-26 20:54                               ` Junio C Hamano
2012-12-26 21:03                               ` Simon Oosthoek
2012-12-26 20:42                             ` Junio C Hamano

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

  List information: http://vger.kernel.org/majordomo-info.html

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20121226201944.GA15039@xs4all.nl \
    --to=s.oosthoek@xs4all.nl \
    --cc=git@vger.kernel.org \
    --cc=gitster@pobox.com \
    --cc=piotr.krukowiecki@gmail.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.
Code repositories for project(s) associated with this public inbox

	https://80x24.org/mirrors/git.git

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 read-only IMAP folder(s) and NNTP newsgroup(s).