diff options
author | Bram Moolenaar <Bram@vim.org> | 2016-01-17 14:59:01 +0100 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2016-01-17 14:59:01 +0100 |
commit | 4119cf80e1e534057680f9543e73edf7967c2440 (patch) | |
tree | c52cd076d2c07949bc5d773f88fc53c9daf056ba | |
parent | 2db5c3b3ceeaded7fb5a64dc5cb22b0cb95b78a1 (diff) | |
download | vim-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.c | 4 | ||||
-rw-r--r-- | src/testdir/test_viml.vim | 16 | ||||
-rw-r--r-- | src/version.c | 2 |
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, |