Wait for filtering completion

This commit is contained in:
hrsh7th
2022-01-25 16:27:21 +09:00
parent 57101a2e26
commit d93104244c
2 changed files with 12 additions and 16 deletions

View File

@@ -175,7 +175,9 @@ cmp.confirm = function(option, callback)
return true
end
cmp.core.filter.raw(cmp.core)
vim.wait(1000, function()
return not cmp.core.filter.running
end)
local e = cmp.core.view:get_selected_entry() or (option.select and cmp.core.view:get_first_entry() or nil)
if e then
cmp.core:confirm(e, {

View File

@@ -1,9 +1,9 @@
local async = {}
---@class cmp.AsyncThrottle
---@field public running boolean
---@field public timeout number
---@field public stop function
---@field public raw function
---@field public __call function
---@param fn function
@@ -18,10 +18,7 @@ async.throttle = function(fn, timeout)
stop = function()
time = nil
timer:stop()
end,
raw = function(...)
fn(...)
end,
end
}, {
__call = function(self, ...)
local args = { ... }
@@ -29,18 +26,15 @@ async.throttle = function(fn, timeout)
if time == nil then
time = vim.loop.now()
end
timer:stop()
local delta = math.max(1, self.timeout - (vim.loop.now() - time))
timer:start(delta, 0, function()
if not self.running then
self.running = true
timer:stop()
timer:start(math.max(1, self.timeout - (vim.loop.now() - time)), 0, function()
vim.schedule(function()
time = nil
self.running = true
vim.schedule(function()
self.running = false
fn(unpack(args))
end)
end
self.running = false
fn(unpack(args))
end)
end)
end,
})