diff --git a/lua/cmp/core.lua b/lua/cmp/core.lua index 0132cef..a29526d 100644 --- a/lua/cmp/core.lua +++ b/lua/cmp/core.lua @@ -165,7 +165,7 @@ core.on_change = function(self, trigger_event) if vim.tbl_contains(config.get().completion.autocomplete or {}, trigger_event) then self:complete(ctx) else - self.filter.timeout = THROTTLE_TIME + self.filter.timeout = self.view:visible() and THROTTLE_TIME or 0 self:filter() end else @@ -254,7 +254,7 @@ core.complete = function(self, ctx) end if not self.view:get_active_entry() then - self.filter.timeout = THROTTLE_TIME + self.filter.timeout = self.view:visible() and THROTTLE_TIME or 0 self:filter() end end @@ -262,7 +262,7 @@ end ---Update completion menu core.filter = async.throttle( vim.schedule_wrap(function(self) - self.filter.timeout = THROTTLE_TIME + self.filter.timeout = self.view:visible() and THROTTLE_TIME or 0 local ignore = false ignore = ignore or not api.is_suitable_mode() diff --git a/lua/cmp/view.lua b/lua/cmp/view.lua index 454e2ea..c3a58e5 100644 --- a/lua/cmp/view.lua +++ b/lua/cmp/view.lua @@ -111,15 +111,17 @@ view.open = function(self, ctx, sources) -- complete_done. if #entries == 0 then - self.event:emit('complete_done', { - entry = self:_get_entries_view():get_selected_entry(), - }) self:close() end end ---Close menu view.close = function(self) + if self:visible() then + self.event:emit('complete_done', { + entry = self:_get_entries_view():get_selected_entry(), + }) + end self:_get_entries_view():close() self.docs_view:close() self.ghost_text_view:hide() @@ -177,10 +179,10 @@ end ---Return current configured entries_view ---@return cmp.CustomEntriesView|cmp.NativeEntriesView view._get_entries_view = function(self) - local c = config.get() self.native_entries_view.event:clear() self.custom_entries_view.event:clear() + local c = config.get() if c.experimental.native_menu then self.native_entries_view.event:on('change', function() self:on_entry_change()