mirror of
https://github.com/BurntSushi/ripgrep.git
synced 2025-01-03 05:10:12 +02:00
ux: suggest --fixed-strings flag
If a regex syntax error occurs, then ripgrep will suggest using the --fixed-strings flag. Fixes #727
This commit is contained in:
parent
b6177f0459
commit
14779ed0ea
13
src/args.rs
13
src/args.rs
@ -11,7 +11,7 @@ use std::sync::atomic::{AtomicBool, Ordering};
|
|||||||
use clap;
|
use clap;
|
||||||
use encoding_rs::Encoding;
|
use encoding_rs::Encoding;
|
||||||
use env_logger;
|
use env_logger;
|
||||||
use grep::{Grep, GrepBuilder};
|
use grep::{Grep, GrepBuilder, Error as GrepError};
|
||||||
use log;
|
use log;
|
||||||
use num_cpus;
|
use num_cpus;
|
||||||
use regex;
|
use regex;
|
||||||
@ -783,7 +783,16 @@ impl<'a> ArgMatches<'a> {
|
|||||||
if let Some(limit) = self.regex_size_limit()? {
|
if let Some(limit) = self.regex_size_limit()? {
|
||||||
gb = gb.size_limit(limit);
|
gb = gb.size_limit(limit);
|
||||||
}
|
}
|
||||||
gb.build().map_err(From::from)
|
gb.build().map_err(|err| {
|
||||||
|
match err {
|
||||||
|
GrepError::Regex(err) => {
|
||||||
|
let s = format!("{}\n(Hint: Try the --fixed-strings flag \
|
||||||
|
to search for a literal string.)", err.to_string());
|
||||||
|
From::from(s)
|
||||||
|
},
|
||||||
|
err => From::from(err)
|
||||||
|
}
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Builds the set of glob overrides from the command line flags.
|
/// Builds the set of glob overrides from the command line flags.
|
||||||
|
@ -1599,6 +1599,16 @@ sherlock!(feature_419_zero_as_shortcut_for_null, "Sherlock", ".",
|
|||||||
assert_eq!(lines, "sherlock\x002\n");
|
assert_eq!(lines, "sherlock\x002\n");
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// See: https://github.com/BurntSushi/ripgrep/issues/709
|
||||||
|
clean!(suggest_fixed_strings_for_invalid_regex, "foo(", ".",
|
||||||
|
|wd: WorkDir, mut cmd: Command| {
|
||||||
|
wd.assert_non_empty_stderr(&mut cmd);
|
||||||
|
|
||||||
|
let output = cmd.output().unwrap();
|
||||||
|
let err = String::from_utf8_lossy(&output.stderr);
|
||||||
|
assert_eq!(err.contains("--fixed-strings"), true);
|
||||||
|
});
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn binary_nosearch() {
|
fn binary_nosearch() {
|
||||||
let wd = WorkDir::new("binary_nosearch");
|
let wd = WorkDir::new("binary_nosearch");
|
||||||
|
Loading…
Reference in New Issue
Block a user