aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChristian Clason <c.clason@uni-graz.at>2025-05-29 12:25:13 +0200
committerChristian Clason <ch.clason+github@icloud.com>2025-05-29 20:08:10 +0200
commitff770d718b34db10e33d18594153b4d1e0954882 (patch)
treec563416adeea24f474fe3ea5d2c36753ae6b5e93
parentfeat(api): expose list of available and installed languages (diff)
downloadnvim-treesitter-ff770d718b34db10e33d18594153b4d1e0954882.tar
nvim-treesitter-ff770d718b34db10e33d18594153b4d1e0954882.tar.gz
nvim-treesitter-ff770d718b34db10e33d18594153b4d1e0954882.tar.bz2
nvim-treesitter-ff770d718b34db10e33d18594153b4d1e0954882.tar.lz
nvim-treesitter-ff770d718b34db10e33d18594153b4d1e0954882.tar.xz
nvim-treesitter-ff770d718b34db10e33d18594153b4d1e0954882.tar.zst
nvim-treesitter-ff770d718b34db10e33d18594153b4d1e0954882.zip
fix(install): don't print operation summary by default
Problem: People complain about noisy `install()`. Solution: Gate operation summary behind `summary` install option (default false, set to true for interactive `:TS*` commands).
-rw-r--r--doc/nvim-treesitter.txt20
-rw-r--r--lua/nvim-treesitter/install.lua25
-rw-r--r--plugin/nvim-treesitter.lua7
-rwxr-xr-xscripts/install-parsers.lua4
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