diff options
author | Balaji Sivaraman <balaji@balajisivaraman.com> | 2018-01-01 21:54:46 +0530 |
---|---|---|
committer | Andrew Gallant <jamslam@gmail.com> | 2018-01-01 11:24:46 -0500 |
commit | 14779ed0ea5d28aaa6c04dff3be77989f9fd2836 (patch) | |
tree | b71bd233b0a8592e1a645afad62e411b469b8bec /src/args.rs | |
parent | b6177f0459044a7e3fb882ecda9c80e44e4d95de (diff) |
ux: suggest --fixed-strings flag
If a regex syntax error occurs, then ripgrep will suggest
using the --fixed-strings flag.
Fixes #727
Diffstat (limited to 'src/args.rs')
-rw-r--r-- | src/args.rs | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/src/args.rs b/src/args.rs index 77cf8cc0..f0f93ccb 100644 --- a/src/args.rs +++ b/src/args.rs @@ -11,7 +11,7 @@ use std::sync::atomic::{AtomicBool, Ordering}; use clap; use encoding_rs::Encoding; use env_logger; -use grep::{Grep, GrepBuilder}; +use grep::{Grep, GrepBuilder, Error as GrepError}; use log; use num_cpus; use regex; @@ -783,7 +783,16 @@ impl<'a> ArgMatches<'a> { if let Some(limit) = self.regex_size_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. |