mirror of
https://github.com/nvim-treesitter/nvim-treesitter.git
synced 2026-07-08 22:40:12 -04:00
fix: detach behaviour on buffer reload
This commit is contained in:
parent
d7aa8cd745
commit
6fcb2e6a9a
1 changed files with 13 additions and 5 deletions
|
|
@ -14,24 +14,28 @@ function M.create_buffer_cache()
|
||||||
return rawget(tbl, key)
|
return rawget(tbl, key)
|
||||||
end,
|
end,
|
||||||
})
|
})
|
||||||
|
local loaded_buffers = {}
|
||||||
|
|
||||||
function cache.set(type_name, bufnr, value)
|
function cache.set(type_name, bufnr, value)
|
||||||
if not cache.has(type_name, bufnr) then
|
if not loaded_buffers[bufnr] then
|
||||||
|
loaded_buffers[bufnr] = true
|
||||||
-- Clean up the cache if the buffer is detached
|
-- Clean up the cache if the buffer is detached
|
||||||
-- to avoid memory leaks
|
-- to avoid memory leaks
|
||||||
api.nvim_buf_attach(bufnr, false, {
|
api.nvim_buf_attach(bufnr, false, {
|
||||||
on_detach = function()
|
on_detach = function()
|
||||||
cache.remove(type_name, bufnr)
|
cache.clear_buffer(bufnr)
|
||||||
|
loaded_buffers[tostring(bufnr)] = nil
|
||||||
return true
|
return true
|
||||||
end,
|
end,
|
||||||
|
on_reload = function() end, -- this is needed to prevent on_detach being called on buffer reload
|
||||||
})
|
})
|
||||||
end
|
end
|
||||||
|
|
||||||
items[type_name][bufnr] = value
|
items[tostring(bufnr)][type_name] = value
|
||||||
end
|
end
|
||||||
|
|
||||||
function cache.get(type_name, bufnr)
|
function cache.get(type_name, bufnr)
|
||||||
return items[type_name][bufnr]
|
return items[tostring(bufnr)][type_name]
|
||||||
end
|
end
|
||||||
|
|
||||||
function cache.has(type_name, bufnr)
|
function cache.has(type_name, bufnr)
|
||||||
|
|
@ -39,7 +43,11 @@ function M.create_buffer_cache()
|
||||||
end
|
end
|
||||||
|
|
||||||
function cache.remove(type_name, bufnr)
|
function cache.remove(type_name, bufnr)
|
||||||
items[type_name][bufnr] = nil
|
items[tostring(bufnr)][type_name] = nil
|
||||||
|
end
|
||||||
|
|
||||||
|
function cache.clear_buffer(bufnr)
|
||||||
|
items[tostring(bufnr)] = nil
|
||||||
end
|
end
|
||||||
|
|
||||||
return cache
|
return cache
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue