feat: Add cache support

This commit is contained in:
Myzel394 2024-04-22 21:44:56 +02:00
parent d00c1ed972
commit 1455d877cd
No known key found for this signature in database
GPG Key ID: DEC4AAB876F73185
2 changed files with 49 additions and 1 deletions

47
lua/jsonfly/cache.lua Normal file
View File

@ -0,0 +1,47 @@
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;

View File

@ -137,11 +137,12 @@ return require"telescope".register_extension {
local cached_entries = cache:get_cache(current_buf)
if cached_entries ~= nil then
print("Using cached entries")
show_picker(cached_entries, current_buf)
return
end
cache:register_listeners(current_buf)
local content_lines = vim.api.nvim_buf_get_lines(current_buf, 0, -1, false)
local content = table.concat(content_lines, "\n")