---@param tbl table ---@return table local tbl_uniq = function(tbl) ---@type table local added = {} local res = {} res = vim.tbl_filter(function(k) if added[k] then return false end added[k] = true return true end, tbl) return res end return { { "nvim-treesitter/nvim-treesitter", --enabled = false, build = ":TSUpdate", cmd = { "TSUpdateSync" }, event = { "BufReadPost", "BufNewFile" }, --init = function() --vim.o.foldmethod = "expr" --vim.o.foldexpr = "nvim_treesitter#foldexpr()" --end, opts = { indent = { enable = true }, ensure_installed = { "query" }, ignore_install = {}, highlight = { enable = true, additional_vim_regex_highlighting = false, -- disable for big files disable = function(_, buf) local max_filesize = 100 * 1024 -- 100 KB local ok, stats = pcall(vim.loop.fs_stat, vim.api.nvim_buf_get_name(buf)) if ok and stats and stats.size > max_filesize then return true end end, }, query_linter = { enable = true, use_virtual_text = true, lint_events = { "BufWrite", "CursorHold" }, }, }, config = function(_, opts) if type(opts.ensure_installed) == "table" then opts.ensure_installed = tbl_uniq(opts.ensure_installed) end if type(opts.ignore_install) == "table" then opts.ignore_install = tbl_uniq(opts.ignore_install) end require("nvim-treesitter.configs").setup(opts) end, }, }