From: Nguyễn Thái Ngọc Duy Date: Sun, 07 Mar 2010 12:09:45 GMT Subject: [PATCH 12/12] grep: support column output with --columns Message-ID: <1267963785-473-13-git-send-email-pclouds@gmail.com> In-Reply-To: <1267963785-473-1-git-send-email-pclouds@gmail.com> Signed-off-by: Nguyễn Thái Ngọc Duy --- Documentation/git-grep.txt | 10 ++++++++++ builtin/grep.c | 9 +++++++++ 2 files changed, 19 insertions(+), 0 deletions(-) diff --git a/Documentation/git-grep.txt b/Documentation/git-grep.txt index 4b32322..7bd6a4f 100644 --- a/Documentation/git-grep.txt +++ b/Documentation/git-grep.txt @@ -18,6 +18,7 @@ SYNOPSIS [-c | --count] [--all-match] [-q | --quiet] [--max-depth ] [--color[=] | --no-color] + [--columns | --no-columns] [-A ] [-B ] [-C ] [-f ] [-e] [--and|--or|--not|(|)|-e ...] @@ -123,6 +124,15 @@ OPTIONS gives the default to color output. Same as `--color=never`. +--columns:: + Show matched files in columns. This option is only applicable when + used with --name-only or --files-without-match. + +--no-columns:: + Show matched files in a single list. This option is used to + override core.columns if set. This option is only applicable + when used with --name-only or --files-without-match. + -[ABC] :: Show `context` trailing (`A` -- after), or leading (`B` -- before), or both (`C` -- context) lines, and place a diff --git a/builtin/grep.c b/builtin/grep.c index b8a1d5c..48c8c57 100644 --- a/builtin/grep.c +++ b/builtin/grep.c @@ -15,6 +15,7 @@ #include "grep.h" #include "quote.h" #include "dir.h" +#include "column.h" #ifndef NO_PTHREADS #include "thread-utils.h" @@ -759,6 +760,7 @@ int cmd_grep(int argc, const char **argv, const char *prefix) int cached = 0; int seen_dashdash = 0; int external_grep_allowed__ignored; + int column_output = 0; struct grep_opt opt; struct object_array list = { 0, 0, NULL }; const char **paths = NULL; @@ -849,6 +851,7 @@ int cmd_grep(int argc, const char **argv, const char *prefix) "allow calling of grep(1) (ignored by this build)"), { OPTION_CALLBACK, 0, "help-all", &options, NULL, "show usage", PARSE_OPT_HIDDEN | PARSE_OPT_NOARG, help_callback }, + OPT_BOOLEAN(0, "columns", &column_output, "show match files in columns"), OPT_END() }; @@ -876,6 +879,7 @@ int cmd_grep(int argc, const char **argv, const char *prefix) git_config(grep_config, &opt); if (opt.color == -1) opt.color = git_use_color_default; + column_output = core_column_output; /* * If there is no -- then the paths must exist in the working @@ -967,6 +971,9 @@ int cmd_grep(int argc, const char **argv, const char *prefix) paths[1] = NULL; } + if (opt.name_only && column_output) + start_columnizer(NULL); + if (!use_index) { if (cached) die("--cached cannot be used with --no-index."); @@ -1002,5 +1009,7 @@ int cmd_grep(int argc, const char **argv, const char *prefix) free_grep_patterns(&opt); } + if (opt.name_only && column_output) + stop_columnizer(); return !hit; } -- 1.7.0.1.370.gd3c5