From 898f01dee1bf50b0a219807ae2b28f2c5c5aece7 Mon Sep 17 00:00:00 2001 From: Florian Walch Date: Wed, 24 Dec 2014 14:35:56 +0100 Subject: vim-patch:7.4.549 Problem: Function name not recognized correctly when inside a function. Solution: Don't check for an alpha character. https://code.google.com/p/vim/source/detail?r=v7-4-549 --- src/nvim/eval.c | 13 ++++++------- src/nvim/version.c | 2 +- 2 files changed, 7 insertions(+), 8 deletions(-) diff --git a/src/nvim/eval.c b/src/nvim/eval.c index 116944b28d..69f2f38a1a 100644 --- a/src/nvim/eval.c +++ b/src/nvim/eval.c @@ -17580,15 +17580,14 @@ void ex_function(exarg_T *eap) /* Check for defining a function inside this function. */ if (checkforcmd(&p, "function", 2)) { - if (*p == '!') + if (*p == '!') { p = skipwhite(p + 1); + } p += eval_fname_script(p); - if (ASCII_ISALPHA(*p)) { - free(trans_function_name(&p, TRUE, 0, NULL)); - if (*skipwhite(p) == '(') { - ++nesting; - indent += 2; - } + free(trans_function_name(&p, TRUE, 0, NULL)); + if (*skipwhite(p) == '(') { + nesting++; + indent += 2; } } diff --git a/src/nvim/version.c b/src/nvim/version.c index 8a0ab1c7e3..454afcb55d 100644 --- a/src/nvim/version.c +++ b/src/nvim/version.c @@ -189,7 +189,7 @@ static int included_patches[] = { //552, //551, //550, - //549, + 549, //548 NA 547, //546, -- cgit From 183b4b60b68d147b5b392114d9ed582d0f490f9f Mon Sep 17 00:00:00 2001 From: Florian Walch Date: Sat, 27 Dec 2014 11:38:48 +0100 Subject: vim-patch:750a698 Add new files for 7.4.549. https://code.google.com/p/vim/source/detail?r=750a6986aa86a2bb3346631a353913b899d86748 --- test/functional/legacy/nested_function_spec.lua | 50 +++++++++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 test/functional/legacy/nested_function_spec.lua diff --git a/test/functional/legacy/nested_function_spec.lua b/test/functional/legacy/nested_function_spec.lua new file mode 100644 index 0000000000..87371c8294 --- /dev/null +++ b/test/functional/legacy/nested_function_spec.lua @@ -0,0 +1,50 @@ +-- Tests for nested function. + +local helpers = require('test.functional.helpers') +local clear, feed, insert = helpers.clear, helpers.feed, helpers.insert +local execute, expect, source = helpers.execute, helpers.expect, helpers.source + +describe('test_nested_function', function() + setup(clear) + + it('is working', function() + insert([[ + result:]]) + + source([[ + :fu! NestedFunc() + : fu! Func1() + : $put ='Func1' + : endfunction + : call Func1() + : fu! s:func2() + : $put ='s:func2' + : endfunction + : call s:func2() + : fu! s:_func3() + : $put ='s:_func3' + : endfunction + : call s:_func3() + : let fn = 'Func4' + : fu! {fn}() + : $put ='Func4' + : endfunction + : call {fn}() + : let fn = 'func5' + : fu! s:{fn}() + : $put ='s:func5' + : endfunction + : call s:{fn}() + :endfunction]]) + execute('call NestedFunc()') + + -- Assert buffer contents. + expect([[ + result: + Func1 + s:func2 + s:_func3 + Func4 + s:func5]]) + end) +end) -- cgit