From 1455d877cd1f998b743f2676228afc991af78cde Mon Sep 17 00:00:00 2001 From: Myzel394 <50424412+Myzel394@users.noreply.github.com> Date: Mon, 22 Apr 2024 21:44:56 +0200 Subject: [PATCH] feat: Add cache support --- lua/jsonfly/cache.lua | 47 +++++++++++++++++++++++++++ lua/telescope/_extensions/jsonfly.lua | 3 +- 2 files changed, 49 insertions(+), 1 deletion(-) create mode 100644 lua/jsonfly/cache.lua diff --git a/lua/jsonfly/cache.lua b/lua/jsonfly/cache.lua new file mode 100644 index 0000000..42551de --- /dev/null +++ b/lua/jsonfly/cache.lua @@ -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; + diff --git a/lua/telescope/_extensions/jsonfly.lua b/lua/telescope/_extensions/jsonfly.lua index 77715b2..b3b7e2b 100644 --- a/lua/telescope/_extensions/jsonfly.lua +++ b/lua/telescope/_extensions/jsonfly.lua @@ -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")