diff options
author | Junio C Hamano <gitster@pobox.com> | 2009-07-09 00:59:58 -0700 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2009-07-09 00:59:58 -0700 |
commit | 128a9d86da3c156c7d1bf25692eeb68a522af935 (patch) | |
tree | c741913f11f81167c34ab306c35c8ed95eb88640 /builtin-grep.c | |
parent | ce4f404c6f059abb4988f4549c6e46a3ba0d56ec (diff) | |
parent | ed24e401e0e6ab860475b8575e28a2c6ea99cc69 (diff) | |
download | git-128a9d86da3c156c7d1bf25692eeb68a522af935.tar.gz |
Merge branch 'rs/grep-p'
* rs/grep-p:
grep: simplify -p output
grep -p: support user defined regular expressions
grep: add option -p/--show-function
grep: handle pre context lines on demand
grep: print context hunk marks between files
grep: move context hunk mark handling into show_line()
userdiff: add xdiff_clear_find_func()
Diffstat (limited to 'builtin-grep.c')
-rw-r--r-- | builtin-grep.c | 22 |
1 files changed, 21 insertions, 1 deletions
diff --git a/builtin-grep.c b/builtin-grep.c index e5583686a2..f477659100 100644 --- a/builtin-grep.c +++ b/builtin-grep.c @@ -11,6 +11,7 @@ #include "tree-walk.h" #include "builtin.h" #include "parse-options.h" +#include "userdiff.h" #include "grep.h" #ifndef NO_EXTERNAL_GREP @@ -30,6 +31,12 @@ static int grep_config(const char *var, const char *value, void *cb) { struct grep_opt *opt = cb; + switch (userdiff_config(var, value)) { + case 0: break; + case -1: return -1; + default: return 0; + } + if (!strcmp(var, "color.grep")) { opt->color = git_config_colorbool(var, value, -1); return 0; @@ -278,6 +285,17 @@ static int flush_grep(struct grep_opt *opt, argc -= 2; } + if (opt->pre_context || opt->post_context) { + /* + * grep handles hunk marks between files, but we need to + * do that ourselves between multiple calls. + */ + if (opt->show_hunk_mark) + write_or_die(1, "--\n", 3); + else + opt->show_hunk_mark = 1; + } + status = exec_grep(argc, argv); if (kept_0) { @@ -710,6 +728,8 @@ int cmd_grep(int argc, const char **argv, const char *prefix) "show <n> context lines after matches"), OPT_NUMBER_CALLBACK(&opt, "shortcut for -C NUM", context_callback), + OPT_BOOLEAN('p', "show-function", &opt.funcname, + "show a line with the function name before matches"), OPT_GROUP(""), OPT_CALLBACK('f', NULL, &opt, "file", "read patterns from file", file_callback), @@ -778,7 +798,7 @@ int cmd_grep(int argc, const char **argv, const char *prefix) argc--; } - if (opt.color && !opt.color_external) + if ((opt.color && !opt.color_external) || opt.funcname) external_grep_allowed = 0; if (!opt.pattern_list) die("no pattern given."); |