From ba3167a1a4fdc9028eb1f088e823ac1dceb202f4 Mon Sep 17 00:00:00 2001 From: Thomas Vigouroux Date: Tue, 11 Aug 2020 14:36:13 +0200 Subject: perf: cache parser file list for performance --- lua/nvim-treesitter/parsers.lua | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) (limited to 'lua/nvim-treesitter/parsers.lua') diff --git a/lua/nvim-treesitter/parsers.lua b/lua/nvim-treesitter/parsers.lua index 491edcb6..c1b48a00 100644 --- a/lua/nvim-treesitter/parsers.lua +++ b/lua/nvim-treesitter/parsers.lua @@ -284,11 +284,25 @@ function M.get_parser_configs() return M.list end +local parser_files + +function M.reset_cache() + parser_files = setmetatable({}, { + __index = function(tbl, key) + rawset(tbl, key, api.nvim_get_runtime_file('parser/' .. key .. '.*', false)) + return rawget(tbl, key) + end + }) +end + +M.reset_cache() + function M.has_parser(lang) local buf = api.nvim_get_current_buf() local lang = lang or M.get_buf_lang(buf) + if not lang or #lang == 0 then return false end - return #api.nvim_get_runtime_file('parser/' .. lang .. '.*', false) > 0 + return #parser_files[lang] > 0 end function M.get_parser(bufnr, lang) -- cgit v1.2.3