threads / patch / 22229

patchgit status: display current branch name in color

Subject: [PATCH] git status: display current branch name in color

## tl;dr

3 messages between Jan 15, 2010 and Jan 18, 2010. Diffs are folded; open one to read it.

replies: 2people: 2as markdown or json

Michael Wookey· Jan 15, 2010, 02:23 UTC · lore

There is an existing highlight when the user is not on any branch. Enhance this functionality to always provide the name of the current branch in color.

Signed-off-by: Michael Wookey <michaelwookey@gmail.com>
---
 wt-status.c |   10 ++++++----
 wt-status.h |    3 ++-
 2 files changed, 8 insertions(+), 5 deletions(-)
Show changes to 2 files +8 −5

wt-status.c, wt-status.h

diff --git a/wt-status.c b/wt-status.c
index 5d56988..bdaa98b 100644
--- a/wt-status.c
+++ b/wt-status.c
@@ -17,6 +17,7 @@ static char default_wt_status_colors[][COLOR_MAXLEN] = {
 	GIT_COLOR_RED,    /* WT_STATUS_UNTRACKED */
 	GIT_COLOR_RED,    /* WT_STATUS_NOBRANCH */
 	GIT_COLOR_RED,    /* WT_STATUS_UNMERGED */
+	GIT_COLOR_GREEN,  /* WT_STATUS_BRANCH */
 };

 static const char *color(int slot, struct wt_status *s)
@@ -553,7 +554,7 @@ static void wt_status_print_tracking(struct wt_status *s)

 void wt_status_print(struct wt_status *s)
 {
-	const char *branch_color = color(WT_STATUS_HEADER, s);
+	const char *branch_color = color(WT_STATUS_BRANCH, s);

 	if (s->branch) {
 		const char *on_what = "On branch ";
@@ -561,12 +562,13 @@ void wt_status_print(struct wt_status *s)
 		if (!prefixcmp(branch_name, "refs/heads/"))
 			branch_name += 11;
 		else if (!strcmp(branch_name, "HEAD")) {
-			branch_name = "";
+			branch_name = "Not currently on any branch.";
 			branch_color = color(WT_STATUS_NOBRANCH, s);
-			on_what = "Not currently on any branch.";
+			on_what = "";
 		}
 		color_fprintf(s->fp, color(WT_STATUS_HEADER, s), "# ");
-		color_fprintf_ln(s->fp, branch_color, "%s%s", on_what, branch_name);
+		color_fprintf(s->fp, color(WT_STATUS_HEADER, s), "%s", on_what);
+		color_fprintf_ln(s->fp, branch_color, "%s", branch_name);
 		if (!s->is_initial)
 			wt_status_print_tracking(s);
 	}
diff --git a/wt-status.h b/wt-status.h
index c60f40a..b0cf235 100644
--- a/wt-status.h
+++ b/wt-status.h
@@ -12,6 +12,7 @@ enum color_wt_status {
 	WT_STATUS_UNTRACKED,
 	WT_STATUS_NOBRANCH,
 	WT_STATUS_UNMERGED,
+	WT_STATUS_BRANCH,
 };

 enum untracked_status_type {
@@ -40,7 +41,7 @@ struct wt_status {
 	int relative_paths;
 	int submodule_summary;
 	enum untracked_status_type show_untracked_files;
-	char color_palette[WT_STATUS_UNMERGED+1][COLOR_MAXLEN];
+	char color_palette[WT_STATUS_BRANCH+1][COLOR_MAXLEN];

 	/* These are computed during processing of the individual sections */
 	int commitable;
-- 
1.6.6.197.gfd7f6
Michael Wookey· Jan 17, 2010, 04:31 UTC · re: Michael Wookey · lore

Re: [PATCH] git status: display current branch name in color

Show 9 quoted lines
> There is an existing highlight when the user is not on any branch.
> Enhance this functionality to always provide the name of the current
> branch in color.
>
> Signed-off-by: Michael Wookey <michaelwookey@gmail.com>
> ---
>  wt-status.c |   10 ++++++----
>  wt-status.h |    3 ++-
>  2 files changed, 8 insertions(+), 5 deletions(-)
Any thoughts on this?

I have found this to be a useful feature; especially when using msysGit in a Windows CMD shell. Specifically because a CMD shell provides no ability for any sort of "git-completion.bash" prompt. By highlighting the current branch name, the colouring has helped to quickly identify what the current branch is.

Jeff King· Jan 18, 2010, 02:32 UTC · re: Michael Wookey · lore

Re: [PATCH] git status: display current branch name in color

On Sun, Jan 17, 2010 at 03:31:07PM +1100, Michael Wookey wrote:
Show 11 quoted lines
> > There is an existing highlight when the user is not on any branch.
> > Enhance this functionality to always provide the name of the current
> > branch in color.
> >
> > Signed-off-by: Michael Wookey <michaelwookey@gmail.com>
> > ---
> >  wt-status.c |   10 ++++++----
> >  wt-status.h |    3 ++-
> >  2 files changed, 8 insertions(+), 5 deletions(-)
> 
> Any thoughts on this?

I don't have an objection to the concept, but for it to be acceptable for inclusion in mainstream git, the color selection needs to be configurable (see builtin-commit.c:parse_status_slot) and documented (see Documentation/config.txt, color.status.<slot>).

And then we can decide what the _default_ color should be. Personally, I find it a bit distracting to change the color for something so mundane, and would be in favor of leaving it the same as the header color. But I will not argue too hard either way; I have no problem with setting my own config to make it invisible if others disagree. :)

-Peff

← back to recent threads