-- run ":TSUpdate" after plugin update -- If hooks need to run on install, run this before `vim.pack.add()` vim.api.nvim_create_autocmd("PackChanged", { group = vim.api.nvim_create_augroup("nvim-treesitter-update", { clear = true }), callback = function(ev) local name, kind = ev.data.spec.name, ev.data.kind if name == "nvim-treesitter" and kind == "update" then if not ev.data.active then vim.cmd.packadd("nvim-treesitter") end vim.cmd("TSUpdate") print("TSUpdate done.") end end, }) vim.pack.add({ { src = "https://github.com/nvim-treesitter/nvim-treesitter-textobjects", version = "master" }, { src = "https://github.com/nvim-treesitter/nvim-treesitter", version = "master" }, }) local ok, configs = pcall(require, "nvim-treesitter.configs") if ok then configs.setup({ highlight = { enable = true, }, textobjects = { select = { enable = true, lookahead = true, keymaps = { ["aa"] = "@parameter.outer", ["ia"] = "@parameter.inner", ["af"] = "@function.outer", ["if"] = "@function.inner", ["ac"] = "@class.outer", ["ic"] = "@class.inner", ["al"] = "@call.outer", ["il"] = "@call.inner", ["ao"] = "@loop.outer", ["io"] = "@loop.inner", ["ad"] = "@conditional.outer", ["id"] = "@conditional.inner", ["ar"] = "@return.outer", ["ir"] = "@return.inner", ["as"] = "@statement.outer", ["ag"] = "@assignment.outer", ["ig"] = "@assignment.inner", }, }, move = { enable = true, set_jumps = true, goto_next_start = { ["]m"] = "@function.outer", ["]]"] = "@class.outer", }, goto_next_end = { ["]M"] = "@function.outer", ["]["] = "@class.outer", }, goto_previous_start = { ["[m"] = "@function.outer", ["[["] = "@class.outer", }, goto_previous_end = { ["[M"] = "@function.outer", ["[]"] = "@class.outer", }, }, swap = { enable = true, swap_next = { ["p"] = "@parameter.inner", }, swap_previous = { ["P"] = "@parameter.inner", }, }, }, }) else print("plugin nvim-treesitter.configs missing") end