diff -r b842b1adfea2 -r fac24eab65a4 mercurial/commands.py --- a/mercurial/commands.py Thu Aug 18 14:03:25 2016 +0900 +++ b/mercurial/commands.py Thu Aug 18 14:09:49 2016 +0900 @@ -4356,14 +4356,6 @@ yield m.span() p = m.end() - def __iter__(self): - p = 0 - for s, e in self.findpos(): - yield self.line[p:s], '' - yield self.line[s:e], 'grep.match' - p = e - yield self.line[p:], '' - matches = {} copies = {} def grepbody(fn, rev, body): @@ -4424,14 +4416,21 @@ if not opts.get('text') and binary(): ui.write(_(" Binary file matches")) else: - for s, label in l: - ui.write(s, label=label) + displaymatches(l) ui.write(eol) found = True if opts.get('files_with_matches'): break return found + def displaymatches(l): + p = 0 + for s, e in l.findpos(): + ui.write(l.line[p:s]) + ui.write(l.line[s:e], label='grep.match') + p = e + ui.write(l.line[p:]) + skip = {} revfiles = {} matchfn = scmutil.match(repo[None], pats, opts)