return { "nvim-treesitter/nvim-treesitter", dependencies = { "nvim-treesitter/nvim-treesitter-textobjects", }, build = ":TSUpdate", main = "nvim-treesitter.configs", opts = { ensure_installed = { "bash", "c", "diff", "html", "jsonc", "lua", "luadoc", "markdown", "markdown_inline", "query", "vim", "vimdoc", }, auto_install = true, highlight = { enable = true, additional_vim_regex_highlighting = { "ruby" }, }, indent = { enable = true, disable = { "ruby" }, }, textobjects = { select = { enable = true, lookahead = true, keymaps = { ["af"] = { query = "@function.outer", desc = "Select around function" }, ["if"] = { query = "@function.inner", desc = "Select inside of function" }, ["ac"] = { query = "@class.outer", desc = "Select around class" }, ["ic"] = { query = "@class.inner", desc = "Select inside class" }, ["as"] = { query = "@scope", query_group = "locals", desc = "Select around scope" }, }, selection_modes = { ["@parameter.outer"] = "v", ["@function.outer"] = "v", ["@class.outer"] = "", }, include_surrounding_whitespace = true, }, }, }, }