feat: cmp async (#1583)
This commit is contained in:
@@ -56,6 +56,7 @@ end
|
||||
---@param option? cmp.ContextOption
|
||||
---@return cmp.Context
|
||||
core.get_context = function(self, option)
|
||||
self.context:abort()
|
||||
local prev = self.context:clone()
|
||||
prev.prev_context = nil
|
||||
prev.cache = nil
|
||||
@@ -296,7 +297,7 @@ core.complete = function(self, ctx)
|
||||
end
|
||||
|
||||
---Update completion menu
|
||||
core.filter = async.throttle(function(self)
|
||||
local async_filter = async.wrap(function(self)
|
||||
self.filter.timeout = config.get().performance.throttle
|
||||
|
||||
-- Check invalid condition.
|
||||
@@ -323,20 +324,17 @@ core.filter = async.throttle(function(self)
|
||||
local ctx = self:get_context()
|
||||
|
||||
-- Display completion results.
|
||||
self.view:open(ctx, sources)
|
||||
local did_open = self.view:open(ctx, sources)
|
||||
local fetching = #self:get_sources(function(s)
|
||||
return s.status == source.SourceStatus.FETCHING
|
||||
end)
|
||||
|
||||
-- Check onetime config.
|
||||
if #self:get_sources(function(s)
|
||||
if s.status == source.SourceStatus.FETCHING then
|
||||
return true
|
||||
elseif #s:get_entries(ctx) > 0 then
|
||||
return true
|
||||
end
|
||||
return false
|
||||
end) == 0 then
|
||||
if not did_open and fetching == 0 then
|
||||
config.set_onetime({})
|
||||
end
|
||||
end, config.get().performance.throttle)
|
||||
end)
|
||||
core.filter = async.throttle(async_filter, config.get().performance.throttle)
|
||||
|
||||
---Confirm completion.
|
||||
---@param e cmp.Entry
|
||||
|
||||
Reference in New Issue
Block a user