mirror of
https://github.com/nvim-treesitter/nvim-treesitter.git
synced 2026-07-15 09:50:04 -04:00
fix: do not use vim.iter (#6469)
This commit is contained in:
parent
421e2fb7b2
commit
0bb981c876
4 changed files with 71 additions and 35 deletions
|
|
@ -106,12 +106,17 @@ function M.norm_languages(languages, skip)
|
||||||
end
|
end
|
||||||
|
|
||||||
-- keep local to avoid leaking parsers module
|
-- keep local to avoid leaking parsers module
|
||||||
|
--- @param list string[]
|
||||||
local function expand_tiers(list)
|
local function expand_tiers(list)
|
||||||
for i, tier in ipairs(parsers.tiers) do
|
for i, tier in ipairs(parsers.tiers) do
|
||||||
if vim.list_contains(list, tier) then
|
if vim.list_contains(list, tier) then
|
||||||
list = vim.iter.filter(function(l)
|
list = vim.tbl_filter(
|
||||||
return l ~= tier
|
--- @param l string
|
||||||
end, list) --[[@as string[] ]]
|
function(l)
|
||||||
|
return l ~= tier
|
||||||
|
end,
|
||||||
|
list
|
||||||
|
)
|
||||||
vim.list_extend(list, parsers.get_available(i))
|
vim.list_extend(list, parsers.get_available(i))
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
@ -123,29 +128,45 @@ function M.norm_languages(languages, skip)
|
||||||
|
|
||||||
if skip and skip.ignored then
|
if skip and skip.ignored then
|
||||||
local ignored = expand_tiers(config.ignore_install)
|
local ignored = expand_tiers(config.ignore_install)
|
||||||
languages = vim.iter.filter(function(v)
|
languages = vim.tbl_filter(
|
||||||
return not vim.list_contains(ignored, v)
|
--- @param v string
|
||||||
end, languages) --[[@as string[] ]]
|
function(v)
|
||||||
|
return not vim.list_contains(ignored, v)
|
||||||
|
end,
|
||||||
|
languages
|
||||||
|
)
|
||||||
end
|
end
|
||||||
|
|
||||||
if skip and skip.installed then
|
if skip and skip.installed then
|
||||||
local installed = M.installed_parsers()
|
local installed = M.installed_parsers()
|
||||||
languages = vim.iter.filter(function(v)
|
languages = vim.tbl_filter(
|
||||||
return not vim.list_contains(installed, v)
|
--- @param v string
|
||||||
end, languages) --[[@as string[] ]]
|
function(v)
|
||||||
|
return not vim.list_contains(installed, v)
|
||||||
|
end,
|
||||||
|
languages
|
||||||
|
)
|
||||||
end
|
end
|
||||||
|
|
||||||
if skip and skip.missing then
|
if skip and skip.missing then
|
||||||
local installed = M.installed_parsers()
|
local installed = M.installed_parsers()
|
||||||
languages = vim.iter.filter(function(v)
|
languages = vim.tbl_filter(
|
||||||
return vim.list_contains(installed, v)
|
--- @param v string
|
||||||
end, languages) --[[@as string[] ]]
|
function(v)
|
||||||
|
return vim.list_contains(installed, v)
|
||||||
|
end,
|
||||||
|
languages
|
||||||
|
)
|
||||||
end
|
end
|
||||||
|
|
||||||
languages = vim.iter.filter(function(v)
|
languages = vim.tbl_filter(
|
||||||
-- TODO(lewis6991): warn of any unknown parsers?
|
--- @param v string
|
||||||
return parsers.configs[v] ~= nil
|
function(v)
|
||||||
end, languages) --[[@as string[] ]]
|
-- TODO(lewis6991): warn of any unknown parsers?
|
||||||
|
return parsers.configs[v] ~= nil
|
||||||
|
end,
|
||||||
|
languages
|
||||||
|
)
|
||||||
|
|
||||||
if not (skip and skip.dependencies) then
|
if not (skip and skip.dependencies) then
|
||||||
for _, lang in pairs(languages) do
|
for _, lang in pairs(languages) do
|
||||||
|
|
|
||||||
|
|
@ -152,7 +152,7 @@ end
|
||||||
local function cc_err()
|
local function cc_err()
|
||||||
log.error(
|
log.error(
|
||||||
'No C compiler found! "'
|
'No C compiler found! "'
|
||||||
.. table.concat(vim.iter.filter(istring, M.compilers), '", "')
|
.. table.concat(vim.tbl_filter(istring, M.compilers), '", "')
|
||||||
.. '" are not executable.'
|
.. '" are not executable.'
|
||||||
)
|
)
|
||||||
end
|
end
|
||||||
|
|
@ -230,7 +230,7 @@ local function do_download_tar(logger, repo, project_name, cache_dir, revision,
|
||||||
cwd = cache_dir,
|
cwd = cache_dir,
|
||||||
})
|
})
|
||||||
if r.code > 0 then
|
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
|
end
|
||||||
|
|
||||||
logger:debug('Creating temporary directory: ' .. temp_dir)
|
logger:debug('Creating temporary directory: ' .. temp_dir)
|
||||||
|
|
@ -328,7 +328,7 @@ end
|
||||||
---@param executables string[]
|
---@param executables string[]
|
||||||
---@return string?
|
---@return string?
|
||||||
function M.select_executable(executables)
|
function M.select_executable(executables)
|
||||||
return vim.iter.filter(executable, executables)[1]
|
return vim.tbl_filter(executable, executables)[1]
|
||||||
end
|
end
|
||||||
|
|
||||||
-- Returns the compiler arguments based on the compiler and OS
|
-- Returns the compiler arguments based on the compiler and OS
|
||||||
|
|
@ -520,8 +520,7 @@ local INSTALL_TIMEOUT = 60000
|
||||||
---@return InstallStatus status
|
---@return InstallStatus status
|
||||||
local function install_lang(lang, cache_dir, install_dir, force, generate_from_grammar)
|
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
|
if not force and vim.list_contains(config.installed_parsers(), lang) then
|
||||||
local yesno =
|
local yesno = fn.input(lang .. ' parser already available: would you like to reinstall ? y/n: ')
|
||||||
fn.input(lang .. ' parser already available: would you like to reinstall ? y/n: ')
|
|
||||||
print('\n ')
|
print('\n ')
|
||||||
if yesno:sub(1, 1) ~= 'y' then
|
if yesno:sub(1, 1) ~= 'y' then
|
||||||
install_status[lang] = 'installed'
|
install_status[lang] = 'installed'
|
||||||
|
|
@ -613,7 +612,7 @@ M.update = a.sync(function(languages, _options, _callback)
|
||||||
languages = 'all'
|
languages = 'all'
|
||||||
end
|
end
|
||||||
languages = config.norm_languages(languages, { ignored = true, missing = true })
|
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
|
if #languages > 0 then
|
||||||
install(languages, { force = true })
|
install(languages, { force = true })
|
||||||
|
|
|
||||||
|
|
@ -3010,15 +3010,23 @@ function M.get_available(tier)
|
||||||
local parsers = vim.tbl_keys(M.configs)
|
local parsers = vim.tbl_keys(M.configs)
|
||||||
table.sort(parsers)
|
table.sort(parsers)
|
||||||
if tier then
|
if tier then
|
||||||
parsers = vim.iter.filter(function(p)
|
parsers = vim.tbl_filter(
|
||||||
return M.configs[p].tier == tier
|
--- @param p string
|
||||||
end, parsers) --[[@as string[] ]]
|
function(p)
|
||||||
|
return M.configs[p].tier == tier
|
||||||
|
end,
|
||||||
|
parsers
|
||||||
|
)
|
||||||
end
|
end
|
||||||
if vim.fn.executable('tree-sitter') == 0 or vim.fn.executable('node') == 0 then
|
if vim.fn.executable('tree-sitter') == 0 or vim.fn.executable('node') == 0 then
|
||||||
parsers = vim.iter.filter(function(p)
|
parsers = vim.tbl_filter(
|
||||||
return M.configs[p].install_info
|
--- @param p string
|
||||||
and not M.configs[p].install_info.requires_generate_from_grammar
|
function(p)
|
||||||
end, parsers) --[[@as string[] ]]
|
return M.configs[p].install_info ~= nil
|
||||||
|
and not M.configs[p].install_info.requires_generate_from_grammar
|
||||||
|
end,
|
||||||
|
parsers
|
||||||
|
)
|
||||||
end
|
end
|
||||||
return parsers
|
return parsers
|
||||||
end
|
end
|
||||||
|
|
|
||||||
|
|
@ -6,15 +6,23 @@ vim.g.loaded_nvim_treesitter = true
|
||||||
local api = vim.api
|
local api = vim.api
|
||||||
|
|
||||||
local function complete_available_parsers(arglead)
|
local function complete_available_parsers(arglead)
|
||||||
return vim.iter.filter(function(v)
|
return vim.tbl_filter(
|
||||||
return v:find(arglead)
|
--- @param v string
|
||||||
end, require('nvim-treesitter.parsers').get_available())
|
function(v)
|
||||||
|
return v:find(arglead) ~= nil
|
||||||
|
end,
|
||||||
|
require('nvim-treesitter.parsers').get_available()
|
||||||
|
)
|
||||||
end
|
end
|
||||||
|
|
||||||
local function complete_installed_parsers(arglead)
|
local function complete_installed_parsers(arglead)
|
||||||
return vim.iter.filter(function(v)
|
return vim.tbl_filter(
|
||||||
return v:find(arglead)
|
--- @param v string
|
||||||
end, require('nvim-treesitter.config').installed_parsers())
|
function(v)
|
||||||
|
return v:find(arglead) ~= nil
|
||||||
|
end,
|
||||||
|
require('nvim-treesitter.config').installed_parsers()
|
||||||
|
)
|
||||||
end
|
end
|
||||||
|
|
||||||
-- create user commands
|
-- create user commands
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue