From 15b611b322fb25d4558a2e79d1ad44e874d8d166 Mon Sep 17 00:00:00 2001 From: Patrick Eibl Date: Tue, 26 Jul 2022 23:18:06 -0400 Subject: [PATCH] close buffers not included in opts.get_bufnrs() --- lua/cmp_buffer/source.lua | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/lua/cmp_buffer/source.lua b/lua/cmp_buffer/source.lua index 9be673c..1005263 100644 --- a/lua/cmp_buffer/source.lua +++ b/lua/cmp_buffer/source.lua @@ -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() @@ -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