return { { -- Rama `main`: reescritura completa, es la única que soporta Neovim >= 0.12. -- No soporta lazy-loading. "nvim-treesitter/nvim-treesitter", branch = "main", lazy = false, build = ":TSUpdate", config = function() require("pi.treesitter").setup() end, }, { "nvim-treesitter/nvim-treesitter-textobjects", branch = "main", dependencies = { "nvim-treesitter/nvim-treesitter" }, event = { "BufReadPre", "BufNewFile" }, config = function() require("nvim-treesitter-textobjects").setup { select = { lookahead = true, }, } local select = require "nvim-treesitter-textobjects.select" local objects = { ["af"] = "@function.outer", ["if"] = "@function.inner", ["ac"] = "@conditional.outer", ["ic"] = "@conditional.inner", ["al"] = "@loop.outer", ["il"] = "@loop.inner", } for lhs, query in pairs(objects) do vim.keymap.set({ "x", "o" }, lhs, function() select.select_textobject(query, "textobjects") end, { desc = "Textobject " .. query }) end end, }, { -- Se auto-inicializa desde su plugin/; en Neovim >= 0.9 no usa el sistema de -- módulos de nvim-treesitter, así que funciona igual con la rama `main`. "RRethy/nvim-treesitter-endwise", dependencies = { "nvim-treesitter/nvim-treesitter" }, event = { "BufReadPre", "BufNewFile" }, }, }