From: Michael J Gruber <git@drmicha.warpmail.net>
To: Simon Oosthoek <s.oosthoek@xs4all.nl>,
Git Mailing List <git@vger.kernel.org>
Cc: git@vger.kernel.org, gitster@pobox.com, spearce@spearce.org,
artagnon@gmail.com, schwab@linux-m68k.org,
soosthoek@nieuwland.nl
Subject: Re: [PATCH 2/2] show color hints based on state of the git tree
Date: Mon, 15 Oct 2012 10:23:13 +0200 [thread overview]
Message-ID: <507BC7F1.3080506@drmicha.warpmail.net> (raw)
In-Reply-To: <20121005211030.GA5414@simaj.xs4all.nl>
Sorry for being late ($DAYJOB and such), but I just noticed this is on
next already:
Simon Oosthoek venit, vidit, dixit 05.10.2012 23:10:
> By setting GIT_PS1_SHOW_COLORHINTS when using __git_ps1
> as PROMPT_COMMAND, you will get color hints in addition to
> a different character (*+% etc.)
>
> Signed-off-by: Simon Oosthoek <soosthoek@nieuwland.nl>
> ---
> contrib/completion/git-prompt.sh | 42 +++++++++++++++++++++++++++++++++++---
> 1 file changed, 39 insertions(+), 3 deletions(-)
>
> diff --git a/contrib/completion/git-prompt.sh b/contrib/completion/git-prompt.sh
> index c50c94a..51285d7 100644
> --- a/contrib/completion/git-prompt.sh
> +++ b/contrib/completion/git-prompt.sh
> @@ -53,6 +53,12 @@
> # find one, or @{upstream} otherwise. Once you have set
> # GIT_PS1_SHOWUPSTREAM, you can override it on a per-repository basis by
> # setting the bash.showUpstream config variable.
> +#
> +# If you would like a colored hint about the current dirty state, set
> +# GIT_PS1_SHOWCOLORHINTS to a nonempty value. When tracked files are
> +# modified, the branch name turns red, when all modifications are staged
> +# the branch name turns yellow and when all changes are checked in, the
> +# color changes to green. The colors are currently hardcoded in the function.
>
> # __gitdir accepts 0 or 1 arguments (i.e., location)
> # returns location of .git repo
> @@ -201,11 +207,12 @@ __git_ps1_show_upstream ()
> # __git_ps1 accepts 0 or 1 arguments (i.e., format string)
> # when called from PS1 using command substitution
> # in this mode it returns text to add to bash PS1 prompt (includes branch name) or
> -# __git_ps1 accepts 0 or 2 arguments when called from PROMPT_COMMAND
> +# __git_ps1 accepts 0 or 2 arguments when called from PROMPT_COMMAND (pc)
> # in that case it _sets_ PS1. The arguments are parts of a PS1 string.
> # when both arguments are given, the first is prepended and the second appended
> # to the state string when assigned to PS1, otherwise default start/end strings
> # are used.
> +# In pcmode you can request colored hints using GIT_PS1_SHOWCOLORHINTS=true
> __git_ps1 ()
> {
> local pcmode=yes
> @@ -320,8 +327,37 @@ __git_ps1 ()
>
> local f="$w$i$s$u"
> if [ $pcmode = yes ]; then
> - PS1="$ps1pc_start($c${b##refs/heads/}${f:+ $f}$r$p)$ps1pc_end"
> - elif [ $pcmode = no ]; then
> + PS1="$ps1pc_start("
> + if [ -n "${GIT_PS1_SHOWCOLORHINT-}" ]; then
You're missing the "S" here (HINTS).
> + local c_red='\e[31m'
> + local c_green='\e[32m'
> + local c_yellow='\e[33m'
> + local c_lblue='\e[1;34m'
> + local c_purple='\e[35m'
> + local c_cyan='\e[36m'
> + local c_clear='\e[0m'
> + local branchstring="$c${b##refs/heads/}"
> + local branch_color="$c_green"
> + local flags_color="$c_cyan"
> +
> + if [ "$w" = "*" ]; then
> + branch_color="$c_red"
> + elif [ -n "$i" ]; then
> + branch_color="$c_yellow"
> + fi
> +
> + # Setting PS1 directly with \[ and \] around colors
> + # is necessary to prevent wrapping issues!
> + PS1="$PS1\[$branch_color\]$branchstring\[$c_clear\]"
> + if [ -n "$f" ]; then
> + PS1="$PS1 \[$flags_color\]$f\[$c_clear\]"
> + fi
> + else
> + PS1="$PS1$c${b##refs/heads/}${f:+ $f}$r$p"
> + fi
> + PS1="$PS1)$ps1pc_end"
> + else
> + # NO color option unless in PROMPT_COMMAND mode
> printf -- "${1:- (%s)}" "$c${b##refs/heads/}${f:+ $f}$r$p"
> fi
> fi
>
I'm afraid I don't like this coloring style at all because it is
inconsistent with the color usage of "git status -sb". First of all, the
colors are different, and second, the fact *what* is colored is
different. I had suggested following "git status -sb" for a good reason.
It colors a branch green and a detached head red. It colors "change"
(A/D/M/R) as red/green depending on non-cached/cached, so that's how */+
should be. Your call for $/% (I'd leave them uncolored).[*][**]
I think it's very confusing to have completely different schemes (not
just themes) for two versions of the same information: concise status
information.
So, please try and follow "git status -sb".
Michael
[*] Really, there's nothin "red" about a branch when there are cached or
non-cached changes. They are changes wrt. to what's in HEAD resp. the
index, no matter what HEAD is.
[**] Also, coloring the status characters opens the way to even using
the same characters as "status -sb" (ADM).
next prev parent reply other threads:[~2012-10-15 8:23 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
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 [this message]
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
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=507BC7F1.3080506@drmicha.warpmail.net \
--to=git@drmicha.warpmail.net \
--cc=artagnon@gmail.com \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=s.oosthoek@xs4all.nl \
--cc=schwab@linux-m68k.org \
--cc=soosthoek@nieuwland.nl \
--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.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.