git@vger.kernel.org mailing list mirror (one of many)
 help / color / mirror / code / Atom feed
From: Simon Oosthoek <s.oosthoek@xs4all.nl>
To: git@vger.kernel.org
Cc: gitster@pobox.com, git@drmicha.warpmail.net, spearce@spearce.org,
	artagnon@gmail.com, schwab@linux-m68k.org,
	soosthoek@nieuwland.nl, junio@pobox.com
Subject: [PATCH 3/3] Change colors to be based on git status -sb in color mode
Date: Tue, 16 Oct 2012 07:32:57 +0200	[thread overview]
Message-ID: <20121016053257.GA8366@simaj.xs4all.nl> (raw)
In-Reply-To: <7vlif7wqqb.fsf@alter.siamese.dyndns.org>

Hi

this patch is an additional patch to the previous series of two.  It also
corrects the missing S and some minor details. The main point of this
one is changing the used colors to be more close to the color output of "git
status -sb" Mainly, the branchname stays green until it loses a HEAD, in
detached head state it becomes red.
The flags get their own color, either red or green for unstaged/staged and the
remaining flags get a different color or none at all.

Cheers

Simon

The color in the prompt now follows the colors used by
git itself when showing colors. The branch name is only
colored red if the tree has a detached HEAD.

Signed-off-by: Simon Oosthoek <s.oosthoek@xs4all.nl>
---
 contrib/completion/git-prompt.sh |   52 ++++++++++++++++++++++----------------
 1 file changed, 30 insertions(+), 22 deletions(-)

diff --git a/contrib/completion/git-prompt.sh b/contrib/completion/git-prompt.sh
index 4fb998a..ff69bbc 100644
--- a/contrib/completion/git-prompt.sh
+++ b/contrib/completion/git-prompt.sh
@@ -55,11 +55,9 @@
 # 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.
-
+# GIT_PS1_SHOWCOLORHINTS to a nonempty value. The colors are based on 
+# the colored output of "git status -sb".
+#
 # __gitdir accepts 0 or 1 arguments (i.e., location)
 # returns location of .git repo
 __gitdir ()
@@ -325,35 +323,45 @@ __git_ps1 ()
 
 		local f="$w$i$s$u"
 		if [ $pcmode = yes ]; then
-			PS1="$ps1pc_start("
-			if [ -n "${GIT_PS1_SHOWCOLORHINT-}" ]; then
+			if [ -n "${GIT_PS1_SHOWCOLORHINTS-}" ]; then
 				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"
+				local branch_color="$c_clear"
+				local flags_color="$c_lblue"
 
-				if [ "$w" = "*" ]; then
-					branch_color="$c_red"
-				elif [ -n "$i" ]; then
-					branch_color="$c_yellow"
-				fi
+				case "$b" in 
+					\(*\))	branch_color="$c_red"
+					;;
+					*)	local branch_color="$c_green"
+					;;
+				esac
 
 				# 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\]"
+				PS1="$ps1pc_start (\[$branch_color\]$branchstring\[$c_clear\]"
+
+				if [ -n "$w$i$s$u$r$p" ]; then
+					PS1="$PS1 "
+				fi
+				if [ "$w" = "*" ]; then
+					PS1="$PS1\[$c_red\]$w"
+				fi
+				if [ -n "$i" ]; then
+					PS1="$PS1\[$c_green\]$i"
+				fi
+				if [ -n "$s" ]; then
+					PS1="$PS1\[$flags_color\]$s"
+				fi
+				if [ -n "$u" ]; then
+					PS1="$PS1\[$c_red\]$u"
 				fi
+				PS1="$PS1\[$c_clear\]$r$p)$ps1pc_end"
 			else
-				PS1="$PS1$c${b##refs/heads/}${f:+ $f}$r$p"
+				PS1="$ps1pc_start ($c${b##refs/heads/}${f:+ $f}$r$p)$ps1pc_end"
 			fi
-			PS1="$PS1)$ps1pc_end"
 		else
 			# NO color option unless in PROMPT_COMMAND mode
 			printf -- "$printf_format" "$c${b##refs/heads/}${f:+ $f}$r$p"
-- 
1.7.9.5

  reply	other threads:[~2012-10-16  5:33 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
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                                                 ` Simon Oosthoek [this message]
2012-10-16 15:58                                                   ` [PATCH 3/3] Change colors to be based on git status -sb in color mode 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=20121016053257.GA8366@simaj.xs4all.nl \
    --to=s.oosthoek@xs4all.nl \
    --cc=artagnon@gmail.com \
    --cc=git@drmicha.warpmail.net \
    --cc=git@vger.kernel.org \
    --cc=gitster@pobox.com \
    --cc=junio@pobox.com \
    --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.
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).