decorate: avoid some unnecessary color overhead
In format_decorations(), don't obtain color sequences if there are no decorations, and don't emit color sequences around empty strings. Signed-off-by: Andy Koppe <andy.koppe@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:

committed by
Junio C Hamano

parent
a3883a6532
commit
b87a9a2c1e
25
log-tree.c
25
log-tree.c
@ -312,10 +312,7 @@ void format_decorations(struct strbuf *sb,
|
|||||||
{
|
{
|
||||||
const struct name_decoration *decoration;
|
const struct name_decoration *decoration;
|
||||||
const struct name_decoration *current_and_HEAD;
|
const struct name_decoration *current_and_HEAD;
|
||||||
const char *color_commit =
|
const char *color_commit, *color_reset;
|
||||||
diff_get_color(use_color, DIFF_COMMIT);
|
|
||||||
const char *color_reset =
|
|
||||||
decorate_get_color(use_color, DECORATION_NONE);
|
|
||||||
|
|
||||||
const char *prefix = " (";
|
const char *prefix = " (";
|
||||||
const char *suffix = ")";
|
const char *suffix = ")";
|
||||||
@ -334,6 +331,9 @@ void format_decorations(struct strbuf *sb,
|
|||||||
separator = opts->separator;
|
separator = opts->separator;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
color_commit = diff_get_color(use_color, DIFF_COMMIT);
|
||||||
|
color_reset = decorate_get_color(use_color, DECORATION_NONE);
|
||||||
|
|
||||||
current_and_HEAD = current_pointed_by_HEAD(decoration);
|
current_and_HEAD = current_pointed_by_HEAD(decoration);
|
||||||
while (decoration) {
|
while (decoration) {
|
||||||
/*
|
/*
|
||||||
@ -342,9 +342,12 @@ void format_decorations(struct strbuf *sb,
|
|||||||
* appeared, skipping the entry for current.
|
* appeared, skipping the entry for current.
|
||||||
*/
|
*/
|
||||||
if (decoration != current_and_HEAD) {
|
if (decoration != current_and_HEAD) {
|
||||||
strbuf_addstr(sb, color_commit);
|
if (*prefix) {
|
||||||
strbuf_addstr(sb, prefix);
|
strbuf_addstr(sb, color_commit);
|
||||||
strbuf_addstr(sb, color_reset);
|
strbuf_addstr(sb, prefix);
|
||||||
|
strbuf_addstr(sb, color_reset);
|
||||||
|
}
|
||||||
|
|
||||||
strbuf_addstr(sb, decorate_get_color(use_color, decoration->type));
|
strbuf_addstr(sb, decorate_get_color(use_color, decoration->type));
|
||||||
if (decoration->type == DECORATION_REF_TAG)
|
if (decoration->type == DECORATION_REF_TAG)
|
||||||
strbuf_addstr(sb, "tag: ");
|
strbuf_addstr(sb, "tag: ");
|
||||||
@ -364,9 +367,11 @@ void format_decorations(struct strbuf *sb,
|
|||||||
}
|
}
|
||||||
decoration = decoration->next;
|
decoration = decoration->next;
|
||||||
}
|
}
|
||||||
strbuf_addstr(sb, color_commit);
|
if (*suffix) {
|
||||||
strbuf_addstr(sb, suffix);
|
strbuf_addstr(sb, color_commit);
|
||||||
strbuf_addstr(sb, color_reset);
|
strbuf_addstr(sb, suffix);
|
||||||
|
strbuf_addstr(sb, color_reset);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void show_decorations(struct rev_info *opt, struct commit *commit)
|
void show_decorations(struct rev_info *opt, struct commit *commit)
|
||||||
|
Reference in New Issue
Block a user