diff --git a/lua/cmp/core.lua b/lua/cmp/core.lua index db59028..fb7cefe 100644 --- a/lua/cmp/core.lua +++ b/lua/cmp/core.lua @@ -63,11 +63,10 @@ core.ghost_text = function(e) ctx.cursor.row - 1, ctx.cursor.col - 1, { - right_gravity = true, virt_text = { { text, 'Comment' } }, virt_text_pos = 'overlay', virt_text_win_col = ctx.cursor.col - 1, - hl_mode = 'blend', + hl_mode = 'combine', priority = 0, ephemeral = true, } @@ -81,6 +80,7 @@ core.sources = {} ---@type cmp.Context core.context = context.new() + ---Register source ---@param s cmp.Source core.register_source = function(s) diff --git a/lua/cmp/menu.lua b/lua/cmp/menu.lua index 1e7e7e5..70a5036 100644 --- a/lua/cmp/menu.lua +++ b/lua/cmp/menu.lua @@ -16,7 +16,6 @@ local check = require('cmp.utils.check') ---@field public on_select fun(e: cmp.Entry) ---@field public items vim.CompletedItem[] ---@field public entries cmp.Entry[] ----@field public entry_map table ---@field public selected_entry cmp.Entry|nil ---@field public context cmp.Context ---@field public resolve_dedup fun(callback: function) @@ -59,7 +58,6 @@ menu.reset = function(self) self.offset = nil self.items = {} self.entries = {} - self.entry_map = {} self.context = nil self.preselect = 0 self:close() @@ -71,7 +69,6 @@ end ---@return cmp.Menu menu.update = check.wrap(function(self, ctx, sources) local entries = {} - local entry_map = {} -- check the source triggered by character local has_triggered_by_symbol_source = false @@ -95,7 +92,6 @@ menu.update = check.wrap(function(self, ctx, sources) for _, e in ipairs(s:get_entries(ctx)) do e.score = e.score + priority table.insert(entries, e) - entry_map[e.id] = e offset = math.min(offset, e:get_offset()) end end @@ -114,25 +110,18 @@ menu.update = check.wrap(function(self, ctx, sources) -- create vim items. local items = {} - local abbrs = {} local preselect = 0 - for _, e in ipairs(entries) do - local item = e:get_vim_item(offset) - if not abbrs[item.abbr] or item.dup == 1 then - table.insert(items, item) - abbrs[item.abbr] = true - - if preselect == 0 and e.completion_item.preselect and config.get().preselect ~= types.cmp.PreselectMode.None then - preselect = #items - end + for i, e in ipairs(entries) do + if preselect == 0 and e.completion_item.preselect and config.get().preselect ~= types.cmp.PreselectMode.None then + preselect = i end + table.insert(items, e:get_vim_item(offset)) end -- save recent pum state. self.offset = offset self.items = items self.entries = entries - self.entry_map = entry_map self.preselect = preselect self.context = ctx self:show()