diff options
| author | bfredl <bjorn.linse@gmail.com> | 2026-05-17 16:25:22 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2026-05-17 10:25:22 -0400 |
| commit | 0aa7d2f4d546647e0d6b5c338bd5517675e9842c (patch) | |
| tree | 693961bd8cc2a88b6f96dd988cde4faf7e7e27c9 /src/nvim/lua/executor.c | |
| parent | e572c9c80a6ec6d4eb25410e8aab9b7b2d33d1c1 (diff) | |
| download | rneovim-0aa7d2f4d546647e0d6b5c338bd5517675e9842c.tar.gz rneovim-0aa7d2f4d546647e0d6b5c338bd5517675e9842c.tar.bz2 rneovim-0aa7d2f4d546647e0d6b5c338bd5517675e9842c.zip | |
feat(api): nvim_buf_call, win_call can has multiple return values #39801
from the "because we can and it is not much code" department. (diffcount
excluding tests is actually negative)
fixes https://github.com/neovim/neovim/issues/39636#issuecomment-4397141270
Diffstat (limited to 'src/nvim/lua/executor.c')
| -rw-r--r-- | src/nvim/lua/executor.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/src/nvim/lua/executor.c b/src/nvim/lua/executor.c index c2b1887d60..b785ed0c64 100644 --- a/src/nvim/lua/executor.c +++ b/src/nvim/lua/executor.c @@ -1801,7 +1801,7 @@ Object nlua_call_ref(LuaRef ref, const char *name, Array args, LuaRetMode mode, static int mode_ret(LuaRetMode mode) { - return mode == kRetMulti ? LUA_MULTRET : 1; + return (mode == kRetMulti || mode == kRetMultiStack) ? LUA_MULTRET : 1; } /// Like nlua_call_ref, but with an option to run in fast (api-fast) context. @@ -1844,7 +1844,7 @@ Object nlua_call_ref_ctx(bool fast, LuaRef ref, const char *name, Array args, Lu static Object nlua_call_pop_retval(lua_State *lstate, LuaRetMode mode, Arena *arena, int pretop, Error *err) { - if (mode != kRetMulti && lua_isnil(lstate, -1)) { + if (mode != kRetMulti && mode != kRetMultiStack && lua_isnil(lstate, -1)) { lua_pop(lstate, 1); return NIL; } @@ -1878,6 +1878,9 @@ static Object nlua_call_pop_retval(lua_State *lstate, LuaRetMode mode, Arena *ar } res.size = (size_t)nres; return ARRAY_OBJ(res); + case kRetMultiStack: + ; + return NIL; } UNREACHABLE; } |