diff options
| author | Mohammad Reza Karimi <m.r.karimi.j@gmail.com> | 2026-01-20 15:55:27 -0500 |
|---|---|---|
| committer | Mohammad Reza Karimi <m.r.karimi.j@gmail.com> | 2026-01-20 15:55:27 -0500 |
| commit | aa5717f00fd14430c80939a68d7107c26de6e554 (patch) | |
| tree | 784e99d9b018e0554369c41cb33e2e195e28d3c6 /plugin/20_treesitter.lua | |
first commit
Diffstat (limited to 'plugin/20_treesitter.lua')
| -rw-r--r-- | plugin/20_treesitter.lua | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/plugin/20_treesitter.lua b/plugin/20_treesitter.lua new file mode 100644 index 0000000..dcc7df2 --- /dev/null +++ b/plugin/20_treesitter.lua @@ -0,0 +1,33 @@ +local disabled = { latex = true, tex = true } +local ft_lang_map = {} + +vim.api.nvim_create_autocmd("FileType", { + group = vim.api.nvim_create_augroup("treesitter_highlight_group", { clear = true }), + callback = function(ev) + local buf = ev.buf + if not vim.api.nvim_buf_is_loaded(buf) then return end + + local ft = vim.bo[buf].filetype + if disabled[ft] then return end + + if ft_lang_map[ft] then + vim.treesitter.language.register(ft_lang_map[ft], ft) + ft_lang_map[ft] = nil + end + + local parser = vim.treesitter.get_parser(buf, nil, { error = false }) + if parser == nil then + disabled[ft] = true + return + end + + if not vim.treesitter.highlighter.active[buf] then + vim.treesitter.highlighter.new(parser) + end + + if vim.treesitter.query.get(ft, "folds") then + vim.wo.foldmethod = "expr" + vim.wo.foldexpr = "v:lua.vim.treesitter.foldexpr()" + end + end +}) |
