* [PATCH/RFC] grep: add a perlRegexp configuration option
@ 2012-07-31 16:57 J Smith
2012-07-31 18:04 ` Junio C Hamano
0 siblings, 1 reply; 7+ messages in thread
From: J Smith @ 2012-07-31 16:57 UTC (permalink / raw)
To: git
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
^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [PATCH/RFC] grep: add a perlRegexp configuration option
2012-07-31 16:57 [PATCH/RFC] grep: add a perlRegexp configuration option J Smith
@ 2012-07-31 18:04 ` Junio C Hamano
2012-07-31 20:20 ` J Smith
0 siblings, 1 reply; 7+ messages in thread
From: Junio C Hamano @ 2012-07-31 18:04 UTC (permalink / raw)
To: J Smith; +Cc: git
J Smith <dark.panda@gmail.com> 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
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH/RFC] grep: add a perlRegexp configuration option
2012-07-31 18:04 ` Junio C Hamano
@ 2012-07-31 20:20 ` J Smith
2012-07-31 20:30 ` Junio C Hamano
0 siblings, 1 reply; 7+ messages in thread
From: J Smith @ 2012-07-31 20:20 UTC (permalink / raw)
To: Junio C Hamano; +Cc: git
On Tue, Jul 31, 2012 at 2:04 PM, Junio C Hamano <gitster@pobox.com> wrote:
>
> 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.
Yeah, that sounds good. I've re-written the patch to accommodate the
change allowing for the current boolean settings of true/false as well
as "perl". For the sake of completeness (verbosity? pedantry?) I also
included a setting for "extended" which is equivalent to true.
With this sort of change, would a more generic "grep.regexpMode",
"grep.patternType" or something similar perhaps be more descriptive,
with "grep.extendedRegexp" being aliased for backwards compatibility
purposes? I could also add that functionality if desired.
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH/RFC] grep: add a perlRegexp configuration option
2012-07-31 20:20 ` J Smith
@ 2012-07-31 20:30 ` Junio C Hamano
2012-07-31 20:35 ` J Smith
0 siblings, 1 reply; 7+ messages in thread
From: Junio C Hamano @ 2012-07-31 20:30 UTC (permalink / raw)
To: J Smith; +Cc: git
J Smith <dark.panda@gmail.com> writes:
> ... For the sake of completeness (verbosity? pedantry?) I also
> included a setting for "extended" which is equivalent to true.
Good thinking.
> With this sort of change, would a more generic "grep.regexpMode",
> "grep.patternType" or something similar perhaps be more descriptive,
> with "grep.extendedRegexp" being aliased for backwards compatibility
> purposes? I could also add that functionality if desired.
A variable called "extendedRegexp" already reads quite naturally if
it can have value to say what kind of extendedness is desired, at
least to me. So I do not care too deeply either way.
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH/RFC] grep: add a perlRegexp configuration option
2012-07-31 20:30 ` Junio C Hamano
@ 2012-07-31 20:35 ` J Smith
2012-07-31 21:05 ` Junio C Hamano
0 siblings, 1 reply; 7+ messages in thread
From: J Smith @ 2012-07-31 20:35 UTC (permalink / raw)
To: Junio C Hamano; +Cc: git
On Tue, Jul 31, 2012 at 4:30 PM, Junio C Hamano <gitster@pobox.com> wrote:
> J Smith <dark.panda@gmail.com> writes:
>
>> ... For the sake of completeness (verbosity? pedantry?) I also
>> included a setting for "extended" which is equivalent to true.
>
> Good thinking.
>
>> With this sort of change, would a more generic "grep.regexpMode",
>> "grep.patternType" or something similar perhaps be more descriptive,
>> with "grep.extendedRegexp" being aliased for backwards compatibility
>> purposes? I could also add that functionality if desired.
>
> A variable called "extendedRegexp" already reads quite naturally if
> it can have value to say what kind of extendedness is desired, at
> least to me. So I do not care too deeply either way.
On the flip side, it might be useful to some to have the option to set
the value to "fixed" for the "--fixed-strings" argument, in which case
the option becomes less a type of extended regexp and more of a simple
search string. Were that to be the case, I think "grep.patternType"
would feel the most precise.
I think for completeness at the very least I should work in the
"fixed" value as an valid value, option naming aside.
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH/RFC] grep: add a perlRegexp configuration option
2012-07-31 20:35 ` J Smith
@ 2012-07-31 21:05 ` Junio C Hamano
2012-07-31 22:56 ` J Smith
0 siblings, 1 reply; 7+ messages in thread
From: Junio C Hamano @ 2012-07-31 21:05 UTC (permalink / raw)
To: J Smith; +Cc: git
J Smith <dark.panda@gmail.com> writes:
> On Tue, Jul 31, 2012 at 4:30 PM, Junio C Hamano <gitster@pobox.com> wrote:
>> J Smith <dark.panda@gmail.com> writes:
>>
>>> ... For the sake of completeness (verbosity? pedantry?) I also
>>> included a setting for "extended" which is equivalent to true.
>>
>> Good thinking.
>>
>>> With this sort of change, would a more generic "grep.regexpMode",
>>> "grep.patternType" or something similar perhaps be more descriptive,
>>> with "grep.extendedRegexp" being aliased for backwards compatibility
>>> purposes? I could also add that functionality if desired.
>>
>> A variable called "extendedRegexp" already reads quite naturally if
>> it can have value to say what kind of extendedness is desired, at
>> least to me. So I do not care too deeply either way.
>
> On the flip side, it might be useful to some to have the option to set
> the value to "fixed" for the "--fixed-strings" argument, in which case
> the option becomes less a type of extended regexp and more of a simple
> search string. Were that to be the case, I think "grep.patternType"
> would feel the most precise.
>
> I think for completeness at the very least I should work in the
> "fixed" value as an valid value, option naming aside.
Ok, then grep.patternType it is.
Thanks.
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH/RFC] grep: add a perlRegexp configuration option
2012-07-31 21:05 ` Junio C Hamano
@ 2012-07-31 22:56 ` J Smith
0 siblings, 0 replies; 7+ messages in thread
From: J Smith @ 2012-07-31 22:56 UTC (permalink / raw)
To: Junio C Hamano; +Cc: git
On Tue, Jul 31, 2012 at 5:05 PM, Junio C Hamano <gitster@pobox.com> wrote:
>
> Ok, then grep.patternType it is.
>
> Thanks.
Cool, patches should be on their way. I added options for "basic",
"extended", "fixed" and "perl" for completeness along with the name
change with a BC alias patch separately for perusal.
Cheers.
^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2012-07-31 22:56 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2012-07-31 16:57 [PATCH/RFC] grep: add a perlRegexp configuration option J Smith
2012-07-31 18:04 ` 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
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.