From adbe65a8bd41f17398a985d4c474ba7f907bb5d4 Mon Sep 17 00:00:00 2001 From: Benjamin Chausse Date: Sun, 24 Sep 2023 03:23:52 -0400 Subject: Initial commit --- lua/ben/plugins/treesitter-text-objects.lua | 53 +++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 lua/ben/plugins/treesitter-text-objects.lua (limited to 'lua/ben/plugins/treesitter-text-objects.lua') diff --git a/lua/ben/plugins/treesitter-text-objects.lua b/lua/ben/plugins/treesitter-text-objects.lua new file mode 100644 index 0000000..bcf1b92 --- /dev/null +++ b/lua/ben/plugins/treesitter-text-objects.lua @@ -0,0 +1,53 @@ +return { + "nvim-treesitter/nvim-treesitter-textobjects", + event = { "BufReadPost", "BufNewFile" }, + dependencies = { + "nvim-treesitter/nvim-treesitter", + }, + config = function() + require("nvim-treesitter.configs").setup({ + textobjects = { + select = { + enable = true, + + -- Automatically jump forward to textobj, similar to targets.vim + lookahead = true, + + keymaps = { + -- You can use the capture groups defined in textobjects.scm + ["a="] = { query = "@assignment.outer", desc = "Select outer part of an assignment region" }, + ["i="] = { query = "@assignment.inner", desc = "Select inner part of an assignment region" }, + + ["a:"] = { query = "@parameter.outer", desc = "Select outer part of a parameter/field region" }, + ["i:"] = { query = "@parameter.inner", desc = "Select inner part of a parameter/field region" }, + + ["ai"] = { query = "@conditional.outer", desc = "Select outer part of a conditional region" }, + ["ii"] = { query = "@conditional.inner", desc = "Select inner part of a conditional region" }, + + ["al"] = { query = "@loop.outer", desc = "Select outer part of a loop region" }, + ["il"] = { query = "@loop.inner", desc = "Select inner part of a loop region" }, + + ["ab"] = { query = "@block.outer", desc = "Select outer part of a block region" }, -- overrides default text object block of parenthesis to parenthesis + ["ib"] = { query = "@block.inner", desc = "Select inner part of a block region" }, -- overrides default text object block of parenthesis to parenthesis + + ["af"] = { query = "@function.outer", desc = "Select outer part of a function region" }, + ["if"] = { query = "@function.inner", desc = "Select inner part of a function region" }, + + ["ac"] = { query = "@class.outer", desc = "Select outer part of a class region" }, + ["ic"] = { query = "@class.inner", desc = "Select inner part of a class region" }, + }, + include_surrounding_whitespace = true, + }, + swap = { + enable = true, + swap_next = { + ["on"] = "@parameter.inner", -- swap object under cursor with next + }, + swap_previous = { + ["op"] = "@parameter.inner", -- swap object under cursor with previous + }, + }, + }, + }) + end, +} -- cgit v1.2.3