changeset 4551:f0c37f5cf4ea v7.3.1023

updated for version 7.3.1023 Problem: Searching for composing char only and using \Z has different results. Solution: Make it match the composing char, matching everything is not useful.
author Bram Moolenaar <bram@vim.org>
date Sun, 26 May 2013 15:14:55 +0200
parents 9d84d115161f
children 76e739795792
files src/regexp_nfa.c src/testdir/test95.in src/testdir/test95.ok src/version.c
diffstat 4 files changed, 25 insertions(+), 5 deletions(-) [+]
line wrap: on
line diff
--- a/src/regexp_nfa.c
+++ b/src/regexp_nfa.c
@@ -3294,7 +3294,7 @@ nfa_regmatch(start, submatch, m)
 		     * (no preceding character). */
 		    len += mb_char2len(mc);
 		}
-		if (ireg_icombine)
+		if (ireg_icombine && len == 0)
 		{
 		    /* If \Z was present, then ignore composing characters.
 		     * When ignoring the base character this always matches. */
--- a/src/testdir/test95.in
+++ b/src/testdir/test95.in
@@ -62,10 +62,12 @@ STARTTEST
 :call add(tl, [2, "ק\u200d\u05b9x\\Z", "xק\u200dxy", "ק\u200dx"])
 :call add(tl, [2, "ק\u200dx\\Z", "xק\u200d\u05b9xy", "ק\u200d\u05b9x"])
 :call add(tl, [2, "ק\u200dx\\Z", "xק\u200dxy", "ק\u200dx"])
-:"call add(tl, [2, "\u05b9\\Z", "xyz"])
-:"call add(tl, [2, "\\Z\u05b9", "xyz"])
-:"call add(tl, [2, "\u05b9\\+\\Z", "xyz", "xyz"])
-:"call add(tl, [2, "\\Z\u05b9\\+", "xyz", "xyz"])
+:call add(tl, [2, "\u05b9\\Z", "xyz"])
+:call add(tl, [2, "\\Z\u05b9", "xyz"])
+:call add(tl, [2, "\u05b9\\Z", "xy\u05b9z", "y\u05b9"])
+:call add(tl, [2, "\\Z\u05b9", "xy\u05b9z", "y\u05b9"])
+:call add(tl, [1, "\u05b9\\+\\Z", "xy\u05b9z\u05b9 ", "y\u05b9z\u05b9"])
+:call add(tl, [1, "\\Z\u05b9\\+", "xy\u05b9z\u05b9 ", "y\u05b9z\u05b9"])
 
 :"""" Combining different tests and features
 :call add(tl, [2, '[^[=a=]]\+', 'ddaãâbcd', 'dd'])
--- a/src/testdir/test95.ok
+++ b/src/testdir/test95.ok
@@ -94,6 +94,22 @@ OK 2 - ק‍x\Z
 OK 0 - ק‍x\Z
 OK 1 - ק‍x\Z
 OK 2 - ק‍x\Z
+OK 0 - ֹ\Z
+OK 1 - ֹ\Z
+OK 2 - ֹ\Z
+OK 0 - \Zֹ
+OK 1 - \Zֹ
+OK 2 - \Zֹ
+OK 0 - ֹ\Z
+OK 1 - ֹ\Z
+OK 2 - ֹ\Z
+OK 0 - \Zֹ
+OK 1 - \Zֹ
+OK 2 - \Zֹ
+OK 0 - ֹ\+\Z
+OK 2 - ֹ\+\Z
+OK 0 - \Zֹ\+
+OK 2 - \Zֹ\+
 OK 0 - [^[=a=]]\+
 OK 1 - [^[=a=]]\+
 OK 2 - [^[=a=]]\+
--- a/src/version.c
+++ b/src/version.c
@@ -729,6 +729,8 @@ static char *(features[]) =
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    1023,
+/**/
     1022,
 /**/
     1021,