From: Matthew Ruffalo <matthew.ruffalo@xxxxxxxx> Previously, the diffstat width could only be specified with the command-line options '--width' and '--name-width'. This patch adds support for config file options 'diffstat.width' and 'diffstat.namewidth'. The diffstat width values are obtained in this order (of increasing precedence): 1. Compile-time defaults (80 width, 50 namewidth) 2. Standard git config mechanism 3. Command-line options This required removing the diffstat options from 'struct diff_options' and adding these values as static ints in diff.c. This preserves the style of "config options are static ints, command-line options are diff_options members". stat_opt now directly sets the global options. Signed-off-by: Matthew Ruffalo <matthew.ruffalo@xxxxxxxx> --- diff.c | 24 ++++++++++++++++++------ diff.h | 2 -- 2 files changed, 18 insertions(+), 8 deletions(-) diff --git a/diff.c b/diff.c index 75938e4..d88c7f4 100644 --- a/diff.c +++ b/diff.c @@ -31,6 +31,8 @@ static const char *external_diff_cmd_cfg; int diff_auto_refresh_index = 1; static int diff_mnemonic_prefix; static int diff_no_prefix; +static int diff_stat_width; +static int diff_stat_name_width; static struct diff_options default_diff_options; static char diff_colors[][COLOR_MAXLEN] = { @@ -148,6 +150,16 @@ int git_diff_basic_config(const char *var, const char *value, void *cb) if (!prefixcmp(var, "submodule.")) return parse_submodule_config_option(var, value); + if (!strcmp(var, "diffstat.width")) { + diff_stat_width = git_config_int(var, value); + return 0; + } + + if (!strcmp(var, "diffstat.namewidth")) { + diff_stat_name_width = git_config_int(var, value); + return 0; + } + return git_color_default_config(var, value, cb); } @@ -1247,8 +1259,8 @@ static void show_stats(struct diffstat_t *data, struct diff_options *options) line_prefix = msg->buf; } - width = options->stat_width ? options->stat_width : DIFF_STAT_DEFAULT_WIDTH; - name_width = options->stat_name_width ? options->stat_name_width : DIFF_STAT_DEFAULT_NAME_WIDTH; + width = diff_stat_width ? diff_stat_width : DIFF_STAT_DEFAULT_WIDTH; + name_width = diff_stat_name_width ? diff_stat_name_width : DIFF_STAT_DEFAULT_NAME_WIDTH; /* Sanity: give at least 5 columns to the graph, * but leave at least 10 columns for the name. @@ -3057,8 +3069,8 @@ static int stat_opt(struct diff_options *options, const char **av) { const char *arg = av[0]; char *end; - int width = options->stat_width; - int name_width = options->stat_name_width; + int width = diff_stat_width; + int name_width = diff_stat_name_width; int argcount = 1; arg += strlen("--stat"); @@ -3098,8 +3110,8 @@ static int stat_opt(struct diff_options *options, const char **av) if (*end) return 0; options->output_format |= DIFF_FORMAT_DIFFSTAT; - options->stat_name_width = name_width; - options->stat_width = width; + diff_stat_name_width = name_width; + diff_stat_width = width; return argcount; } diff --git a/diff.h b/diff.h index 7b509c5..011f2ac 100644 --- a/diff.h +++ b/diff.h @@ -122,8 +122,6 @@ struct diff_options { const char *stat_sep; long xdl_opts; - int stat_width; - int stat_name_width; const char *word_regex; enum diff_words_type word_diff; -- 1.7.1 -- 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