Make the short version of status obey the color.status boolean. We color the status letters only, because they carry the state information and are potentially colored differently, such as for a file with staged changes as well as changes in the worktree against the index. Signed-off-by: Michael J Gruber <git@xxxxxxxxxxxxxxxxxxxx> --- This is RFC for several reasons: * Should I rename wt-status.c's color() into something more unique when I export it? * Is there any policy regarding use of putchar/puts vs. printf? * The way it is done now I "color" a space, otherwise one would need to break down the print statements even more. Since we always color the foreground only it is no problem, is it? * Even if I were to write tests for status -s: How do I test colors? builtin-commit.c | 20 +++++++++++++++----- wt-status.c | 2 +- wt-status.h | 1 + 3 files changed, 17 insertions(+), 6 deletions(-) diff --git a/builtin-commit.c b/builtin-commit.c index c103beb..c38fc96 100644 --- a/builtin-commit.c +++ b/builtin-commit.c @@ -999,7 +999,7 @@ static void short_unmerged(int null_termination, struct string_list_item *it, case 6: how = "AA"; break; /* both added */ case 7: how = "UU"; break; /* both modified */ } - printf("%s ", how); + color_fprintf(s->fp, color(WT_STATUS_UNMERGED, s), "%s ", how); if (null_termination) { fprintf(stdout, "%s%c", it->string, 0); } else { @@ -1016,9 +1016,14 @@ static void short_status(int null_termination, struct string_list_item *it, { struct wt_status_change_data *d = it->util; - printf("%c%c ", - !d->index_status ? ' ' : d->index_status, - !d->worktree_status ? ' ' : d->worktree_status); + if (d->index_status) + color_fprintf(s->fp, color(WT_STATUS_UPDATED, s), "%c", d->index_status); + else + putchar(' '); + if (d->worktree_status) + color_fprintf(s->fp, color(WT_STATUS_CHANGED, s), "%c ", d->worktree_status); + else + printf(" "); if (null_termination) { fprintf(stdout, "%s%c", it->string, 0); if (d->head_path) @@ -1046,7 +1051,8 @@ static void short_untracked(int null_termination, struct string_list_item *it, struct strbuf onebuf = STRBUF_INIT; const char *one; one = quote_path(it->string, -1, &onebuf, s->prefix); - printf("?? %s\n", one); + color_fprintf(s->fp, color(WT_STATUS_UNTRACKED, s), "?? "); + puts(one); strbuf_release(&onebuf); } } @@ -1115,6 +1121,10 @@ int cmd_status(int argc, const char **argv, const char *prefix) case STATUS_FORMAT_SHORT: if (s.relative_paths) s.prefix = prefix; + if (s.use_color == -1) + s.use_color = git_use_color_default; + if (diff_use_color_default == -1) + diff_use_color_default = git_use_color_default; short_print(&s, null_termination); break; case STATUS_FORMAT_PORCELAIN: diff --git a/wt-status.c b/wt-status.c index 3c2f580..c779b7c 100644 --- a/wt-status.c +++ b/wt-status.c @@ -19,7 +19,7 @@ static char default_wt_status_colors[][COLOR_MAXLEN] = { GIT_COLOR_RED, /* WT_STATUS_UNMERGED */ }; -static const char *color(int slot, struct wt_status *s) +const char *color(int slot, struct wt_status *s) { return s->use_color > 0 ? s->color_palette[slot] : ""; } diff --git a/wt-status.h b/wt-status.h index 09fd9f1..22b15b0 100644 --- a/wt-status.h +++ b/wt-status.h @@ -55,5 +55,6 @@ struct wt_status { void wt_status_prepare(struct wt_status *s); void wt_status_print(struct wt_status *s); void wt_status_collect(struct wt_status *s); +const char *color(int slot, struct wt_status *s); #endif /* STATUS_H */ -- 1.6.6.rc0.274.g71380 -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html