From 0bb981c87604200df6c8fb81e5a411101bdf93af Mon Sep 17 00:00:00 2001 From: Lewis Russell Date: Fri, 19 Apr 2024 18:12:54 +0100 Subject: fix: do not use vim.iter (#6469) --- lua/nvim-treesitter/config.lua | 53 ++++++++++++++++++++++++++++------------- lua/nvim-treesitter/install.lua | 11 ++++----- lua/nvim-treesitter/parsers.lua | 22 +++++++++++------ 3 files changed, 57 insertions(+), 29 deletions(-) (limited to 'lua') diff --git a/lua/nvim-treesitter/config.lua b/lua/nvim-treesitter/config.lua index cd4a3a178..a52c6a10e 100644 --- a/lua/nvim-treesitter/config.lua +++ b/lua/nvim-treesitter/config.lua @@ -106,12 +106,17 @@ function M.norm_languages(languages, skip) end -- keep local to avoid leaking parsers module + --- @param list string[] 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[] ]] + list = vim.tbl_filter( + --- @param l string + function(l) + return l ~= tier + end, + list + ) vim.list_extend(list, parsers.get_available(i)) end end @@ -123,29 +128,45 @@ function M.norm_languages(languages, skip) if skip and skip.ignored then local ignored = expand_tiers(config.ignore_install) - languages = vim.iter.filter(function(v) - return not vim.list_contains(ignored, v) - end, languages) --[[@as string[] ]] + languages = vim.tbl_filter( + --- @param v string + function(v) + return not vim.list_contains(ignored, v) + end, + languages + ) end if skip and skip.installed then local installed = M.installed_parsers() - languages = vim.iter.filter(function(v) - return not vim.list_contains(installed, v) - end, languages) --[[@as string[] ]] + languages = vim.tbl_filter( + --- @param v string + function(v) + return not vim.list_contains(installed, v) + end, + languages + ) end if skip and skip.missing then local installed = M.installed_parsers() - languages = vim.iter.filter(function(v) - return vim.list_contains(installed, v) - end, languages) --[[@as string[] ]] + languages = vim.tbl_filter( + --- @param v string + function(v) + return vim.list_contains(installed, v) + end, + languages + ) end - languages = vim.iter.filter(function(v) - -- TODO(lewis6991): warn of any unknown parsers? - return parsers.configs[v] ~= nil - end, languages) --[[@as string[] ]] + languages = vim.tbl_filter( + --- @param v string + function(v) + -- TODO(lewis6991): warn of any unknown parsers? + return parsers.configs[v] ~= nil + end, + languages + ) if not (skip and skip.dependencies) then for _, lang in pairs(languages) do diff --git a/lua/nvim-treesitter/install.lua b/lua/nvim-treesitter/install.lua index 5927619d3..1bb7d6fea 100644 --- a/lua/nvim-treesitter/install.lua +++ b/lua/nvim-treesitter/install.lua @@ -152,7 +152,7 @@ end local function cc_err() log.error( 'No C compiler found! "' - .. table.concat(vim.iter.filter(istring, M.compilers), '", "') + .. table.concat(vim.tbl_filter(istring, M.compilers), '", "') .. '" are not executable.' ) end @@ -230,7 +230,7 @@ local function do_download_tar(logger, repo, project_name, cache_dir, revision, cwd = cache_dir, }) if r.code > 0 then - return logger:error('Error during download, please verify your internet connection: %s', r.stderr) + return logger:error('Error during download: %s', r.stderr) end logger:debug('Creating temporary directory: ' .. temp_dir) @@ -328,7 +328,7 @@ end ---@param executables string[] ---@return string? function M.select_executable(executables) - return vim.iter.filter(executable, executables)[1] + return vim.tbl_filter(executable, executables)[1] end -- Returns the compiler arguments based on the compiler and OS @@ -520,8 +520,7 @@ local INSTALL_TIMEOUT = 60000 ---@return InstallStatus status local function install_lang(lang, cache_dir, install_dir, force, generate_from_grammar) if not force and vim.list_contains(config.installed_parsers(), lang) then - local yesno = - fn.input(lang .. ' parser already available: would you like to reinstall ? y/n: ') + local yesno = fn.input(lang .. ' parser already available: would you like to reinstall ? y/n: ') print('\n ') if yesno:sub(1, 1) ~= 'y' then install_status[lang] = 'installed' @@ -613,7 +612,7 @@ M.update = a.sync(function(languages, _options, _callback) languages = 'all' end languages = config.norm_languages(languages, { ignored = true, missing = true }) - languages = vim.iter.filter(needs_update, languages) --- @type string[] + languages = vim.tbl_filter(needs_update, languages) --- @type string[] if #languages > 0 then install(languages, { force = true }) diff --git a/lua/nvim-treesitter/parsers.lua b/lua/nvim-treesitter/parsers.lua index 25efd5d9d..538f2336c 100644 --- a/lua/nvim-treesitter/parsers.lua +++ b/lua/nvim-treesitter/parsers.lua @@ -3010,15 +3010,23 @@ function M.get_available(tier) local parsers = vim.tbl_keys(M.configs) table.sort(parsers) if tier then - parsers = vim.iter.filter(function(p) - return M.configs[p].tier == tier - end, parsers) --[[@as string[] ]] + parsers = vim.tbl_filter( + --- @param p string + function(p) + return M.configs[p].tier == tier + end, + parsers + ) end if vim.fn.executable('tree-sitter') == 0 or vim.fn.executable('node') == 0 then - parsers = vim.iter.filter(function(p) - return M.configs[p].install_info - and not M.configs[p].install_info.requires_generate_from_grammar - end, parsers) --[[@as string[] ]] + parsers = vim.tbl_filter( + --- @param p string + function(p) + return M.configs[p].install_info ~= nil + and not M.configs[p].install_info.requires_generate_from_grammar + end, + parsers + ) end return parsers end -- cgit v1.2.3-70-g09d2