From 1ee18b40611487e50abbec425d74d3af7de7897d Mon Sep 17 00:00:00 2001 From: Evgeni Chasnovski Date: Tue, 29 Jul 2025 16:00:03 +0300 Subject: fix(pack): use 'coxpcall.lua' on non-LuaJIT Problem: `attempt to yield across metamethod/C-call boundary` error when trying to use `vim.pack.add()`. Solution: use `pcall()` variant from 'coxpcall' on non-LuaJIT version of Lua. --- runtime/lua/vim/_async.lua | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'runtime/lua/vim/_async.lua') diff --git a/runtime/lua/vim/_async.lua b/runtime/lua/vim/_async.lua index 8abe206a51..47f37b675b 100644 --- a/runtime/lua/vim/_async.lua +++ b/runtime/lua/vim/_async.lua @@ -1,6 +1,7 @@ local M = {} local max_timeout = 30000 +local copcall = package.loaded.jit and pcall or require('coxpcall').pcall --- @param thread thread --- @param on_finish fun(err: string?, ...:any) @@ -21,7 +22,7 @@ local function resume(thread, on_finish, ...) --- @cast fn -string --- @type boolean, string? - local ok, err = pcall(fn, function(...) + local ok, err = copcall(fn, function(...) resume(thread, on_finish, ...) end) -- cgit