diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/printer.rs | 18 |
1 files changed, 14 insertions, 4 deletions
diff --git a/src/printer.rs b/src/printer.rs index 721967e2..20fd1c4d 100644 --- a/src/printer.rs +++ b/src/printer.rs @@ -272,10 +272,14 @@ impl<W: WriteColor> Printer<W> { byte_offset: Option<u64> ) { if !self.line_per_match && !self.only_matching { - let mat = re - .find(&buf[start..end]) - .map(|m| (m.start(), m.end())) - .unwrap_or((0, 0)); + let mat = + if !self.needs_match() { + (0, 0) + } else { + re.find(&buf[start..end]) + .map(|m| (m.start(), m.end())) + .unwrap_or((0, 0)) + }; return self.write_match( re, path, buf, start, end, line_number, byte_offset, mat.0, mat.1); @@ -287,6 +291,12 @@ impl<W: WriteColor> Printer<W> { } } + fn needs_match(&self) -> bool { + self.column + || self.replace.is_some() + || self.only_matching + } + fn write_match<P: AsRef<Path>>( &mut self, re: &Regex, |