From: J Smith <dark.panda@gmail.com>
To: git@vger.kernel.org
Subject: [PATCH/RFC] grep: add a perlRegexp configuration option
Date: Tue, 31 Jul 2012 12:57:34 -0400 [thread overview]
Message-ID: <1343753854-66765-1-git-send-email-dark.panda@gmail.com> (raw)
Enables the -P flag for perl regexps by default. When both the
perlRegexp and extendedRegexp options are enabled, the last enabled
option wins.
---
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
next reply other threads:[~2012-07-31 16:58 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-07-31 16:57 J Smith [this message]
2012-07-31 18:04 ` [PATCH/RFC] grep: add a perlRegexp configuration option Junio C Hamano
2012-07-31 20:20 ` J Smith
2012-07-31 20:30 ` Junio C Hamano
2012-07-31 20:35 ` J Smith
2012-07-31 21:05 ` Junio C Hamano
2012-07-31 22:56 ` J Smith
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1343753854-66765-1-git-send-email-dark.panda@gmail.com \
--to=dark.panda@gmail.com \
--cc=git@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).