mirror of
https://github.com/nvim-treesitter/nvim-treesitter.git
synced 2026-07-19 11:50:09 -04:00
perf: cache has_query_files: fixes TS slowness
This commit is contained in:
parent
c04aa172a3
commit
90024c24aa
1 changed files with 12 additions and 2 deletions
|
|
@ -61,9 +61,16 @@ local function runtime_queries(lang, query_name)
|
||||||
return api.nvim_get_runtime_file(string.format('queries/%s/%s.scm', lang, query_name), true) or {}
|
return api.nvim_get_runtime_file(string.format('queries/%s/%s.scm', lang, query_name), true) or {}
|
||||||
end
|
end
|
||||||
|
|
||||||
|
local query_files_cache = {}
|
||||||
function M.has_query_files(lang, query_name)
|
function M.has_query_files(lang, query_name)
|
||||||
local files = runtime_queries(lang, query_name)
|
if not query_files_cache[lang] then
|
||||||
return files and #files > 0
|
query_files_cache[lang] = {}
|
||||||
|
end
|
||||||
|
if query_files_cache[lang][query_name] == nil then
|
||||||
|
local files = runtime_queries(lang, query_name)
|
||||||
|
query_files_cache[lang][query_name] = files and #files > 0
|
||||||
|
end
|
||||||
|
return query_files_cache[lang][query_name]
|
||||||
end
|
end
|
||||||
|
|
||||||
do
|
do
|
||||||
|
|
@ -94,11 +101,14 @@ do
|
||||||
function M.invalidate_query_cache(lang, query_name)
|
function M.invalidate_query_cache(lang, query_name)
|
||||||
if lang and query_name then
|
if lang and query_name then
|
||||||
cache[lang][query_name] = nil
|
cache[lang][query_name] = nil
|
||||||
|
query_files_cache[lang][query_name] = nil
|
||||||
elseif lang and not query_name then
|
elseif lang and not query_name then
|
||||||
|
query_files_cache[lang] = nil
|
||||||
for query_name, _ in pairs(cache[lang]) do
|
for query_name, _ in pairs(cache[lang]) do
|
||||||
M.invalidate_query_cache(lang, query_name)
|
M.invalidate_query_cache(lang, query_name)
|
||||||
end
|
end
|
||||||
elseif not lang and not query_name then
|
elseif not lang and not query_name then
|
||||||
|
query_files_cache = {}
|
||||||
for lang, _ in pairs(cache) do
|
for lang, _ in pairs(cache) do
|
||||||
for query_name, _ in pairs(cache[lang]) do
|
for query_name, _ in pairs(cache[lang]) do
|
||||||
M.invalidate_query_cache(lang, query_name)
|
M.invalidate_query_cache(lang, query_name)
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue