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.

Raspunde prin e-mail lui