summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/printer.rs18
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,