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)
|
local cached_entries = cache:get_cache(current_buf)
|
||||||
|
|
||||||
if cached_entries ~= nil then
|
if cached_entries ~= nil then
|
||||||
print("Using cached entries")
|
|
||||||
show_picker(cached_entries, current_buf)
|
show_picker(cached_entries, current_buf)
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
|
|
||||||
|
cache:register_listeners(current_buf)
|
||||||
|
|
||||||
local content_lines = vim.api.nvim_buf_get_lines(current_buf, 0, -1, false)
|
local content_lines = vim.api.nvim_buf_get_lines(current_buf, 0, -1, false)
|
||||||
local content = table.concat(content_lines, "\n")
|
local content = table.concat(content_lines, "\n")
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user