aboutsummaryrefslogtreecommitdiffstats
path: root/lua
diff options
context:
space:
mode:
authorShane Hird <shane.hird@csgicorp.com>2021-07-02 21:06:44 +1000
committerStephan Seitz <stephan.lauf@yahoo.de>2021-07-04 14:59:13 +0200
commit303121e0ec8cc37effecf5b0795a2a971370c751 (patch)
tree041140f40c12b129fde134853a7a8faed8b94335 /lua
parentFix ensure_installed function (diff)
downloadnvim-treesitter-303121e0ec8cc37effecf5b0795a2a971370c751.tar
nvim-treesitter-303121e0ec8cc37effecf5b0795a2a971370c751.tar.gz
nvim-treesitter-303121e0ec8cc37effecf5b0795a2a971370c751.tar.bz2
nvim-treesitter-303121e0ec8cc37effecf5b0795a2a971370c751.tar.lz
nvim-treesitter-303121e0ec8cc37effecf5b0795a2a971370c751.tar.xz
nvim-treesitter-303121e0ec8cc37effecf5b0795a2a971370c751.tar.zst
nvim-treesitter-303121e0ec8cc37effecf5b0795a2a971370c751.zip
Improved passing bang to functions
Diffstat (limited to 'lua')
-rw-r--r--lua/nvim-treesitter/configs.lua2
-rw-r--r--lua/nvim-treesitter/install.lua184
-rw-r--r--lua/nvim-treesitter/utils.lua2
3 files changed, 97 insertions, 91 deletions
diff --git a/lua/nvim-treesitter/configs.lua b/lua/nvim-treesitter/configs.lua
index 65160ac6d..f6815a80f 100644
--- a/lua/nvim-treesitter/configs.lua
+++ b/lua/nvim-treesitter/configs.lua
@@ -332,7 +332,7 @@ function M.setup(user_data)
local ensure_installed = user_data.ensure_installed or {}
if #ensure_installed > 0 then
- require'nvim-treesitter.install'.ensure_installed('')(ensure_installed)
+ require'nvim-treesitter.install'.ensure_installed(ensure_installed)
end
config.modules.ensure_installed = nil
diff --git a/lua/nvim-treesitter/install.lua b/lua/nvim-treesitter/install.lua
index 46d0bc7fe..f8f90c1d6 100644
--- a/lua/nvim-treesitter/install.lua
+++ b/lua/nvim-treesitter/install.lua
@@ -284,7 +284,15 @@ local function run_install(cache_folder, install_folder, lang, repo, with_sync,
end
local function install_lang(bang, lang, cache_folder, install_folder, with_sync, generate_from_grammar)
- if is_installed(lang) and bang ~= '!' then return 1 end
+ if is_installed(lang) and not bang then return 1 end
+
+ -- if ask_reinstall ~= 'force' then
+ -- if not ask_reinstall then return end
+ --
+ -- local yesno = fn.input(lang .. ' parser already available: would you like to reinstall ? y/n: ')
+ -- print('\n ') -- mandatory to avoid messing up command line
+ -- if not string.match(yesno, '^y.*') then return end
+ -- end
local parser_config = parsers.get_parser_configs()[lang]
if not parser_config then
@@ -301,116 +309,111 @@ local function install_lang(bang, lang, cache_folder, install_folder, with_sync,
return 0
end
-local function install(options)
+local function install(bang, options)
options = options or {}
local with_sync = options.with_sync
+ -- local ask_reinstall = options.ask_reinstall
local generate_from_grammar = options.generate_from_grammar
local exclude_configured_parsers = options.exclude_configured_parsers
- return function (bang)
- return function (...)
- if fn.executable('git') == 0 then
- return api.nvim_err_writeln('Git is required on your system to run this command')
- end
+ return function (...)
+ if fn.executable('git') == 0 then
+ return api.nvim_err_writeln('Git is required on your system to run this command')
+ end
- local cache_folder, err = utils.get_cache_dir()
- if err then return api.nvim_err_writeln(err) end
+ local cache_folder, err = utils.get_cache_dir()
+ if err then return api.nvim_err_writeln(err) end
- local install_folder, err = utils.get_parser_install_dir()
- if err then return api.nvim_err_writeln(err) end
+ local install_folder, err = utils.get_parser_install_dir()
+ if err then return api.nvim_err_writeln(err) end
- local languages
- if ... == 'all' then
- languages = parsers.available_parsers()
- elseif ... == 'maintained' then
- languages = parsers.maintained_parsers()
- else
- languages = vim.tbl_flatten({...})
- end
+ local languages
+ if ... == 'all' then
+ languages = parsers.available_parsers()
+ elseif ... == 'maintained' then
+ languages = parsers.maintained_parsers()
+ else
+ languages = vim.tbl_flatten({...})
+ end
- if exclude_configured_parsers then
- languages = utils.difference(languages, configs.get_ignored_parser_installs())
- end
+ if exclude_configured_parsers then
+ languages = utils.difference(languages, configs.get_ignored_parser_installs())
+ end
- if #languages > 1 then
- reset_progress_counter()
- end
+ if #languages > 1 then
+ reset_progress_counter()
+ end
- local skipped = 0
- for _, lang in ipairs(languages) do
- skipped = skipped + install_lang(bang, lang, cache_folder, install_folder, with_sync, generate_from_grammar)
- end
- if skipped > 0 then
- print('Parsers already installed. Use :TSInstall! to force reinstallation.')
- end
+ local skipped = 0
+ for _, lang in ipairs(languages) do
+ skipped = skipped + install_lang(bang, lang, cache_folder, install_folder, with_sync, generate_from_grammar)
+ end
+ if skipped > 0 then
+ print('Parsers already installed. Use :TSInstall! to force reinstallation.')
end
end
end
function M.update(options)
options = options or {}
- return function(bang)
- return function (...)
- M.lockfile = {}
- reset_progress_counter()
- if ... and ... ~= 'all' then
- local languages = vim.tbl_flatten({...})
- local installed = 0
- for _, lang in ipairs(languages) do
- if (not is_installed(lang)) or (needs_update(lang)) then
- installed = installed + 1
- install({ with_sync = options.with_sync })('!')(lang)
- end
- end
- if installed == 0 then
- print('Parsers are up-to-date!')
- end
- else
- local parsers_to_update = configs.get_update_strategy() == 'lockfile'
- and outdated_parsers()
- or info.installed_parsers()
- if #parsers_to_update == 0 then
- print('All parsers are up-to-date!')
- end
- for _, lang in pairs(parsers_to_update) do
- install({
- exclude_configured_parsers = true,
- with_sync = options.with_sync
- })('!')(lang)
- end
+ return function (...)
+ M.lockfile = {}
+ reset_progress_counter()
+ if ... and ... ~= 'all' then
+ local languages = vim.tbl_flatten({...})
+ local installed = 0
+ for _, lang in ipairs(languages) do
+ if (not is_installed(lang)) or (needs_update(lang)) then
+ installed = installed + 1
+ install({ with_sync = options.with_sync })(true, lang)
+ end
+ end
+ if installed == 0 then
+ print('Parsers are up-to-date!')
+ end
+ else
+ local parsers_to_update = configs.get_update_strategy() == 'lockfile'
+ and outdated_parsers()
+ or info.installed_parsers()
+ if #parsers_to_update == 0 then
+ print('All parsers are up-to-date!')
+ end
+ for _, lang in pairs(parsers_to_update) do
+ install({
+ exclude_configured_parsers = true,
+ with_sync = options.with_sync
+ })(true, lang)
end
end
end
end
-function M.uninstall(bang)
- return function (lang)
- local path_sep = '/'
- if fn.has('win32') == 1 then
- path_sep = '\\'
- end
+function M.uninstall()
+ local path_sep = '/'
+ if fn.has('win32') == 1 then
+ path_sep = '\\'
+ end
- if vim.tbl_contains({'all', 'maintained'}, lang) then
- reset_progress_counter()
- local installed = info.installed_parsers()
- if lang == "maintained" then
- local maintained = parsers.maintained_parsers()
- installed = vim.tbl_filter(function(l) return vim.tbl_contains(maintained, l) end, installed)
- end
- for _, langitem in pairs(installed) do
- M.uninstall(langitem)
- end
- elseif lang then
- local install_dir, err = utils.get_parser_install_dir()
- if err then return api.nvim_err_writeln(err) end
+ if vim.tbl_contains({'all', 'maintained'}, lang) then
+ reset_progress_counter()
+ local installed = info.installed_parsers()
+ if lang == "maintained" then
+ local maintained = parsers.maintained_parsers()
+ installed = vim.tbl_filter(function(l) return vim.tbl_contains(maintained, l) end, installed)
+ end
+ for _, langitem in pairs(installed) do
+ M.uninstall(langitem)
+ end
+ elseif lang then
+ local install_dir, err = utils.get_parser_install_dir()
+ if err then return api.nvim_err_writeln(err) end
- local parser_lib = install_dir..path_sep..lang..".so"
+ local parser_lib = install_dir..path_sep..lang..".so"
- local command_list = {
- shell.select_rm_file_cmd(parser_lib, "Uninstalling parser for "..lang)
- }
- M.iter_cmd(command_list, 1, lang, 'Treesitter parser for '..lang..' has been uninstalled')
- end
+ local command_list = {
+ shell.select_rm_file_cmd(parser_lib, "Uninstalling parser for "..lang)
+ }
+ M.iter_cmd(command_list, 1, lang, 'Treesitter parser for '..lang..' has been uninstalled')
end
end
@@ -451,7 +454,8 @@ M.ensure_installed = install({ exclude_configured_parsers = true })
M.commands = {
TSInstall = {
- run = install({ }),
+ run = install(false, { }),
+ ['run!'] = install(true, { }),
args = {
"-nargs=+",
"-bang",
@@ -459,7 +463,8 @@ M.commands = {
},
},
TSInstallFromGrammar = {
- run = install({ generate_from_grammar = true }),
+ run = install(false, { generate_from_grammar = true }),
+ ['run!'] = install(true, { generate_from_grammar = true }),
args = {
"-nargs=+",
"-bang",
@@ -467,7 +472,8 @@ M.commands = {
},
},
TSInstallSync = {
- run = install({ with_sync = true }),
+ run = install(false, { with_sync = true }),
+ ['run!'] = install(true, { with_sync = true }),
args = {
"-nargs=+",
"-bang",
diff --git a/lua/nvim-treesitter/utils.lua b/lua/nvim-treesitter/utils.lua
index fff04bcfb..437385a34 100644
--- a/lua/nvim-treesitter/utils.lua
+++ b/lua/nvim-treesitter/utils.lua
@@ -6,7 +6,7 @@ local M = {}
function M.setup_commands(mod, commands)
for command_name, def in pairs(commands) do
- local call_fn = string.format("lua require'nvim-treesitter.%s'.commands.%s.run('<bang>')(<f-args>)", mod, command_name)
+ local call_fn = string.format("lua require'nvim-treesitter.%s'.commands.%s['run<bang>'](<f-args>)", mod, command_name)
local parts = vim.tbl_flatten({
"command!",
def.args,