aboutsummaryrefslogtreecommitdiff
path: root/src/nvim/lua/executor.c
diff options
context:
space:
mode:
authorbfredl <bjorn.linse@gmail.com>2026-05-17 16:25:22 +0200
committerGitHub <noreply@github.com>2026-05-17 10:25:22 -0400
commit0aa7d2f4d546647e0d6b5c338bd5517675e9842c (patch)
tree693961bd8cc2a88b6f96dd988cde4faf7e7e27c9 /src/nvim/lua/executor.c
parente572c9c80a6ec6d4eb25410e8aab9b7b2d33d1c1 (diff)
downloadrneovim-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.c7
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;
}