diff options
author | Bram Moolenaar <Bram@vim.org> | 2021-03-08 19:50:24 +0100 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2021-03-08 19:50:24 +0100 |
commit | 86c3a2162c2e78b4f0b87b47779cc1452990ee1b (patch) | |
tree | 81b19a2455734ecc2dcabcee2ae55e313efaa4a7 | |
parent | 9355ae41497cbcce58ddd79f9125eb3e9dfe0a43 (diff) | |
download | vim-git-8.2.2578.tar.gz |
patch 8.2.2578: Lua cannot handle a passed in lambdav8.2.2578
Problem: Lua cannot handle a passed in lambda.
Solution: Handle VAR_PARTIAL. (Prabir Shrestha, closes #7937, closes #7936)
-rw-r--r-- | src/if_lua.c | 5 | ||||
-rw-r--r-- | src/testdir/test_lua.vim | 9 | ||||
-rw-r--r-- | src/version.c | 2 |
3 files changed, 16 insertions, 0 deletions
diff --git a/src/if_lua.c b/src/if_lua.c index e20298311..abcd850b3 100644 --- a/src/if_lua.c +++ b/src/if_lua.c @@ -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; diff --git a/src/testdir/test_lua.vim b/src/testdir/test_lua.vim index 43b4aa30f..7de457453 100644 --- a/src/testdir/test_lua.vim +++ b/src/testdir/test_lua.vim @@ -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 diff --git a/src/version.c b/src/version.c index f7c2171de..6c9617596 100644 --- a/src/version.c +++ b/src/version.c @@ -751,6 +751,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 2578, +/**/ 2577, /**/ 2576, |