Signed-off-by: Nazri Ramliy <ayiehere@xxxxxxxxx> --- Apologies for not catching this earlier. My earlier version of this patch "Allow customizable commit decorations colors" (message id: 1277253782-3330-1-git-send-email-ayiehere@xxxxxxxxx) has a bad style for the opening braces in the functions parse_decorate_color_slot() and parse_decorate_color_config() - the opening braces for these two functions were at the same line as the function head. This patch fixes these style violations (replaces 4938f6c98e4a6c4484bf652bdb887f0b8d8be822 in pu). nazri. Documentation/config.txt | 5 +++++ builtin/log.c | 3 +++ log-tree.c | 36 ++++++++++++++++++++++++++++++++++++ log-tree.h | 1 + 4 files changed, 45 insertions(+), 0 deletions(-) diff --git a/Documentation/config.txt b/Documentation/config.txt index 7afd0a3..89cb487 100644 --- a/Documentation/config.txt +++ b/Documentation/config.txt @@ -683,6 +683,11 @@ color.diff.<slot>:: (highlighting whitespace errors). The values of these variables may be specified as in color.branch.<slot>. +color.decorate.<slot>:: + Use customized color for 'git log --decorate' output. `<slot>` is one + of `branch`, `remoteBranch`, `tag`, `stash` or `HEAD` for local + branches, remote tracking branches, tags, stash and HEAD, respectively. + color.grep:: When set to `always`, always highlight matches. When `false` (or `never`), never. When set to `true` or `auto`, use color only diff --git a/builtin/log.c b/builtin/log.c index 976e16f..0835866 100644 --- a/builtin/log.c +++ b/builtin/log.c @@ -296,6 +296,9 @@ static int git_log_config(const char *var, const char *value, void *cb) default_show_root = git_config_bool(var, value); return 0; } + if (!prefixcmp(var, "color.decorate.")) + return parse_decorate_color_config(var, 15, value); + return git_diff_ui_config(var, value, cb); } diff --git a/log-tree.c b/log-tree.c index 61680f4..b46ed3b 100644 --- a/log-tree.c +++ b/log-tree.c @@ -36,6 +36,42 @@ static const char *decorate_get_color(int decorate_use_color, enum decoration_ty return ""; } +static int parse_decorate_color_slot(const char *slot) +{ + /* + * We're comparing with 'ignore-case' on + * (because config.c sets them all tolower), + * but let's match the letters in the literal + * string values here with how they are + * documented in Documentation/config.txt, for + * consistency. + * + * We love being consistent, don't we? + */ + if (!strcasecmp(slot, "branch")) + return DECORATION_REF_LOCAL; + if (!strcasecmp(slot, "remoteBranch")) + return DECORATION_REF_REMOTE; + if (!strcasecmp(slot, "tag")) + return DECORATION_REF_TAG; + if (!strcasecmp(slot, "stash")) + return DECORATION_REF_STASH; + if (!strcasecmp(slot, "HEAD")) + return DECORATION_REF_HEAD; + return -1; +} + +int parse_decorate_color_config(const char *var, const int ofs, const char *value) +{ + int slot = parse_decorate_color_slot(var + ofs); + if (slot < 0) + return 0; + if (!value) + return config_error_nonbool(var); + color_parse(value, var, decoration_colors[slot]); + return 0; +} + /* * log-tree.c uses DIFF_OPT_TST for determining whether to use color * for showing the commit sha1, use the same check for --decorate diff --git a/log-tree.h b/log-tree.h index 3f7b400..5c4cf7c 100644 --- a/log-tree.h +++ b/log-tree.h @@ -7,6 +7,7 @@ struct log_info { struct commit *commit, *parent; }; +int parse_decorate_color_config(const char *var, const int ofs, const char *value); void init_log_tree_opt(struct rev_info *); int log_tree_diff_flush(struct rev_info *); int log_tree_commit(struct rev_info *, struct commit *); -- 1.7.1.245.g7c42e.dirty -- 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