mirror of
https://github.com/Myzel394/jsonfly.nvim.git
synced 2025-06-18 04:05:26 +02:00
feat: Add cache support
This commit is contained in:
parent
d00c1ed972
commit
1455d877cd
47
lua/jsonfly/cache.lua
Normal file
47
lua/jsonfly/cache.lua
Normal 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;
|
||||
|
@ -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")
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user