Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 17 additions & 1 deletion lua/cmp_buffer/source.lua
Original file line number Diff line number Diff line change
Expand Up @@ -87,7 +87,8 @@ end
---@return cmp_buffer.Buffer[]
source._get_buffers = function(self, opts)
local buffers = {}
for _, bufnr in ipairs(opts.get_bufnrs()) do
local bufnrs = opts.get_bufnrs()
for _, bufnr in ipairs(bufnrs) do
if not self.buffers[bufnr] then
local new_buf = buffer.new(bufnr, opts)
new_buf.on_close_cb = function()
Expand All @@ -100,6 +101,21 @@ source._get_buffers = function(self, opts)
table.insert(buffers, self.buffers[bufnr])
end

-- close buffers not returned by get_bufnrs
for bufnr, buf in pairs(self.buffers) do
local match_found = false
for _, bufnr2 in ipairs(bufnrs) do
if bufnr == bufnr2 then
match_found = true
break
end
end
if not match_found then
-- this will remove from self.buffers through on_close_cb callback
buf.close()
end
end

return buffers
end

Expand Down