78 lines
2.4 KiB
Lua

-- Inspiration: https://www.josean.com/posts/nvim-treesitter-and-textobjects
return {
{
"nvim-treesitter/nvim-treesitter",
build = ":TSUpdate",
event = { "BufReadPre", "BufNewFile" },
dependencies = {
"nvim-treesitter/nvim-treesitter-textobjects",
},
config = function ()
require("nvim-treesitter.configs").setup({
sync_install = false,
auto_install = true,
highlight = { enable = true },
indent = { enable = true },
ensure_installed = { "lua", "vim", "rust" },
incremental_selection = {
enable = true,
keymaps = {
init_selection = "<C-space>",
node_incremental = "<C-space>",
scope_incremental = false,
node_decremental = "<bs>",
},
},
})
end
},
{
"nvim-treesitter/nvim-treesitter-textobjects",
lazy = true,
config = function ()
require("nvim-treesitter.configs").setup({
textobjects = {
select = {
enable = true,
lookahead = true,
keymaps = {
-- Assignment
["a="] = { query = "@assignment.outer", desc = "assignment" },
["i="] = { query = "@assignment.inner", desc = "assignment" },
-- Arguments
["aa"] = { query = "@parameter.outer", desc = "arguments" },
["ia"] = { query = "@parameter.inner", desc = "arguments" },
-- If
["ai"] = { query = "@conditional.outer", desc = "if" },
["ii"] = { query = "@conditional.inner", desc = "if" },
-- Loop
["al"] = { query = "@loop.outer", desc = "loop" },
["il"] = { query = "@loop.inner", desc = "loop" },
-- Function call
["af"] = { query = "@call.outer", desc = "function call" },
["if"] = { query = "@call.inner", desc = "function call" },
-- Method/Funciton definition
["am"] = { query = "@function.outer", desc = "method/funciton definition" },
["im"] = { query = "@function.inner", desc = "method/funciton definition" },
-- Class
["ac"] = { query = "@class.outer", desc = "class" },
["ic"] = { query = "@class.inner", desc = "class" },
}
}
}
})
end,
},
}