aboutsummaryrefslogtreecommitdiffstats
path: root/lua
diff options
context:
space:
mode:
authorChristian Clason <c.clason@uni-graz.at>2023-06-06 20:20:42 +0200
committerChristian Clason <c.clason@uni-graz.at>2025-05-12 18:43:40 +0200
commit68508631deac327167874d9792a7e8ec03a498f1 (patch)
tree61a07c35f95dc83be2b60bfc2a2e9af6ba05f739 /lua
parentfeat: drop `TSInstallInfo` in favor of better `checkhealth` (diff)
downloadnvim-treesitter-68508631deac327167874d9792a7e8ec03a498f1.tar
nvim-treesitter-68508631deac327167874d9792a7e8ec03a498f1.tar.gz
nvim-treesitter-68508631deac327167874d9792a7e8ec03a498f1.tar.bz2
nvim-treesitter-68508631deac327167874d9792a7e8ec03a498f1.tar.lz
nvim-treesitter-68508631deac327167874d9792a7e8ec03a498f1.tar.xz
nvim-treesitter-68508631deac327167874d9792a7e8ec03a498f1.tar.zst
nvim-treesitter-68508631deac327167874d9792a7e8ec03a498f1.zip
fix: expand tiers in ignore_install
Diffstat (limited to 'lua')
-rw-r--r--lua/nvim-treesitter/config.lua30
1 files changed, 17 insertions, 13 deletions
diff --git a/lua/nvim-treesitter/config.lua b/lua/nvim-treesitter/config.lua
index 9d9e1d3af..5a7c8e8ec 100644
--- a/lua/nvim-treesitter/config.lua
+++ b/lua/nvim-treesitter/config.lua
@@ -91,14 +91,12 @@ end
function M.norm_languages(languages, skip)
if not languages then
return {}
- end
- local parsers = require('nvim-treesitter.parsers')
-
- -- Turn into table
- if type(languages) == 'string' then
+ elseif type(languages) == 'string' then
languages = { languages }
end
+ local parsers = require('nvim-treesitter.parsers')
+
if vim.list_contains(languages, 'all') then
if skip and skip.missing then
return M.installed_parsers()
@@ -107,18 +105,24 @@ function M.norm_languages(languages, skip)
end
--TODO(clason): skip and warn on unavailable parser
- for i, tier in ipairs(parsers.tiers) do
- if vim.list_contains(languages, tier) then
- languages = vim.iter.filter(function(l)
- return l ~= tier
- end, languages) --[[@as string[] ]]
- vim.list_extend(languages, parsers.get_available(i))
+ -- keep local to avoid leaking parsers module
+ local function expand_tiers(list)
+ for i, tier in ipairs(parsers.tiers) do
+ if vim.list_contains(list, tier) then
+ list = vim.iter.filter(function(l)
+ return l ~= tier
+ end, list) --[[@as string[] ]]
+ vim.list_extend(list, parsers.get_available(i))
+ end
end
+
+ return list
end
- --TODO(clason): support skipping tiers
+ languages = expand_tiers(languages)
+
if skip and skip.ignored then
- local ignored = config.ignore_install
+ local ignored = expand_tiers(config.ignore_install)
languages = vim.iter.filter(function(v)
return not vim.list_contains(ignored, v)
end, languages) --[[@as string[] ]]