From 0186851869dd90ac9d846a45efaa9a1fcae64079 Mon Sep 17 00:00:00 2001 From: robin Date: Sun, 4 Jan 2026 18:06:04 +0100 Subject: [PATCH] feat: use `artio.schedule(f)` api fn --- lua/artio/builtins.lua | 13 +------------ lua/artio/init.lua | 26 +++++++++++++++++++++++--- 2 files changed, 24 insertions(+), 15 deletions(-) diff --git a/lua/artio/builtins.lua b/lua/artio/builtins.lua index cc89be4..51c87b7 100644 --- a/lua/artio/builtins.lua +++ b/lua/artio/builtins.lua @@ -28,18 +28,7 @@ builtins.builtins = function(props) return end - local Picker = require("artio.picker") - local current = Picker.active_picker - if not current or not current.closed then - return - end - - vim.schedule(function() - vim.defer_fn(builtins[fname], 10) - vim.wait(1000, function() - return coroutine.status(current.co) == "dead" - end) - end) + artio.schedule(builtins[fname]) end, }, props) ) diff --git a/lua/artio/init.lua b/lua/artio/init.lua index f7f7b8e..cd65c50 100644 --- a/lua/artio/init.lua +++ b/lua/artio/init.lua @@ -132,10 +132,14 @@ artio.select = function(items, opts, on_choice, start_opts) "force", { on_close = function(_, idx) - return on_choice(items[idx], idx) + artio.schedule(function() + on_choice(items[idx], idx) + end) end, on_quit = function() - return on_choice(nil, nil) + artio.schedule(function() + on_choice(nil, nil) + end) end, }, opts or {}, -- opts.prompt, opts.format_item @@ -160,6 +164,22 @@ artio.pick = function(...) return Picker:new(...):open() end +---@param f fun(): any +artio.schedule = function(f) + local Picker = require("artio.picker") + local current = Picker.active_picker + if not current or not current.closed then + return + end + + vim.schedule(function() + vim.defer_fn(f, 10) + vim.wait(1000, function() + return coroutine.status(current.co) == "dead" + end) + end) +end + ---@param fn artio.Picker.action ---@param scheduled_fn? artio.Picker.action artio.wrap = function(fn, scheduled_fn) @@ -180,7 +200,7 @@ artio.wrap = function(fn, scheduled_fn) if scheduled_fn == nil then return end - vim.schedule(function() + artio.schedule(function() pcall(scheduled_fn, current) end) end -- 2.51.2