diff options
| author | Folke Lemaitre <folke.lemaitre@gmail.com> | 2021-06-28 08:11:46 +0200 |
|---|---|---|
| committer | Thomas Vigouroux <tomvig38@gmail.com> | 2021-06-28 16:17:23 +0200 |
| commit | 90024c24aaef98065579173a75acf59c8f132af8 (patch) | |
| tree | 886635f4a1217bcc48d32572e6b3517b819d6475 /lua | |
| parent | fix typo in query (diff) | |
| download | nvim-treesitter-90024c24aaef98065579173a75acf59c8f132af8.tar nvim-treesitter-90024c24aaef98065579173a75acf59c8f132af8.tar.gz nvim-treesitter-90024c24aaef98065579173a75acf59c8f132af8.tar.bz2 nvim-treesitter-90024c24aaef98065579173a75acf59c8f132af8.tar.lz nvim-treesitter-90024c24aaef98065579173a75acf59c8f132af8.tar.xz nvim-treesitter-90024c24aaef98065579173a75acf59c8f132af8.tar.zst nvim-treesitter-90024c24aaef98065579173a75acf59c8f132af8.zip | |
perf: cache has_query_files: fixes TS slowness
Diffstat (limited to 'lua')
| -rw-r--r-- | lua/nvim-treesitter/query.lua | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/lua/nvim-treesitter/query.lua b/lua/nvim-treesitter/query.lua index 397d733f4..377356c5c 100644 --- a/lua/nvim-treesitter/query.lua +++ b/lua/nvim-treesitter/query.lua @@ -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 {} end +local query_files_cache = {} function M.has_query_files(lang, query_name) - local files = runtime_queries(lang, query_name) - return files and #files > 0 + if not query_files_cache[lang] then + 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 do @@ -94,11 +101,14 @@ do function M.invalidate_query_cache(lang, query_name) if lang and query_name then cache[lang][query_name] = nil + query_files_cache[lang][query_name] = nil elseif lang and not query_name then + query_files_cache[lang] = nil for query_name, _ in pairs(cache[lang]) do M.invalidate_query_cache(lang, query_name) end elseif not lang and not query_name then + query_files_cache = {} for lang, _ in pairs(cache) do for query_name, _ in pairs(cache[lang]) do M.invalidate_query_cache(lang, query_name) |
