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

patch 8.2.2578: Lua cannot handle a passed in lambda

Problem:    Lua cannot handle a passed in lambda.
Solution:   Handle VAR_PARTIAL. (Prabir Shrestha, closes #7937, closes #7936)
This commit is contained in:
Bram Moolenaar
2021-03-08 19:50:24 +01:00
parent 9355ae4149
commit 86c3a2162c
3 changed files with 16 additions and 0 deletions

View File

@@ -568,6 +568,11 @@ luaV_pushtypval(lua_State *L, typval_T *tv)
case VAR_FUNC:
luaV_pushfuncref(L, tv->vval.v_string);
break;
case VAR_PARTIAL:
// TODO: handle partial arguments
luaV_pushfuncref(L, partial_name(tv->vval.v_partial));
break;
case VAR_BLOB:
luaV_pushblob(L, tv->vval.v_blob);
break;

View File

@@ -121,6 +121,15 @@ func Test_lua_eval()
lua v = nil
endfunc
" Test luaeval() with lambda
func Test_luaeval_with_lambda()
lua function hello_luaeval_lambda(a, cb) return a .. cb() end
call assert_equal('helloworld',
\ luaeval('hello_luaeval_lambda(_A[1], _A[2])',
\ ['hello', {->'world'}]))
lua hello_luaeval_lambda = nil
endfunc
" Test vim.window()
func Test_lua_window()
e Xfoo2

View File

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