diff --git a/lua/dressing/input.lua b/lua/dressing/input.lua index f4aea97..03bcae0 100644 --- a/lua/dressing/input.lua +++ b/lua/dressing/input.lua @@ -273,7 +273,7 @@ end setmetatable(M, { -- use schedule_wrap to avoid a bug when vim opens -- (see https://github.com/stevearc/dressing.nvim/issues/15) - __call = vim.schedule_wrap(function(_, opts, on_confirm) + __call = util.schedule_wrap_before_vimenter(function(_, opts, on_confirm) vim.validate({ on_confirm = { on_confirm, "function", false }, }) diff --git a/lua/dressing/select/init.lua b/lua/dressing/select/init.lua index 14ce650..aab362f 100644 --- a/lua/dressing/select/init.lua +++ b/lua/dressing/select/init.lua @@ -1,5 +1,6 @@ local global_config = require("dressing.config") local patch = require("dressing.patch") +local util = require("dressing.util") local function get_backend(config) local backends = config.backend @@ -17,7 +18,7 @@ end -- use schedule_wrap to avoid a bug when vim opens -- (see https://github.com/stevearc/dressing.nvim/issues/15) -return vim.schedule_wrap(function(items, opts, on_choice) +return util.schedule_wrap_before_vimenter(function(items, opts, on_choice) vim.validate({ items = { items, diff --git a/lua/dressing/util.lua b/lua/dressing/util.lua index 39c8253..bbe4351 100644 --- a/lua/dressing/util.lua +++ b/lua/dressing/util.lua @@ -164,4 +164,14 @@ M._on_win_closed = function(winid) winid_map[winid] = nil end +M.schedule_wrap_before_vimenter = function(func) + return function(...) + if vim.v.vim_did_enter == 0 then + return vim.schedule_wrap(func)(...) + else + return func(...) + end + end +end + return M