diff options
| -rw-r--r-- | doc/nvim-treesitter.txt | 20 | ||||
| -rw-r--r-- | lua/nvim-treesitter/install.lua | 25 | ||||
| -rw-r--r-- | plugin/nvim-treesitter.lua | 7 | ||||
| -rwxr-xr-x | scripts/install-parsers.lua | 4 |
4 files changed, 43 insertions, 13 deletions
diff --git a/doc/nvim-treesitter.txt b/doc/nvim-treesitter.txt index 9ba6909b7..f77cb061b 100644 --- a/doc/nvim-treesitter.txt +++ b/doc/nvim-treesitter.txt @@ -125,16 +125,21 @@ install({languages} [, {opts}]) *nvim-treesitter.install()* compiling. • {max_jobs} (`integer?`) limit parallel tasks (useful in combination with {generate} on memory-limited systems). + • {summary} (`boolean?`, default `false`) print summary of + successful and total operations for multiple languages. -uninstall({languages}) *nvim-treesitter.uninstall()* +uninstall({languages} [, {opts}]) *nvim-treesitter.uninstall()* Remove the parser and queries for the specified language(s). Parameters: ~ • {languages} `(string[]|string)` (List of) languages or tiers (`stable`, `unstable`) to update. + • {opts} `(table?)` Optional parameters: + • {summary} (`boolean?`, default `false`) print summary of + successful and total operations for multiple languages. -update([{languages}]) *nvim-treesitter.update()* +update([{languages}, {opts}]) *nvim-treesitter.update()* Update the parsers and queries if older than the revision specified in the manifest. @@ -147,6 +152,11 @@ update([{languages}]) *nvim-treesitter.update()* Parameters: ~ • {languages} `(string[]|string)?` (List of) languages or tiers to update (default: all installed). + • {opts} `(table?)` Optional parameters: + • {max_jobs} (`integer?`) limit parallel tasks (useful in + combination with {generate} on memory-limited systems). + • {summary} (`boolean?`, default `false`) print summary of + successful and total operations for multiple languages. indentexpr() *nvim-treesitter.indentexpr()* @@ -165,6 +175,12 @@ get_installed([{type}]) *nvim-treesitter.get_installed()* Return list of languages installed via `nvim-treesitter`. + Note: This only searches `nvim-treesitter`'s (configured or default) + installation directory; parsers and queries from other sources can be + placed anywhere on 'runtimepath' and are not included. To list all, e.g., + parsers that are installed from any source, use >lua + vim.api.nvim_get_runtime_file('parser/*', true) +< Parameters: ~ • {type} `('queries'|parsers'?)` If specified, only show languages with installed queries or parsers, respectively. diff --git a/lua/nvim-treesitter/install.lua b/lua/nvim-treesitter/install.lua index eb55d0191..a5a2eb2a5 100644 --- a/lua/nvim-treesitter/install.lua +++ b/lua/nvim-treesitter/install.lua @@ -437,6 +437,7 @@ end ---@field force? boolean ---@field generate? boolean ---@field max_jobs? integer +---@field summary? boolean --- Install a parser ---@async @@ -467,7 +468,9 @@ local function install(languages, options) join(options and options.max_jobs or MAX_JOBS, task_funs) if #task_funs > 1 then a.schedule() - log.info('Installed %d/%d languages', done, #task_funs) + if options and options.summary then + log.info('Installed %d/%d languages', done, #task_funs) + end end return done == #task_funs end @@ -481,7 +484,8 @@ M.install = a.async(function(languages, options) end) ---@param languages? string[]|string -M.update = a.async(function(languages) +---@param options? InstallOptions +M.update = a.async(function(languages, options) reload_parsers() if not languages or #languages == 0 then languages = 'all' @@ -489,10 +493,16 @@ M.update = a.async(function(languages) languages = config.norm_languages(languages, { missing = true, unsupported = true }) languages = vim.tbl_filter(needs_update, languages) ---@type string[] + local summary = options and options.summary if #languages > 0 then - return install(languages, { force = true }) + return install( + languages, + { force = true, summary = summary, max_jobs = options and options.max_jobs } + ) else - log.info('All parsers are up-to-date') + if summary then + log.info('All parsers are up-to-date') + end return true end end) @@ -531,7 +541,8 @@ local function uninstall_lang(logger, lang, parser, queries) end ---@param languages string[]|string -M.uninstall = a.async(function(languages) +---@param options? InstallOptions +M.uninstall = a.async(function(languages, options) vim.api.nvim_exec_autocmds('User', { pattern = 'TSUpdate' }) languages = config.norm_languages(languages or 'all', { missing = true, dependencies = true }) @@ -560,7 +571,9 @@ M.uninstall = a.async(function(languages) join(MAX_JOBS, task_funs) if #task_funs > 1 then a.schedule() - log.info('Uninstalled %d/%d languages', done, #task_funs) + if options and options.summary then + log.info('Uninstalled %d/%d languages', done, #task_funs) + end end end) diff --git a/plugin/nvim-treesitter.lua b/plugin/nvim-treesitter.lua index 8bf2dbfde..adeb41425 100644 --- a/plugin/nvim-treesitter.lua +++ b/plugin/nvim-treesitter.lua @@ -27,7 +27,7 @@ end -- create user commands api.nvim_create_user_command('TSInstall', function(args) - require('nvim-treesitter.install').install(args.fargs, { force = args.bang }) + require('nvim-treesitter.install').install(args.fargs, { force = args.bang, summary = true }) end, { nargs = '+', bang = true, @@ -39,6 +39,7 @@ end, { api.nvim_create_user_command('TSInstallFromGrammar', function(args) require('nvim-treesitter.install').install(args.fargs, { generate = true, + summary = true, force = args.bang, }) end, { @@ -50,7 +51,7 @@ end, { }) api.nvim_create_user_command('TSUpdate', function(args) - require('nvim-treesitter.install').update(args.fargs) + require('nvim-treesitter.install').update(args.fargs, { summary = true }) end, { nargs = '*', bar = true, @@ -59,7 +60,7 @@ end, { }) api.nvim_create_user_command('TSUninstall', function(args) - require('nvim-treesitter.install').uninstall(args.fargs) + require('nvim-treesitter.install').uninstall(args.fargs, { summary = true }) end, { nargs = '+', bar = true, diff --git a/scripts/install-parsers.lua b/scripts/install-parsers.lua index e3804cab8..2d083f3c3 100755 --- a/scripts/install-parsers.lua +++ b/scripts/install-parsers.lua @@ -19,10 +19,10 @@ end vim.opt.runtimepath:append('.') ---@type async.Task -local task = update and require('nvim-treesitter').update('all') +local task = update and require('nvim-treesitter').update('all', { summary = true }) or require('nvim-treesitter').install( #parsers > 0 and parsers or 'all', - { force = true, generate = generate, max_jobs = max_jobs } + { force = true, summary = true, generate = generate, max_jobs = max_jobs } ) local ok, err_or_ok = task:pwait(1800000) -- wait max. 30 minutes |
