summaryrefslogtreecommitdiff
path: root/lua
diff options
context:
space:
mode:
Diffstat (limited to 'lua')
-rw-r--r--lua/treesitter-textobjects-setup.lua49
1 files changed, 49 insertions, 0 deletions
diff --git a/lua/treesitter-textobjects-setup.lua b/lua/treesitter-textobjects-setup.lua
new file mode 100644
index 0000000..bcb4bd9
--- /dev/null
+++ b/lua/treesitter-textobjects-setup.lua
@@ -0,0 +1,49 @@
+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
+ ["am"] = "@function.outer",
+ ["im"] = "@function.inner",
+ ["af"] = "@function.outer",
+ ["if"] = "@function.inner",
+ ["ac"] = "@class.outer",
+ ["aa"] = "@parameter.outer",
+ ["ia"] = "@parameter.inner",
+ -- You can optionally set descriptions to the mappings (used in the desc parameter of
+ -- nvim_buf_set_keymap) which plugins like which-key display
+ ["ic"] = { query = "@class.inner", desc = "Select inner part of a class region" },
+ },
+ -- You can choose the select mode (default is charwise 'v')
+ --
+ -- Can also be a function which gets passed a table with the keys
+ -- * query_string: eg '@function.inner'
+ -- * method: eg 'v' or 'o'
+ -- and should return the mode ('v', 'V', or '<c-v>') or a table
+ -- mapping query_strings to modes.
+ selection_modes = {
+ ['@parameter.outer'] = 'v', -- charwise
+ ['@function.outer'] = 'V', -- linewise
+ ['@function.inner'] = 'V', -- linewise
+ },
+ -- If you set this to `true` (default is `false`) then any textobject is
+ -- extended to include preceding or succeeding whitespace. Succeeding
+ -- whitespace has priority in order to act similarly to eg the built-in
+ -- `ap`.
+ --
+ -- Can also be a function which gets passed a table with the keys
+ -- * query_string: eg '@function.inner'
+ -- * selection_mode: eg 'v'
+ -- and should return true of false
+ include_surrounding_whitespace = function (q)
+ return string.match(q.query_string, '.inner$') == nil
+ end,
+ },
+ },
+}
+