Hi Bram!
On Fr, 20 Sep 2013, Bram Moolenaar wrote:
> Christian Brabandt wrote:
>
> > On Do, 19 Sep 2013, Jonathon Merz wrote:
> >
> > > With the new regexp engine, when searching for a null character using
> > > decimal/octal/hex character matches, all lines are matched instead of only
> > > the specified character.
> > >
> > > The attached .txt file (ok to attach I hope) has a null character
> > > (represented as "^@") in the first line.
> > >
> > > Using the new engine:
> > > \%#=2\%d0
> > > Matches all lines in the file, but using:
> >
> > That doesn't match for me anything.
> >
> > > \%#=1\%d0
> > > matches only the null character as expected.
> > >
> > > The same goes for using \%o and \%x to match characters specified in octal
> > > and hex.
> >
> > This patch fixes it:
>
> Thanks! Guess what the bonus question is...
The bonus question is:
Why do we need 2 regexp engines? ;)
diff --git a/src/regexp_nfa.c b/src/regexp_nfa.c
--- a/src/regexp_nfa.c
+++ b/src/regexp_nfa.c
@@ -1385,7 +1385,7 @@
_("E678: Invalid character after %s%%[dxouU]"),
reg_magic == MAGIC_ALL);
/* TODO: what if a composing character follows? */
- EMIT(nr);
+ EMIT(nr == 0 ? 0x0a : nr);
}
break;
diff --git a/src/testdir/test64.in b/src/testdir/test64.in
--- a/src/testdir/test64.in
+++ b/src/testdir/test64.in
@@ -373,6 +373,7 @@
:call add(tl, [2, '\%x20', 'yes no', ' '])
:call add(tl, [2, '\%u0020', 'yes no', ' '])
:call add(tl, [2, '\%U00000020', 'yes no', ' '])
+:call add(tl, [2, '\%d0', "yes\x0ano", "\x0a"])
:"
:""""" \%[abc]
:call add(tl, [2, 'foo\%[bar]', 'fobar'])
diff --git a/src/testdir/test64.ok b/src/testdir/test64.ok
--- a/src/testdir/test64.ok
+++ b/src/testdir/test64.ok
@@ -863,6 +863,9 @@
OK 0 - \%U00000020
OK 1 - \%U00000020
OK 2 - \%U00000020
+OK 0 - \%d0
+OK 1 - \%d0
+OK 2 - \%d0
OK 0 - foo\%[bar]
OK 1 - foo\%[bar]
OK 2 - foo\%[bar]
regards,
Christian
--
"Ich glaube einen Gott!" Dies ist ein schönes, löbliches Wort;
aber Gott anerkennen, wo und wie er sich offenbare, das ist
eigentlich die Seligkeit auf Erden.
-- Goethe, Maximen und Reflektionen, Nr. 539
--
--
You received this message from the "vim_dev" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php
---
You received this message because you are subscribed to the Google Groups
"vim_dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/groups/opt_out.