aboutsummaryrefslogtreecommitdiff
path: root/runtime/lua/vim/_async.lua
diff options
context:
space:
mode:
authorEvgeni Chasnovski <evgeni.chasnovski@gmail.com>2025-07-29 16:00:03 +0300
committerEvgeni Chasnovski <evgeni.chasnovski@gmail.com>2025-08-02 15:00:41 +0300
commit1ee18b40611487e50abbec425d74d3af7de7897d (patch)
treefbf6c22960cb5a03cba96566b8f760e6db36e8e7 /runtime/lua/vim/_async.lua
parent1240d29f8fcf390bcd2cb2fd6e916c629364009a (diff)
downloadrneovim-1ee18b40611487e50abbec425d74d3af7de7897d.tar.gz
rneovim-1ee18b40611487e50abbec425d74d3af7de7897d.tar.bz2
rneovim-1ee18b40611487e50abbec425d74d3af7de7897d.zip
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.
Diffstat (limited to 'runtime/lua/vim/_async.lua')
-rw-r--r--runtime/lua/vim/_async.lua3
1 files changed, 2 insertions, 1 deletions
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)