local disabled = {} local ft_lang_map = {} vim.api.nvim_create_autocmd("FileType", { group = vim.api.nvim_create_augroup("treesitter_highlight_augroup", {clear = true}), callback = function(ev) local buf = ev.buf if vim.api.nvim_buf_is_loaded(buf) then local ft = vim.bo[buf].filetype if not disabled[ft] then 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 else if not vim.treesitter.highlighter.active[buf] then vim.treesitter.highlighter.new(parser) end end end end --(when (vim.api.nvim_buf_is_loaded buf) -- (let [ft (. vim.bo buf :filetype)] -- (when (not (. disabled ft)) -- (case (. ft-lang-map ft) -- lang (do -- (vim.treesitter.language.register lang ft) -- (tset ft-lang-map ft nil))) -- (case (vim.treesitter.get_parser buf nil {:error false}) -- nil (tset disabled ft true) -- parser (do -- (when (not (. vim.treesitter.highlighter.active buf)) -- (vim.treesitter.highlighter.new parser)) -- (when (vim.treesitter.query.get ft :folds) -- (set vim.wo.foldmethod :expr) -- (set vim.wo.foldexpr "v:lua.vim.treesitter.foldexpr()"))))))))) end })