diff src/eval.c @ 468:0a60be12e47e v7.0125

updated for version 7.0125
author vimboss
date Mon, 08 Aug 2005 22:06:28 +0000
parents 3b705e71c7b0
children a5fcf36ef512
line wrap: on
line diff
--- a/src/eval.c
+++ b/src/eval.c
@@ -15161,8 +15161,26 @@ find_name_end(arg, expr_start, expr_end,
 			|| *p == '{'
 			|| ((flags & FNE_INCL_BR) && (*p == '[' || *p == '.'))
 			|| mb_nest != 0
-			|| br_nest != 0); ++p)
-    {
+			|| br_nest != 0); mb_ptr_adv(p))
+    {
+	if (*p == '\'')
+	{
+	    /* skip over 'string' to avoid counting [ and ] inside it. */
+	    for (p = p + 1; *p != NUL && *p != '\''; mb_ptr_adv(p))
+		;
+	    if (*p == NUL)
+		break;
+	}
+	else if (*p == '"')
+	{
+	    /* skip over "str\"ing" to avoid counting [ and ] inside it. */
+	    for (p = p + 1; *p != NUL && *p != '"'; mb_ptr_adv(p))
+		if (*p == '\\' && p[1] != NUL)
+		    ++p;
+	    if (*p == NUL)
+		break;
+	}
+
 	if (mb_nest == 0)
 	{
 	    if (*p == '[')
@@ -15170,6 +15188,7 @@ find_name_end(arg, expr_start, expr_end,
 	    else if (*p == ']')
 		--br_nest;
 	}
+
 	if (br_nest == 0)
 	{
 	    if (*p == '{')