fix: do not use vim.iter (#6469)

This commit is contained in:
Lewis Russell
2024-04-19 18:12:54 +01:00
committed by Christian Clason
parent 421e2fb7b2
commit 0bb981c876
4 changed files with 71 additions and 35 deletions

View File

@@ -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

View File

@@ -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 })

View File

@@ -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

View File

@@ -6,15 +6,23 @@ vim.g.loaded_nvim_treesitter = true
local api = vim.api
local function complete_available_parsers(arglead)
return vim.iter.filter(function(v)
return v:find(arglead)
end, require('nvim-treesitter.parsers').get_available())
return vim.tbl_filter(
--- @param v string
function(v)
return v:find(arglead) ~= nil
end,
require('nvim-treesitter.parsers').get_available()
)
end
local function complete_installed_parsers(arglead)
return vim.iter.filter(function(v)
return v:find(arglead)
end, require('nvim-treesitter.config').installed_parsers())
return vim.tbl_filter(
--- @param v string
function(v)
return v:find(arglead) ~= nil
end,
require('nvim-treesitter.config').installed_parsers()
)
end
-- create user commands