return { { "nvim-treesitter/nvim-treesitter", lazy = false, build = ":TSUpdate", opts = { indent = { enable = true }, highlight = { enable = true }, folds = { enable = true }, ensure_installed = { "bash", "diff", "html", "json", "lua", "luadoc", "luap", "markdown", "markdown_inline", "printf", "regex", "toml", "vim", "vimdoc", "xml", "yaml", }, }, config = function(_, opts) local ts = require "nvim-treesitter" if type(opts.ensure_installed) == "table" and #opts.ensure_installed > 0 then ts.install(opts.ensure_installed) end end, }, { "nvim-treesitter/nvim-treesitter-textobjects", opts = { move = { enable = true, set_jumps = true, keys = { goto_next_start = { ["]f"] = "@function.outer", ["]c"] = "@class.outer", ["]a"] = "@parameter.inner" }, goto_next_end = { ["]F"] = "@function.outer", ["]C"] = "@class.outer", ["]A"] = "@parameter.inner" }, goto_previous_start = { ["[f"] = "@function.outer", ["[c"] = "@class.outer", ["[a"] = "@parameter.inner" }, goto_previous_end = { ["[F"] = "@function.outer", ["[C"] = "@class.outer", ["[A"] = "@parameter.inner" }, }, }, }, }, }