aboutsummaryrefslogtreecommitdiffstats
path: root/lua/mason-core/functional/init.lua
diff options
context:
space:
mode:
authorWilliam Boman <william@redwill.se>2023-04-03 00:33:48 +0200
committerGitHub <noreply@github.com>2023-04-02 22:33:48 +0000
commit0114336145771ff7c528debba52c5ff21bf6f7a2 (patch)
tree37802cb27b602c9c3e900aec7f3ad012ed3b8719 /lua/mason-core/functional/init.lua
parentchore: consolidate generate task (#1171) (diff)
downloadmason-0114336145771ff7c528debba52c5ff21bf6f7a2.tar
mason-0114336145771ff7c528debba52c5ff21bf6f7a2.tar.gz
mason-0114336145771ff7c528debba52c5ff21bf6f7a2.tar.bz2
mason-0114336145771ff7c528debba52c5ff21bf6f7a2.tar.lz
mason-0114336145771ff7c528debba52c5ff21bf6f7a2.tar.xz
mason-0114336145771ff7c528debba52c5ff21bf6f7a2.tar.zst
mason-0114336145771ff7c528debba52c5ff21bf6f7a2.zip
refactor: only schedule in a.scheduler() when in fast event (#1170)
Explicitly schedule via `a.wait(vim.schedule)` instead.
Diffstat (limited to 'lua/mason-core/functional/init.lua')
-rw-r--r--lua/mason-core/functional/init.lua21
1 files changed, 21 insertions, 0 deletions
diff --git a/lua/mason-core/functional/init.lua b/lua/mason-core/functional/init.lua
index 5e0ac680..353c5cc1 100644
--- a/lua/mason-core/functional/init.lua
+++ b/lua/mason-core/functional/init.lua
@@ -153,4 +153,25 @@ _.lazy_when = function(condition, value)
return condition and value() or nil
end
+---@param fn fun()
+_.scheduler = function(fn)
+ if vim.in_fast_event() then
+ vim.schedule(fn)
+ else
+ fn()
+ end
+end
+
+---@generic T : fun(...)
+---@param fn T
+---@return T
+_.scheduler_wrap = function(fn)
+ return function(...)
+ local args = _.table_pack(...)
+ _.scheduler(function()
+ fn(unpack(args, 1, args.n + 1))
+ end)
+ end
+end
+
return _