0
0
mirror of https://github.com/vim/vim.git synced 2025-09-23 03:43:49 -04:00

updated for version 7.4.268

Problem:    Using exists() on a funcref for a script-local function does not
            work.
Solution:   Translate <SNR> to the special byte sequence.  Add a test.
This commit is contained in:
Bram Moolenaar
2014-04-29 14:03:02 +02:00
parent d69bd9af3c
commit 355a95a079
6 changed files with 24 additions and 0 deletions

View File

@@ -88,6 +88,7 @@ SRC_ALL = \
src/testdir/test60.vim \
src/testdir/test83-tags? \
src/testdir/test77a.com \
src/testdir/test_*.vim \
src/testdir/python2/*.py \
src/testdir/python3/*.py \
src/testdir/pythonx/*.py \

View File

@@ -22275,6 +22275,14 @@ trans_function_name(pp, skip, flags, fdp)
{
name = vim_strsave(name);
*pp = end;
if (STRNCMP(name, "<SNR>", 5) == 0)
{
/* Change "<SNR>" to the byte sequence. */
name[0] = K_SPECIAL;
name[1] = KS_EXTRA;
name[2] = (int)KE_SNR;
mch_memmove(name + 3, name + 5, STRLEN(name + 5) + 1);
}
goto theend;
}

View File

@@ -180,6 +180,9 @@ endfun
:echo g:Foo(2)
:echo Foo(3)
:"
:" script-local function used in Funcref must exist.
:so test_eval_func.vim
:"
:/^start:/+1,$wq! test.out
:" vim: et ts=4 isk-=\: fmr=???,???
:call getchar()

Binary file not shown.

View File

@@ -0,0 +1,10 @@
" Vim script used in test_eval.in. Needed for script-local function.
func! s:Testje()
return "foo"
endfunc
let Bar = function('s:Testje')
$put ='s:Testje exists: ' . exists('s:Testje')
$put ='func s:Testje exists: ' . exists('*s:Testje')
$put ='Bar exists: ' . exists('Bar')
$put ='func Bar exists: ' . exists('*Bar')

View File

@@ -734,6 +734,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
268,
/**/
267,
/**/