From 68508631deac327167874d9792a7e8ec03a498f1 Mon Sep 17 00:00:00 2001 From: Christian Clason Date: Tue, 6 Jun 2023 20:20:42 +0200 Subject: fix: expand tiers in ignore_install --- lua/nvim-treesitter/config.lua | 30 +++++++++++++++++------------- 1 file changed, 17 insertions(+), 13 deletions(-) (limited to 'lua') 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[] ]] -- cgit v1.2.3-70-g09d2