53 lines
1.1 KiB
Lua
53 lines
1.1 KiB
Lua
return {
|
|
"nvim-treesitter/nvim-treesitter",
|
|
event = { "BufReadPost", "BufNewFile" },
|
|
config = function()
|
|
local ts = require("nvim-treesitter")
|
|
|
|
ts.setup({
|
|
ensure_installed = {
|
|
"python",
|
|
"go",
|
|
"kotlin",
|
|
"dart",
|
|
"lua",
|
|
"bash",
|
|
"json",
|
|
"yaml",
|
|
"markdown",
|
|
"vim",
|
|
"vimdoc",
|
|
},
|
|
sync_install = false,
|
|
auto_install = true,
|
|
highlight = {
|
|
enable = true,
|
|
additional_vim_regex_highlighting = false,
|
|
},
|
|
})
|
|
|
|
pcall(vim.treesitter.language.register, "html", "gotmpl")
|
|
|
|
vim.api.nvim_create_autocmd("FileType", {
|
|
group = vim.api.nvim_create_augroup("TreesitterOnDemand", { clear = true }),
|
|
callback = function(args)
|
|
local ft = args.match
|
|
local lang = vim.treesitter.language.get_lang(ft) or ft
|
|
|
|
local installed = ts.get_installed and ts.get_installed() or {}
|
|
if not vim.list_contains(installed, lang) then
|
|
pcall(function()
|
|
local ok = ts.install(lang)
|
|
if ok and ok.wait then
|
|
ok:wait()
|
|
end
|
|
end)
|
|
end
|
|
|
|
pcall(vim.treesitter.start, args.buf, lang)
|
|
end,
|
|
desc = "enable nvim-treesitter and install parser if not installed",
|
|
})
|
|
end,
|
|
}
|