summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2016-01-17 14:59:01 +0100
committerBram Moolenaar <Bram@vim.org>2016-01-17 14:59:01 +0100
commit4119cf80e1e534057680f9543e73edf7967c2440 (patch)
treec52cd076d2c07949bc5d773f88fc53c9daf056ba
parent2db5c3b3ceeaded7fb5a64dc5cb22b0cb95b78a1 (diff)
downloadvim-git-4119cf80e1e534057680f9543e73edf7967c2440.tar.gz
patch 7.4.1113v7.4.1113
Problem: Using {ns} in variable name does not work. (lilydjwg) Solution: Fix recognizing colon. Add a test.
-rw-r--r--src/eval.c4
-rw-r--r--src/testdir/test_viml.vim16
-rw-r--r--src/version.c2
3 files changed, 19 insertions, 3 deletions
diff --git a/src/eval.c b/src/eval.c
index c61b64dd6..fb2cbe79e 100644
--- a/src/eval.c
+++ b/src/eval.c
@@ -20844,10 +20844,10 @@ find_name_end(arg, expr_start, expr_end, flags)
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;
}
diff --git a/src/testdir/test_viml.vim b/src/testdir/test_viml.vim
index 5d65953a9..07286fb02 100644
--- 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
diff --git a/src/version.c b/src/version.c
index 4cce40b91..8d9fda815 100644
--- 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,