2022-04-16 17:49:17 +02:00
|
|
|
if vim.g.loaded_nvim_treesitter then
|
|
|
|
|
return
|
|
|
|
|
end
|
|
|
|
|
vim.g.loaded_nvim_treesitter = true
|
|
|
|
|
|
|
|
|
|
local api = vim.api
|
|
|
|
|
|
2023-06-12 09:54:30 -06:00
|
|
|
local function complete_available_parsers(arglead)
|
2024-04-19 18:12:54 +01:00
|
|
|
return vim.tbl_filter(
|
|
|
|
|
--- @param v string
|
|
|
|
|
function(v)
|
|
|
|
|
return v:find(arglead) ~= nil
|
|
|
|
|
end,
|
2024-04-14 16:25:28 +02:00
|
|
|
require('nvim-treesitter.config').get_available()
|
2024-04-19 18:12:54 +01:00
|
|
|
)
|
2023-06-12 09:54:30 -06:00
|
|
|
end
|
|
|
|
|
|
|
|
|
|
local function complete_installed_parsers(arglead)
|
2024-04-19 18:12:54 +01:00
|
|
|
return vim.tbl_filter(
|
|
|
|
|
--- @param v string
|
|
|
|
|
function(v)
|
|
|
|
|
return v:find(arglead) ~= nil
|
|
|
|
|
end,
|
2025-05-29 12:04:37 +02:00
|
|
|
require('nvim-treesitter.config').get_installed()
|
2024-04-19 18:12:54 +01:00
|
|
|
)
|
2023-06-12 09:54:30 -06:00
|
|
|
end
|
|
|
|
|
|
|
|
|
|
-- create user commands
|
|
|
|
|
api.nvim_create_user_command('TSInstall', function(args)
|
2025-05-29 12:25:13 +02:00
|
|
|
require('nvim-treesitter.install').install(args.fargs, { force = args.bang, summary = true })
|
2023-06-12 09:54:30 -06:00
|
|
|
end, {
|
|
|
|
|
nargs = '+',
|
|
|
|
|
bang = true,
|
|
|
|
|
bar = true,
|
|
|
|
|
complete = complete_available_parsers,
|
|
|
|
|
desc = 'Install treesitter parsers',
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
api.nvim_create_user_command('TSInstallFromGrammar', function(args)
|
|
|
|
|
require('nvim-treesitter.install').install(args.fargs, {
|
2024-04-18 09:44:38 +02:00
|
|
|
generate = true,
|
2025-05-29 12:25:13 +02:00
|
|
|
summary = true,
|
2023-06-12 09:54:30 -06:00
|
|
|
force = args.bang,
|
|
|
|
|
})
|
|
|
|
|
end, {
|
|
|
|
|
nargs = '+',
|
|
|
|
|
bang = true,
|
|
|
|
|
bar = true,
|
|
|
|
|
complete = complete_available_parsers,
|
|
|
|
|
desc = 'Install treesitter parsers from grammar',
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
api.nvim_create_user_command('TSUpdate', function(args)
|
2025-05-29 12:25:13 +02:00
|
|
|
require('nvim-treesitter.install').update(args.fargs, { summary = true })
|
2023-06-12 09:54:30 -06:00
|
|
|
end, {
|
|
|
|
|
nargs = '*',
|
|
|
|
|
bar = true,
|
|
|
|
|
complete = complete_installed_parsers,
|
|
|
|
|
desc = 'Update installed treesitter parsers',
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
api.nvim_create_user_command('TSUninstall', function(args)
|
2025-05-29 12:25:13 +02:00
|
|
|
require('nvim-treesitter.install').uninstall(args.fargs, { summary = true })
|
2023-06-12 09:54:30 -06:00
|
|
|
end, {
|
|
|
|
|
nargs = '+',
|
|
|
|
|
bar = true,
|
|
|
|
|
complete = complete_installed_parsers,
|
|
|
|
|
desc = 'Uninstall treesitter parsers',
|
2022-04-16 17:49:17 +02:00
|
|
|
})
|
2023-05-22 14:35:25 +01:00
|
|
|
|
|
|
|
|
api.nvim_create_user_command('TSLog', function()
|
|
|
|
|
require('nvim-treesitter.log').show()
|
|
|
|
|
end, {
|
|
|
|
|
desc = 'View log messages',
|
|
|
|
|
})
|