J Smith <dark.panda@xxxxxxxxx> writes: > Enables the -P flag for perl regexps by default. When both the > perlRegexp and extendedRegexp options are enabled, the last enabled > option wins. Turning "grep.extendedregexp" from boolean to an extended boolean to allow "grep.extendedregexp = perl" might be a better alternative. That way, the user wouldn't have to worry about 7 variants of grep.fooRegexp variables twenty years down the road, even though the set of possible values given to "grep.extendedregexp" may have grown over time by then. > --- > Documentation/config.txt | 6 ++++++ > Documentation/git-grep.txt | 6 ++++++ > builtin/grep.c | 17 +++++++++++++++-- > t/t7810-grep.sh | 34 ++++++++++++++++++++++++++++++++++ > 4 files changed, 61 insertions(+), 2 deletions(-) > > diff --git a/Documentation/config.txt b/Documentation/config.txt > index a95e5a4..ff3019b 100644 > --- a/Documentation/config.txt > +++ b/Documentation/config.txt > @@ -1213,6 +1213,12 @@ grep.lineNumber:: > grep.extendedRegexp:: > If set to true, enable '--extended-regexp' option by default. > > +grep.perlRegexp:: > + If set to true, enable '--perl-regexp' option by default. > + > +When both the 'grep.extendedRegexp' and 'grep.perlRegexp' options > +are used, the last enabled option wins. > + > gpg.program:: > Use this custom program instead of "gpg" found on $PATH when > making or verifying a PGP signature. The program must support the > diff --git a/Documentation/git-grep.txt b/Documentation/git-grep.txt > index 3bec036..8816968 100644 > --- a/Documentation/git-grep.txt > +++ b/Documentation/git-grep.txt > @@ -45,6 +45,12 @@ grep.lineNumber:: > grep.extendedRegexp:: > If set to true, enable '--extended-regexp' option by default. > > +grep.perlRegexp:: > + If set to true, enable '--perl-regexp' option by default. > + > +When both the 'grep.extendedRegexp' and 'grep.perlRegexp' options > +are used, the last enabled option wins. > + > > OPTIONS > ------- > diff --git a/builtin/grep.c b/builtin/grep.c > index 29adb0a..b4475e6 100644 > --- a/builtin/grep.c > +++ b/builtin/grep.c > @@ -268,11 +268,24 @@ static int grep_config(const char *var, const char *value, void *cb) > if (userdiff_config(var, value) < 0) > return -1; > > + if (!strcmp(var, "grep.perlregexp")) { > + if (git_config_bool(var, value)) { > + opt->fixed = 0; > + opt->pcre = 1; > + } else { > + opt->pcre = 0; > + } > + return 0; > + } > + > if (!strcmp(var, "grep.extendedregexp")) { > - if (git_config_bool(var, value)) > + if (git_config_bool(var, value)) { > opt->regflags |= REG_EXTENDED; > - else > + opt->pcre = 0; > + opt->fixed = 0; > + } else { > opt->regflags &= ~REG_EXTENDED; > + } > return 0; > } > > diff --git a/t/t7810-grep.sh b/t/t7810-grep.sh > index 24e9b19..5479dc9 100755 > --- a/t/t7810-grep.sh > +++ b/t/t7810-grep.sh > @@ -729,6 +729,40 @@ test_expect_success LIBPCRE 'grep -P pattern' ' > test_cmp expected actual > ' > > +test_expect_success LIBPCRE 'grep pattern with grep.perlRegexp=true' ' > + git \ > + -c grep.perlregexp=true \ > + grep "\p{Ps}.*?\p{Pe}" hello.c >actual && > + test_cmp expected actual > +' > + > +test_expect_success LIBPCRE 'grep pattern with grep.perlRegexp=true and then grep.extendedRegexp=true' ' > + test_must_fail git \ > + -c grep.perlregexp=true \ > + -c grep.extendedregexp=true \ > + grep "\p{Ps}.*?\p{Pe}" hello.c > +' > + > +test_expect_success LIBPCRE 'grep pattern with grep.extendedRegexp=true and then grep.perlRegexp=true' ' > + git \ > + -c grep.extendedregexp=true \ > + -c grep.perlregexp=true \ > + grep "\p{Ps}.*?\p{Pe}" hello.c >actual && > + test_cmp expected actual > +' > + > +test_expect_success LIBPCRE 'grep -E pattern with grep.perlRegexp=true' ' > + test_must_fail git \ > + -c grep.perlregexp=true \ > + grep -E "\p{Ps}.*?\p{Pe}" hello.c > +' > + > +test_expect_success LIBPCRE 'grep -G pattern with grep.perlRegexp=true' ' > + test_must_fail git \ > + -c grep.perlregexp=true \ > + grep -G "\p{Ps}.*?\p{Pe}" hello.c > +' > + > test_expect_success 'grep pattern with grep.extendedRegexp=true' ' > >empty && > test_must_fail git -c grep.extendedregexp=true \ > -- > 1.7.11.3 -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html