57 lines
1.1 KiB
Lua
57 lines
1.1 KiB
Lua
return {
|
|
'nvim-treesitter/nvim-treesitter',
|
|
branch = 'main',
|
|
build = ':TSUpdate',
|
|
config = function()
|
|
local ts = require('nvim-treesitter')
|
|
|
|
local parsers = {
|
|
'lua',
|
|
'vim',
|
|
'vimdoc',
|
|
'rust',
|
|
'typescript',
|
|
'tsx',
|
|
'javascript',
|
|
'jsx',
|
|
'html',
|
|
'css',
|
|
'scss',
|
|
'json',
|
|
'sql',
|
|
'nix',
|
|
'bash',
|
|
'yaml',
|
|
'dockerfile',
|
|
'markdown',
|
|
'markdown_inline',
|
|
'c',
|
|
'cpp',
|
|
'python',
|
|
'toml',
|
|
'astro',
|
|
'vue',
|
|
'java',
|
|
}
|
|
|
|
for _, parser in ipairs(parsers) do
|
|
ts.install(parser)
|
|
end
|
|
|
|
-- Filetypes whose name differs from the parser name
|
|
local ft_to_parser = {
|
|
typescriptreact = 'tsx',
|
|
javascriptreact = 'jsx',
|
|
}
|
|
|
|
vim.api.nvim_create_autocmd('FileType', {
|
|
callback = function(ev)
|
|
local ft = ev.match
|
|
local lang = ft_to_parser[ft] or ft
|
|
if pcall(vim.treesitter.start, ev.buf, lang) then
|
|
vim.bo[ev.buf].indentexpr = "v:lua.require'nvim-treesitter'.indentexpr()"
|
|
end
|
|
end,
|
|
})
|
|
end,
|
|
}
|