local M = {} local _cache = {} ---@param buffer integer function M:cache_buffer(buffer, value) _cache[buffer] = value end ---@param buffer integer function M:invalidate_buffer(buffer) _cache[buffer] = nil end ---@param buffer integer ---@return string[]|nil function M:get_cache(buffer) return _cache[buffer] end local _listening_buffers = {} ---@param buffer integer function M:register_listeners(buffer) if _listening_buffers[buffer] then return end _listening_buffers[buffer] = true vim.api.nvim_buf_attach(buffer, false, { on_lines = function() self:invalidate_buffer(buffer) end, on_detach = function() self:invalidate_buffer(buffer) _listening_buffers[buffer] = nil end, }) end return M