Skip to content

Commit 148135f

Browse files
peffgitster
authored andcommitted
default color.status.branch to "same as header"
This gives it the same behavior as we had prior to 1d28232 (status: show branchname with a configurable color). To do this we need the concept of a "NIL" color, which is provided by color.[ch]. The implementation is very simple; in particular, there are no precautions taken against code accidentally printing the NIL. This should be fine in practice because: 1. You can't input a NIL color in the config, so it must come from the in-code defaults. Which means it is up the client code to handle the NILs it defines. 2. If we do ever print a NIL, it will be obvious what the problem is, and the bug can be fixed. Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
1 parent 1d28232 commit 148135f

File tree

3 files changed

+15
-2
lines changed

3 files changed

+15
-2
lines changed

color.c

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -211,3 +211,8 @@ int color_fprintf_ln(FILE *fp, const char *color, const char *fmt, ...)
211211
va_end(args);
212212
return r;
213213
}
214+
215+
int color_is_nil(const char *c)
216+
{
217+
return !strcmp(c, "NIL");
218+
}

color.h

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,9 @@
4343
#define GIT_COLOR_BG_MAGENTA "\033[45m"
4444
#define GIT_COLOR_BG_CYAN "\033[46m"
4545

46+
/* A special value meaning "no color selected" */
47+
#define GIT_COLOR_NIL "NIL"
48+
4649
/*
4750
* This variable stores the value of color.ui
4851
*/
@@ -62,4 +65,6 @@ int color_fprintf(FILE *fp, const char *color, const char *fmt, ...);
6265
__attribute__((format (printf, 3, 4)))
6366
int color_fprintf_ln(FILE *fp, const char *color, const char *fmt, ...);
6467

68+
int color_is_nil(const char *color);
69+
6570
#endif /* COLOR_H */

wt-status.c

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,12 +21,15 @@ static char default_wt_status_colors[][COLOR_MAXLEN] = {
2121
GIT_COLOR_RED, /* WT_STATUS_UNMERGED */
2222
GIT_COLOR_GREEN, /* WT_STATUS_LOCAL_BRANCH */
2323
GIT_COLOR_RED, /* WT_STATUS_REMOTE_BRANCH */
24-
GIT_COLOR_NORMAL, /* WT_STATUS_ONBRANCH */
24+
GIT_COLOR_NIL, /* WT_STATUS_ONBRANCH */
2525
};
2626

2727
static const char *color(int slot, struct wt_status *s)
2828
{
29-
return s->use_color > 0 ? s->color_palette[slot] : "";
29+
const char *c = s->use_color > 0 ? s->color_palette[slot] : "";
30+
if (slot == WT_STATUS_ONBRANCH && color_is_nil(c))
31+
c = s->color_palette[WT_STATUS_HEADER];
32+
return c;
3033
}
3134

3235
void wt_status_prepare(struct wt_status *s)

0 commit comments

Comments
 (0)