changeset 7627:d9ec7d22494d v7.4.1113

commit https://github.com/vim/vim/commit/4119cf80e1e534057680f9543e73edf7967c2440 Author: Bram Moolenaar <Bram@vim.org> Date: Sun Jan 17 14:59:01 2016 +0100 patch 7.4.1113 Problem: Using {ns} in variable name does not work. (lilydjwg) Solution: Fix recognizing colon. Add a test.
author Christian Brabandt <cb@256bit.org>
date Sun, 17 Jan 2016 15:00:05 +0100
parents 5d57c7117629
children d74db83fa956
files src/eval.c src/testdir/test_viml.vim src/version.c
diffstat 3 files changed, 19 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/src/eval.c
+++ b/src/eval.c
@@ -20844,10 +20844,10 @@ find_name_end(arg, expr_start, expr_end,
 	else if (br_nest == 0 && mb_nest == 0 && *p == ':')
 	{
 	    /* "s:" is start of "s:var", but "n:" is not and can be used in
-	     * slice "[n:]".  Also "xx:" is not a namespace. */
+	     * slice "[n:]".  Also "xx:" is not a namespace. But {ns}: is. */
 	    len = (int)(p - arg);
 	    if ((len == 1 && vim_strchr(NAMESPACE_CHAR, *arg) == NULL)
-		    || len > 1)
+		    || (len > 1 && p[-1] != '}'))
 		break;
 	}
 
--- a/src/testdir/test_viml.vim
+++ b/src/testdir/test_viml.vim
@@ -1,5 +1,5 @@
 " Test various aspects of the Vim language.
-" This was formerly in test49.
+" Most of this was formerly in test49.
 
 "-------------------------------------------------------------------------------
 " Test environment							    {{{1
@@ -906,6 +906,20 @@ func Test_if_bar_fail()
     call assert_equal('acdfh-acfh', g:test15_result)
 endfunc
 
+"-------------------------------------------------------------------------------
+" Test 90:  Recognizing {} in variable name.			    {{{1
+"-------------------------------------------------------------------------------
+
+func Test_curlies()
+    let s:var = 66
+    let ns = 's'
+    call assert_equal(66, {ns}:var)
+
+    let g:a = {}
+    let g:b = 't'
+    let g:a[g:b] = 77
+    call assert_equal(77, g:a['t'])
+endfunc
 
 "-------------------------------------------------------------------------------
 " Modelines								    {{{1
--- a/src/version.c
+++ b/src/version.c
@@ -742,6 +742,8 @@ static char *(features[]) =
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    1113,
+/**/
     1112,
 /**/
     1111,