Add complete_done event and improved the recently_used sorter.

Fix #708
This commit is contained in:
hrsh7th
2022-01-08 13:38:55 +09:00
parent a4f83fd839
commit 3f7b7b258a
4 changed files with 21 additions and 4 deletions

View File

@@ -209,6 +209,7 @@ NOTE: You can call these functions in mapping via `<Cmd>lua require('cmp').compl
*cmp.event:on* ('%EVENT_NAME%, callback)
Subscribe nvim-cmp's events below.
- `complete_done`: emit after current completion is done.
- `confirm_done`: emit after confirmation is done.

View File

@@ -34,6 +34,9 @@ core.new = function()
self.view.event:on('keymap', function(...)
self:on_keymap(...)
end)
self.view.event:on('complete_done', function(evt)
self.event:emit('complete_done', evt)
end)
return self
end
@@ -425,7 +428,9 @@ core.confirm = function(self, e, option, callback)
feedkeys.call('', 'n', function()
e:execute(vim.schedule_wrap(function()
release()
self.event:emit('confirm_done', e)
self.event:emit('confirm_done', {
entry = e
})
if callback then
callback()
end

View File

@@ -308,8 +308,16 @@ autocmd.subscribe('CursorMoved', function()
end
end)
cmp.event:on('confirm_done', function(e)
cmp.config.compare.recently_used:add_entry(e)
cmp.event:on('complete_done', function(evt)
if evt.entry then
cmp.config.compare.recently_used:add_entry(evt.entry)
end
end)
cmp.event:on('confirm_done', function(evt)
if evt.entry then
cmp.config.compare.recently_used:add_entry(evt.entry)
end
end)
return cmp

View File

@@ -109,8 +109,11 @@ view.open = function(self, ctx, sources)
end
end
-- close.
-- complete_done.
if #entries == 0 then
self.event:emit('complete_done', {
entry = self:_get_entries_view():get_selected_entry()
})
self:close()
end
end