mirror of
https://github.com/chenasraf/nvim-treesitter.git
synced 2026-05-17 17:38:02 +00:00
fix: do not use vim.iter (#6469)
This commit is contained in:
committed by
Christian Clason
parent
421e2fb7b2
commit
0bb981c876
@@ -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
|
||||
|
||||
@@ -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 })
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user