diff --git a/lua/plenary/async/fn.lua b/lua/plenary/async/fn.lua new file mode 100644 index 00000000..68573a30 --- /dev/null +++ b/lua/plenary/async/fn.lua @@ -0,0 +1,15 @@ +local util = require "plenary.async.util" + +return setmetatable({}, { + __index = function(_, k) + return function(...) + -- if we are in a fast event await the scheduler + if vim.in_fast_event() then + util.scheduler() + end + + return vim.fn[k](...) + end + end, +}) + diff --git a/lua/plenary/async/init.lua b/lua/plenary/async/init.lua index f8222fc6..9bba6063 100644 --- a/lua/plenary/async/init.lua +++ b/lua/plenary/async/init.lua @@ -8,6 +8,7 @@ local lookups = { util = "plenary.async.util", lsp = "plenary.async.lsp", api = "plenary.async.api", + fn = "plenary.async.fn", tests = "plenary.async.tests", control = "plenary.async.control", }