summary | shortlog | log | commit | commitdiff | tree
raw | patch | inline | side by side (parent: 8cfe5f1)
raw | patch | inline | side by side (parent: 8cfe5f1)
author | René Scharfe <rene.scharfe@lsrfire.ath.cx> | |
Wed, 1 Jul 2009 22:02:38 +0000 (00:02 +0200) | ||
committer | Junio C Hamano <gitster@pobox.com> | |
Thu, 2 Jul 2009 02:16:45 +0000 (19:16 -0700) |
Move last_shown into struct grep_opt, to make it available in
show_line(), and then make the function handle the printing of hunk
marks for context lines in a central place.
Signed-off-by: Rene Scharfe <rene.scharfe@lsrfire.ath.cx>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
show_line(), and then make the function handle the printing of hunk
marks for context lines in a central place.
Signed-off-by: Rene Scharfe <rene.scharfe@lsrfire.ath.cx>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
grep.c | patch | blob | history | |
grep.h | patch | blob | history |
index 92a47c71e7d93eef7dc8d6967cd071aa061218ce..6ee80f7fd9b014a0855f9eadb24cb71b9b97836f 100644 (file)
--- a/grep.c
+++ b/grep.c
{
int rest = eol - bol;
+ if (opt->pre_context || opt->post_context) {
+ if (opt->last_shown && lno > opt->last_shown + 1)
+ fputs("--\n", stdout);
+ }
+ opt->last_shown = lno;
+
if (opt->null_following_name)
sign = '\0';
if (opt->pathname)
char *eol;
} *prev = NULL, *pcl;
unsigned last_hit = 0;
- unsigned last_shown = 0;
int binary_match_only = 0;
- const char *hunk_mark = "";
unsigned count = 0;
enum grep_context ctx = GREP_CONTEXT_HEAD;
+ opt->last_shown = 0;
+
if (buffer_is_binary(buf, size)) {
switch (opt->binary) {
case GREP_BINARY_DEFAULT:
if (opt->pre_context)
prev = xcalloc(opt->pre_context, sizeof(*prev));
- if (opt->pre_context || opt->post_context)
- hunk_mark = "--\n";
while (left) {
char *eol, ch;
from = lno - opt->pre_context;
else
from = 1;
- if (from <= last_shown)
- from = last_shown + 1;
- if (last_shown && from != last_shown + 1)
- fputs(hunk_mark, stdout);
+ if (from <= opt->last_shown)
+ from = opt->last_shown + 1;
while (from < lno) {
pcl = &prev[lno-from-1];
show_line(opt, pcl->bol, pcl->eol,
name, from, '-');
from++;
}
- last_shown = lno-1;
}
- if (last_shown && lno != last_shown + 1)
- fputs(hunk_mark, stdout);
if (!opt->count)
show_line(opt, bol, eol, name, lno, ':');
- last_shown = last_hit = lno;
+ last_hit = lno;
}
else if (last_hit &&
lno <= last_hit + opt->post_context) {
/* If the last hit is within the post context,
* we need to show this line.
*/
- if (last_shown && lno != last_shown + 1)
- fputs(hunk_mark, stdout);
show_line(opt, bol, eol, name, lno, '-');
- last_shown = lno;
}
if (opt->pre_context) {
memmove(prev+1, prev,
index 464e272edf4594539915a89d68628fd3959b8ee3..0883214a0935f09ffe4aa8cb1733ce31d342a5d8 100644 (file)
--- a/grep.h
+++ b/grep.h
int regflags;
unsigned pre_context;
unsigned post_context;
+ unsigned last_shown;
};
extern void append_grep_pattern(struct grep_opt *opt, const char *pat, const char *origin, int no, enum grep_pat_token t);