return { { "nvim-treesitter/nvim-treesitter", build = ":TSUpdate", event = { "BufReadPost", "BufNewFile" }, dependencies = { "nvim-treesitter/nvim-treesitter-textobjects", }, opts = { ensure_installed = { "lua", "rust", "typescript", "javascript", "svelte", "java", "latex", "markdown", "markdown_inline", "yaml", "toml", "bash", "html", "css", "jinja", "json", "vim", "vimdoc", "regex", }, auto_install = true, highlight = { enable = true, additional_vim_regex_highlighting = { "latex" }, -- needed for vimtex }, indent = { enable = true }, incremental_selection = { enable = true, keymaps = { init_selection = "", node_incremental = "", scope_incremental = false, node_decremental = "", }, }, textobjects = { select = { enable = true, lookahead = true, keymaps = { ["am"] = "@function.outer", ["im"] = "@function.inner", ["ac"] = "@class.outer", ["ic"] = "@class.inner", ["a,"] = "@parameter.outer", ["i,"] = "@parameter.inner", }, }, move = { enable = true, set_jumps = true, goto_next_start = { ["]m"] = "@function.outer", ["]c"] = "@class.outer", }, goto_next_end = { ["]M"] = "@function.outer", ["]C"] = "@class.outer", }, goto_previous_start = { ["[m"] = "@function.outer", ["[c"] = "@class.outer", }, goto_previous_end = { ["[M"] = "@function.outer", ["[C"] = "@class.outer", }, }, }, }, config = function(_, opts) require("nvim-treesitter.configs").setup(opts) end, }, }