From: Simon Oosthoek <soosthoek@nieuwland.nl>
To: Michael J Gruber <git@drmicha.warpmail.net>
Cc: Junio C Hamano <gitster@pobox.com>,
Simon Oosthoek <s.oosthoek@xs4all.nl>,
git@vger.kernel.org, "Shawn O. Pearce" <spearce@spearce.org>,
Ramkumar Ramachandra <artagnon@gmail.com>,
schwab@linux-m68k.org
Subject: Re: [PATCH] Add __git_ps1_pc to use as PROMPT_COMMAND
Date: Tue, 02 Oct 2012 10:01:08 +0200 [thread overview]
Message-ID: <506A9F44.1000209@nieuwland.nl> (raw)
In-Reply-To: <506A99DE.7080503@drmicha.warpmail.net>
On 10/02/2012 09:38 AM, Michael J Gruber wrote:
>> The longer I read your explanation, the less useful the "PC mode"
>> sounds like, at least to me. So why does an user even want to use
>> such a mechanism, instead of PS1? And even if the user wants to use
>> it by doing \w, \u etc. himself, she can do that with
>>
>> PROMPT_COMMAND='
>> PS1=$(printf "\u \h \w %s$ " $(__git_ps1 "%s"))
>> '
>>
>> just fine, no?
Well, in that way, it doesn't work and setting PS1 directly would be
better. But this way you cannot do colors.
>>
>> Confused....
I know the feeling ;-)
>
> The "problem" (as far as I see) is only: What user interface do we want
> to expose to the user, or rather, do we want to expose the user to ;)
>
> So far, we say:
>
> # 1) Copy this file to somewhere (e.g. ~/.git-prompt.sh).
> # 2) Add the following line to your .bashrc/.zshrc:
> # source ~/.git-prompt.sh
> # 3) Change your PS1 to also show the current branch:
> # Bash: PS1='[\u@\h \W$(__git_ps1 " (%s)")]\$ '
> # ZSH: PS1='[%n@%m %c$(__git_ps1 " (%s)")]\$ '
>
> (That's incomplete for zsh, but I'm digressing...). With the above, we
> would change the bash instruction to
>
> PROMPT_COMMAND='
> PS1=$(printf "\u \h \w %s$ " $(__git_ps1 "%s"))
> '
>
> which may look more complicated to some. I think we can aim for
> something like
>
> PROMPT_COMMAND='__git_ps1_color "\u \h \w%s$ " " (%s)"'
>
> so that the first arg is a PS1 string, %s there gets replaced by the git
> prompt (if any), and the second arg defines the formatting of the git
> prompt. This makes the "ui" (what you have to set the shells vars to) as
> simple as possible.
>
> As I said, I had done some fixes and refactoring to that effect already,
> but I'm not going to race Simon.
I don't quite see how you're going to smurf the formatted string into
the PS1 string at %s...
Wouldn't it be easier in this case to have the user provide 3 arguments:
PROMPT_COMMAND='__git_ps1 "\u@\h:\w " "(%s)" "\$ "'
The first and last can be directly assigned to PS1 and the format string
can be put in the middle.
BUT. In this way, it is still impossible to change the colors inside the
format string, unless you ignore that when the user requested color
hints. Because the output of printf will not be interpreted by bash when
put in via command substitution.
The whole point of this exercise (for me at least) was to be able to
color different parts of the bit that __git_ps1 put in, based on the
current state of the tree.
I think the user interface could be something like:
use either:
PROMPT_COMMAND='__git_ps1 "\u@\h:\w " "\$ "' # 2 args!
or
PS1="\u@\h:\w $(__git_ps1 '(%s)')\$ "
(I just realised that I still need to handle the case where both PS1 and
PROMPT_COMMAND contain __git_ps1 ;-)
Note that in the PS1 case, no color codes should be put into the string,
as they will mangle the prompt length and wrapping problems start happening.
Cheers
Simon.
next prev parent reply other threads:[~2012-10-02 8:01 UTC|newest]
Thread overview: 49+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-09-26 15:00 bash completion with colour hints Simon Oosthoek
2012-09-26 15:24 ` Ramkumar Ramachandra
2012-09-26 19:25 ` Simon Oosthoek
2012-09-27 6:53 ` Junio C Hamano
2012-09-27 8:53 ` Michael J Gruber
2012-09-27 8:55 ` Michael J Gruber
2012-09-27 9:16 ` Simon Oosthoek
2012-09-27 10:05 ` Andreas Schwab
2012-09-27 11:57 ` Simon Oosthoek
2012-09-28 11:40 ` [PATCH] Add __git_ps1_pc to use as PROMPT_COMMAND Simon Oosthoek
2012-09-28 17:58 ` Junio C Hamano
2012-10-01 9:13 ` Simon Oosthoek
2012-10-01 17:16 ` Junio C Hamano
2012-10-01 18:42 ` Simon Oosthoek
2012-10-01 19:13 ` Junio C Hamano
2012-10-01 19:27 ` Simon Oosthoek
2012-10-01 19:54 ` Junio C Hamano
2012-10-01 20:56 ` Simon Oosthoek
2012-10-01 21:09 ` Junio C Hamano
2012-10-02 7:38 ` Michael J Gruber
2012-10-02 8:01 ` Simon Oosthoek [this message]
2012-10-02 17:01 ` Junio C Hamano
2012-10-02 19:50 ` Simon Oosthoek
2012-10-02 20:18 ` Junio C Hamano
2012-10-05 21:09 ` [PATCH 1/2] Allow __git_ps1 to be used in PROMPT_COMMAND Simon Oosthoek
2012-10-08 18:12 ` Junio C Hamano
2012-10-08 19:50 ` Simon Oosthoek
2012-10-08 21:17 ` Junio C Hamano
2012-10-10 19:31 ` Simon Oosthoek
2012-10-10 23:00 ` Junio C Hamano
2012-10-10 19:32 ` [PATCH 2/2] show color hints based on state of the git tree Simon Oosthoek
2012-10-10 19:37 ` [PATCH 1/2] Allow __git_ps1 to be used in PROMPT_COMMAND Simon Oosthoek
2012-10-10 19:38 ` [PATCH 2/2] show color hints based on state of the git tree Simon Oosthoek
2012-10-05 21:10 ` Simon Oosthoek
2012-10-15 8:23 ` Michael J Gruber
2012-10-15 9:01 ` Simon Oosthoek
2012-10-15 9:13 ` Michael J Gruber
2012-10-15 10:34 ` Simon Oosthoek
2012-10-15 13:20 ` Simon Oosthoek
2012-10-15 15:19 ` Michael J Gruber
[not found] ` <CAPc5daVUyAuznmrT+-yqvPR0gd38oiWmi2k+BFVV1s9ouMUt0Q@mail.gmail.com>
2012-10-15 15:15 ` Simon Oosthoek
2012-10-15 18:10 ` Junio C Hamano
2012-10-16 5:32 ` [PATCH 3/3] Change colors to be based on git status -sb in color mode Simon Oosthoek
2012-10-16 15:58 ` Junio C Hamano
2012-10-16 19:34 ` Simon Oosthoek
2012-10-16 21:30 ` Junio C Hamano
2012-10-16 22:04 ` Junio C Hamano
2012-10-17 7:17 ` Simon Oosthoek
2012-10-08 15:00 ` [PATCH] Add __git_ps1_pc to use as PROMPT_COMMAND Simon Oosthoek
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=506A9F44.1000209@nieuwland.nl \
--to=soosthoek@nieuwland.nl \
--cc=artagnon@gmail.com \
--cc=git@drmicha.warpmail.net \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=s.oosthoek@xs4all.nl \
--cc=schwab@linux-m68k.org \
--cc=spearce@spearce.org \
/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).