diff options
author | Andrew Gallant <jamslam@gmail.com> | 2016-09-25 15:01:27 -0400 |
---|---|---|
committer | Andrew Gallant <jamslam@gmail.com> | 2016-09-25 15:01:29 -0400 |
commit | 9dc5464c84cf96c8e7cba96e2b470ebd066c2393 (patch) | |
tree | 4016714c5d55db24824f6c38139aa7877f3f8c60 /src | |
parent | 95edcd4d3a7c98d5679c890ed9875a17e54ca001 (diff) |
Stop after first match is found with --quiet.
Fixes #77.
Diffstat (limited to 'src')
-rw-r--r-- | src/args.rs | 3 | ||||
-rw-r--r-- | src/printer.rs | 5 | ||||
-rw-r--r-- | src/search_buffer.rs | 2 | ||||
-rw-r--r-- | src/search_stream.rs | 3 |
4 files changed, 10 insertions, 3 deletions
diff --git a/src/args.rs b/src/args.rs index 72d4fdd8..5c3376a6 100644 --- a/src/args.rs +++ b/src/args.rs @@ -66,7 +66,8 @@ Common options: -n, --line-number Show line numbers (1-based). This is enabled by default at a tty. -N, --no-line-number Suppress line numbers. - -q, --quiet Do not print anything to stdout. + -q, --quiet Do not print anything to stdout. If a match is + found in a file, stop searching that file. -r, --replace ARG Replace every match with the string given. Capture group indices (e.g., $5) and names (e.g., $foo) are supported. diff --git a/src/printer.rs b/src/printer.rs index 999e078a..a690eaa0 100644 --- a/src/printer.rs +++ b/src/printer.rs @@ -116,6 +116,11 @@ impl<W: Terminal + Send> Printer<W> { self.has_printed } + /// Returns true if the printer has been configured to be quiet. + pub fn is_quiet(&self) -> bool { + self.quiet + } + /// Flushes the underlying writer and returns it. pub fn into_inner(mut self) -> W { let _ = self.wtr.flush(); diff --git a/src/search_buffer.rs b/src/search_buffer.rs index a3edbcb0..efc66cd7 100644 --- a/src/search_buffer.rs +++ b/src/search_buffer.rs @@ -104,7 +104,7 @@ impl<'a, W: Send + Terminal> BufferSearcher<'a, W> { self.print_match(m.start(), m.end()); } last_end = m.end(); - if self.opts.files_with_matches { + if self.printer.is_quiet() || self.opts.files_with_matches { break; } } diff --git a/src/search_stream.rs b/src/search_stream.rs index 7b661808..0b5bfaf6 100644 --- a/src/search_stream.rs +++ b/src/search_stream.rs @@ -265,7 +265,8 @@ impl<'a, R: io::Read, W: Terminal + Send> Searcher<'a, R, W> { #[inline(always)] fn terminate(&self) -> bool { - return self.opts.files_with_matches && self.match_count > 0; + self.match_count > 0 + && (self.printer.is_quiet() || self.opts.files_with_matches) } #[inline(always)] |