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 })