diff options
| author | Stephan Seitz <stephan.seitz@fau.de> | 2021-03-23 20:44:17 +0100 |
|---|---|---|
| committer | Stephan Seitz <stephan.lauf@yahoo.de> | 2021-03-23 21:25:37 +0100 |
| commit | 1375cc5c1f575b924a22664eba343a8dded309ac (patch) | |
| tree | 631a490ff83c5758b2c66602f1ce908909e3d454 /lua | |
| parent | Update lockfile.json (diff) | |
| download | nvim-treesitter-1375cc5c1f575b924a22664eba343a8dded309ac.tar nvim-treesitter-1375cc5c1f575b924a22664eba343a8dded309ac.tar.gz nvim-treesitter-1375cc5c1f575b924a22664eba343a8dded309ac.tar.bz2 nvim-treesitter-1375cc5c1f575b924a22664eba343a8dded309ac.tar.lz nvim-treesitter-1375cc5c1f575b924a22664eba343a8dded309ac.tar.xz nvim-treesitter-1375cc5c1f575b924a22664eba343a8dded309ac.tar.zst nvim-treesitter-1375cc5c1f575b924a22664eba343a8dded309ac.zip | |
fix(checkhealth): display error messages of failed queries
Diffstat (limited to 'lua')
| -rw-r--r-- | lua/nvim-treesitter/health.lua | 21 | ||||
| -rw-r--r-- | lua/nvim-treesitter/query.lua | 16 |
2 files changed, 25 insertions, 12 deletions
diff --git a/lua/nvim-treesitter/health.lua b/lua/nvim-treesitter/health.lua index 326c75f12..86784a5ac 100644 --- a/lua/nvim-treesitter/health.lua +++ b/lua/nvim-treesitter/health.lua @@ -43,10 +43,10 @@ local function install_health() end local function query_status(lang, query_group) - local ok, found_query = pcall(queries.get_query, lang, query_group) + local ok, err = pcall(queries.get_query, lang, query_group) if not ok then - return "x" - elseif not found_query then + return "x", err + elseif not err then return "." else return "✓" @@ -54,8 +54,10 @@ local function query_status(lang, query_group) end function M.checkhealth() + local error_collection = {} -- Installation dependency checks install_health() + queries.invalidate_query_cache() health_start("Parser/Features H L F I") -- Parser installation checks for _, parser_name in pairs(info.installed_parsers()) do @@ -66,7 +68,11 @@ function M.checkhealth() local multiple_parsers = installed > 1 and "+" or "" local out = " - "..parser_name..multiple_parsers..string.rep(" ", 15 - (#parser_name + #multiple_parsers)) for _, query_group in pairs(queries.built_in_query_groups) do - out = out..query_status(parser_name, query_group).." " + local status, err = query_status(parser_name, query_group) + out = out..status.." " + if err then + table.insert(error_collection, {parser_name, query_group, err}) + end end print(out) end @@ -76,6 +82,13 @@ function M.checkhealth() Legend: H[ighlight], L[ocals], F[olds], I[ndents] +) multiple parsers found, only one will be used x) errors found in the query, try to run :TSUpdate {lang}]]) + if #error_collection > 0 then + print('\nThe following errors have been detected:') + for _, p in ipairs(error_collection) do + local lang, type, err = unpack(p) + health_error(lang..'('..type..'): '..err) + end + end end return M diff --git a/lua/nvim-treesitter/query.lua b/lua/nvim-treesitter/query.lua index c8c003353..df3e70805 100644 --- a/lua/nvim-treesitter/query.lua +++ b/lua/nvim-treesitter/query.lua @@ -66,27 +66,27 @@ do --- Same as `vim.treesitter.query` except will return cached values function M.get_query(lang, query_name) if cache[lang][query_name] == nil then - M.reload_file_cache(lang, query_name) + cache[lang][query_name] = tsq.get_query(lang, query_name) end return cache[lang][query_name] end - --- Reloads the query file cache. + --- Invalidates the query file cache. --- If lang and query_name is both present, will reload for only the lang and query_name. --- If only lang is present, will reload all query_names for that lang --- If none are present, will reload everything - function M.reload_file_cache(lang, query_name) + function M.invalidate_query_cache(lang, query_name) if lang and query_name then - cache[lang][query_name] = tsq.get_query(lang, query_name) + cache[lang][query_name] = nil elseif lang and not query_name then for query_name, _ in pairs(cache[lang]) do - M.reload_file_cache(lang, query_name) + M.invalidate_query_cache(lang, query_name) end elseif not lang and not query_name then for lang, _ in pairs(cache) do for query_name, _ in pairs(cache[lang]) do - M.reload_file_cache(lang, query_name) + M.invalidate_query_cache(lang, query_name) end end else @@ -96,9 +96,9 @@ do end --- This function is meant for an autocommand and not to be used. Only use if file is a query file. -function M.reload_file_cache_on_write(fname) +function M.invalidate_query_file(fname) local fnamemodify = vim.fn.fnamemodify - M.reload_file_cache(fnamemodify(fname, ':p:h:t'), fnamemodify(fname, ':t:r')) + M.invalidate_query_cache(fnamemodify(fname, ':p:h:t'), fnamemodify(fname, ':t:r')) end function M.iter_prepared_matches(query, qnode, bufnr, start_row, end_row) |
