summaryrefslogtreecommitdiff
path: root/lua
diff options
context:
space:
mode:
authorJosh Rahm <rahm@google.com>2023-01-25 23:09:54 +0000
committerJosh Rahm <rahm@google.com>2023-01-25 23:09:54 +0000
commit3edb113742ea3e555695c5b88eeef2572021d2a8 (patch)
treeff6e9441a69ff385c8f705be612a02b61b57fc54 /lua
parent57c7f8c5512a73825f5e37fc94960871096de855 (diff)
downloadconfig.vim-3edb113742ea3e555695c5b88eeef2572021d2a8.tar.gz
config.vim-3edb113742ea3e555695c5b88eeef2572021d2a8.tar.bz2
config.vim-3edb113742ea3e555695c5b88eeef2572021d2a8.zip
Add treesitter-textobjects
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,
+ },
+ },
+}
+