diff options
| author | Christian Clason <c.clason@uni-graz.at> | 2023-06-06 20:20:42 +0200 |
|---|---|---|
| committer | Christian Clason <c.clason@uni-graz.at> | 2025-05-12 18:43:40 +0200 |
| commit | 68508631deac327167874d9792a7e8ec03a498f1 (patch) | |
| tree | 61a07c35f95dc83be2b60bfc2a2e9af6ba05f739 /lua | |
| parent | feat: drop `TSInstallInfo` in favor of better `checkhealth` (diff) | |
| download | nvim-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.lua | 30 |
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[] ]] |
