Hi Bram,

2015-11-25(Wed) 1:37:12 UTC+9 Bram Moolenaar:
> Hirohito Higashi wrote:
> 
> [...]
> 
> > I wrote a patch. (including test)
> > Please check this.
> 
> [...]
> 
> > diff -r 5fe47f21f158 src/testdir/test_eval.ok
> > Binary file src/testdir/test_eval.ok has changed
> 
> This part is missing.  Perhaps you can attach the file as it is after
> the patch.

Sorry. I update a patch.

--
Best regards,
Hirohito Higashi (a.k.a h_east)

-- 
-- 
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/d/optout.
diff --git a/src/eval.c b/src/eval.c
--- a/src/eval.c
+++ b/src/eval.c
@@ -115,6 +115,8 @@
 static char *e_float_as_string = N_("E806: using Float as a String");
 #endif
 
+#define NAMESPACE_CHAR	(char_u *)"abglstvw"
+
 static dictitem_T	globvars_var;		/* variable used for g: */
 #define globvarht globvardict.dv_hashtab
 
@@ -20347,10 +20349,20 @@
 {
     char_u	*p;
     int		len;
+    int		kcnt = 0;
 
     /* Find the end of the name. */
     for (p = *arg; eval_isnamec(*p); ++p)
-	;
+    {
+	if (*p == ':')
+	{
+	    len = (int)(p - *arg);
+
+	    if ((len == 1 && vim_strchr(NAMESPACE_CHAR, **arg) == NULL)
+		    || len > 1 || ++kcnt > 1)
+		break;
+	}
+    }
     if (p == *arg)	    /* no name found */
 	return 0;
 
@@ -20450,6 +20462,8 @@
     int		mb_nest = 0;
     int		br_nest = 0;
     char_u	*p;
+    int		len;
+    int		kcnt = 0;
 
     if (expr_start != NULL)
     {
@@ -20485,6 +20499,14 @@
 	    if (*p == NUL)
 		break;
 	}
+	else if (br_nest == 0 && mb_nest == 0 && *p == ':')
+	{
+	    len = (int)(p - arg);
+
+	    if ((len == 1 && vim_strchr(NAMESPACE_CHAR, *arg) == NULL)
+		    || len > 1 || ++kcnt > 1)
+		break;
+	}
 
 	if (mb_nest == 0)
 	{
diff --git a/src/testdir/test_eval.in b/src/testdir/test_eval.in
--- a/src/testdir/test_eval.in
+++ b/src/testdir/test_eval.in
@@ -218,6 +218,24 @@
 0:call setpos('.', sp)
 jyl:$put
 :"
+:" substring and variable name
+:let str = 'abcdef'
+:let n = 3
+:$put =str[n:]
+:$put =str[:n]
+:$put =str[n:n]
+:unlet n
+:let nn = 3
+:$put =str[nn:]
+:$put =str[:nn]
+:$put =str[nn:nn]
+:unlet nn
+:let b:nn = 4
+:$put =str[b:nn:]
+:$put =str[:b:nn]
+:$put =str[b:nn:b:nn]
+:unlet b:nn
+:"
 :/^start:/+1,$wq! test.out
 :" vim: et ts=4 isk-=\: fmr=???,???
 :call getchar()
diff --git a/src/testdir/test_eval.ok b/src/testdir/test_eval.ok
index cda425c92e30762a9c5949964be411a517884f0d..9ffa54157fabaf710b0af4f13d191292d206e785
GIT binary patch
literal 11279
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

Raspunde prin e-mail lui