mirror of
https://github.com/nvim-treesitter/nvim-treesitter.git
synced 2026-07-02 19:46:58 -04:00
fix(queries): don't load queries on startup
This commit is contained in:
parent
47a4eadf44
commit
4982d05ec7
1 changed files with 27 additions and 21 deletions
|
|
@ -37,7 +37,7 @@ M.built_in_query_groups = {'highlights', 'locals', 'textobjects'}
|
|||
-- for a specific language.
|
||||
local function get_query_guard(query)
|
||||
return function(lang)
|
||||
return M.get_query(lang, query) ~= nil
|
||||
return M.has_query_files(lang, query)
|
||||
end
|
||||
end
|
||||
|
||||
|
|
@ -69,35 +69,41 @@ function M.get_matches(bufnr, query_group)
|
|||
return query_cache[query_group][bufnr].cache
|
||||
end
|
||||
|
||||
function M.get_query(lang, query_name)
|
||||
local query_files = api.nvim_get_runtime_file(string.format('queries/%s/%s.scm', lang, query_name), true)
|
||||
local query_string = ''
|
||||
function M.get_query_files(lang, query_name)
|
||||
local query_files = {}
|
||||
local extensions = M.query_extensions[lang] or {}
|
||||
|
||||
if #query_files > 0 then
|
||||
query_string = read_query_files(query_files) .. "\n" .. query_string
|
||||
end
|
||||
|
||||
for _, base_lang in ipairs(M.base_language_map[lang] or {}) do
|
||||
local base_files = api.nvim_get_runtime_file(string.format('queries/%s/%s.scm', base_lang, query_name), true)
|
||||
if base_files and #base_files > 0 then
|
||||
query_string = read_query_files(base_files) .. "\n" .. query_string
|
||||
end
|
||||
end
|
||||
|
||||
local extensions = M.query_extensions[lang]
|
||||
for _, ext in ipairs(extensions or {}) do
|
||||
for _, ext in ipairs(extensions) do
|
||||
local l = lang
|
||||
local e = ext
|
||||
if e:match('%.') ~= nil then
|
||||
l = e:match('.*%.'):sub(0, -2)
|
||||
e = e:match('%..*'):sub(2, -1)
|
||||
end
|
||||
local ext_files = api.nvim_get_runtime_file(string.format('queries/%s/%s.scm', l, e), true)
|
||||
if ext_files and #ext_files > 0 then
|
||||
query_string = read_query_files(ext_files) .. "\n" .. query_string
|
||||
end
|
||||
local ext_files = api.nvim_get_runtime_file(string.format('queries/%s/%s.scm', l, e), true) or {}
|
||||
vim.list_extend(query_files, ext_files)
|
||||
end
|
||||
|
||||
for _, base_lang in ipairs(M.base_language_map[lang] or {}) do
|
||||
local base_files = api.nvim_get_runtime_file(string.format('queries/%s/%s.scm', base_lang, query_name), true) or {}
|
||||
vim.list_extend(query_files, base_files)
|
||||
end
|
||||
|
||||
local lang_files = api.nvim_get_runtime_file(string.format('queries/%s/%s.scm', lang, query_name), true) or {}
|
||||
|
||||
return vim.list_extend(query_files, lang_files)
|
||||
end
|
||||
|
||||
function M.has_query_files(lang, query_name)
|
||||
local query_files = M.get_query_files(lang, query_name)
|
||||
|
||||
return #query_files > 0
|
||||
end
|
||||
|
||||
function M.get_query(lang, query_name)
|
||||
local query_files = M.get_query_files(lang, query_name)
|
||||
local query_string = read_query_files(query_files)
|
||||
|
||||
if #query_string > 0 then
|
||||
return ts.parse_query(lang, query_string)
|
||||
end
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue