diff --git a/doc/rg.1 b/doc/rg.1 index c115844e4..68cdda999 100644 --- a/doc/rg.1 +++ b/doc/rg.1 @@ -175,6 +175,12 @@ This is the default when more than one file is searched. .RS .RE .TP +.B \-\-no\-filename +Never show the filename for a match. +This is the default when one file is searched. +.RS +.RE +.TP .B \-\-heading Show the file name above clusters of matches from each file. This is the default mode at a tty. diff --git a/doc/rg.1.md b/doc/rg.1.md index 028d3a578..7de82e89f 100644 --- a/doc/rg.1.md +++ b/doc/rg.1.md @@ -114,6 +114,10 @@ the raw speed of grep. : Prefix each match with the file name that contains it. This is the default when more than one file is searched. +--no-filename +: Never show the filename for a match. This is the default when + one file is searched. + --heading : Show the file name above clusters of matches from each file. This is the default mode at a tty. diff --git a/src/args.rs b/src/args.rs index 13ed63810..ea1bcba4a 100644 --- a/src/args.rs +++ b/src/args.rs @@ -114,6 +114,10 @@ Less common options: Prefix each match with the file name that contains it. This is the default when more than one file is searched. + --no-filename + Never show the filename for a match. This is the default when + one file is searched. + --heading Show the file name above clusters of matches from each file. This is the default mode at a tty. @@ -203,6 +207,7 @@ pub struct RawArgs { flag_no_ignore_parent: bool, flag_no_line_number: bool, flag_no_mmap: bool, + flag_no_filename: bool, flag_pretty: bool, flag_quiet: bool, flag_regexp: Vec, @@ -321,10 +326,13 @@ impl RawArgs { self.flag_color == "always" }; let eol = b'\n'; + let mut with_filename = self.flag_with_filename; if !with_filename { with_filename = paths.len() > 1 || paths[0].is_dir(); } + with_filename = with_filename && !self.flag_no_filename; + let mut btypes = TypesBuilder::new(); btypes.add_defaults(); try!(self.add_types(&mut btypes)); diff --git a/tests/tests.rs b/tests/tests.rs index bd85fb19e..4ffda0d64 100644 --- a/tests/tests.rs +++ b/tests/tests.rs @@ -652,6 +652,18 @@ clean!(regression_65, "xyz", ".", |wd: WorkDir, mut cmd: Command| { wd.assert_err(&mut cmd); }); +// See: https://github.com/BurntSushi/ripgrep/issues/20 +sherlock!(feature_20, "Sherlock", ".", |wd: WorkDir, mut cmd: Command| { + cmd.arg("--no-filename"); + + let lines: String = wd.stdout(&mut cmd); + let expected = "\ +For the Doctor Watsons of this world, as opposed to the Sherlock +be, to a very large extent, the result of luck. Sherlock Holmes +"; + assert_eq!(lines, expected); +}); + #[test] fn binary_nosearch() { let wd = WorkDir::new("binary_nosearch");