home: vim: tree-sitter: migrate textobjects config
This uses the new configuration format. I might DRY it up at some point in the future, though I probably won't.
This commit is contained in:
parent
dbd7e077e5
commit
526f8bb6e2
1 changed files with 62 additions and 41 deletions
|
|
@ -1,4 +1,56 @@
|
|||
local ts_config = require("nvim-treesitter.configs")
|
||||
local ts_select = require("nvim-treesitter-textobjects.select")
|
||||
local ts_move = require("nvim-treesitter-textobjects.move")
|
||||
local utils = require("ambroisie.utils")
|
||||
local wk = require("which-key")
|
||||
|
||||
local function select_textobject(query)
|
||||
return utils.partial(ts_select.select_textobject, query)
|
||||
end
|
||||
|
||||
local function goto_next_start(query)
|
||||
return utils.partial(ts_move.goto_next_start, query)
|
||||
end
|
||||
local function goto_next_end(query)
|
||||
return utils.partial(ts_move.goto_next_end, query)
|
||||
end
|
||||
local function goto_previous_start(query)
|
||||
return utils.partial(ts_move.goto_previous_start, query)
|
||||
end
|
||||
local function goto_previous_end(query)
|
||||
return utils.partial(ts_move.goto_previous_end, query)
|
||||
end
|
||||
|
||||
local objects = {
|
||||
mode = { "x", "o" },
|
||||
{ "aa", select_textobject("@parameter.outer"), desc = "a parameter" },
|
||||
{ "ia", select_textobject("@parameter.inner"), desc = "inner parameter" },
|
||||
{ "ab", select_textobject("@block.outer"), desc = "a block" },
|
||||
{ "ib", select_textobject("@block.inner"), desc = "inner block" },
|
||||
{ "ac", select_textobject("@class.outer"), desc = "a class" },
|
||||
{ "ic", select_textobject("@class.inner"), desc = "inner class" },
|
||||
{ "af", select_textobject("@function.outer"), desc = "a function" },
|
||||
{ "if", select_textobject("@function.inner"), desc = "inner function" },
|
||||
{ "ak", select_textobject("@comment.outer"), desc = "a comment" },
|
||||
{ "aS", select_textobject("@statement.outer"), desc = "a statement" },
|
||||
}
|
||||
local moves = {
|
||||
mode = { "n", "x", "o" },
|
||||
-- Next start
|
||||
{ "]m", goto_next_start("@function.outer"), desc = "Next method start" },
|
||||
{ "]S", goto_next_start("@statement.outer"), desc = "Next statement start" },
|
||||
{ "]]", goto_next_start("@class.outer"), desc = "Next class start" },
|
||||
-- Next end
|
||||
{ "]M", goto_next_end("@function.outer"), desc = "Next method end" },
|
||||
{ "][", goto_next_end("@class.outer"), desc = "Next class end" },
|
||||
-- Previous start
|
||||
{ "[m", goto_previous_start("@function.outer"), desc = "Previous method start" },
|
||||
{ "[S", goto_previous_start("@statement.outer"), desc = "Previous statement start" },
|
||||
{ "[[", goto_previous_start("@class.outer"), desc = "Previous class start" },
|
||||
-- Previous end
|
||||
{ "[M", goto_previous_end("@function.outer"), desc = "Previous method end" },
|
||||
{ "[]", goto_previous_end("@class.outer"), desc = "Previous class end" },
|
||||
}
|
||||
|
||||
ts_config.setup({
|
||||
highlight = {
|
||||
|
|
@ -9,46 +61,15 @@ ts_config.setup({
|
|||
indent = {
|
||||
enable = true,
|
||||
},
|
||||
textobjects = {
|
||||
select = {
|
||||
enable = true,
|
||||
-- Jump to matching text objects
|
||||
lookahead = true,
|
||||
keymaps = {
|
||||
["aa"] = { query = "@parameter.outer", desc = "a parameter" },
|
||||
["ia"] = { query = "@parameter.inner", desc = "inner parameter" },
|
||||
["ab"] = { query = "@block.outer", desc = "a block" },
|
||||
["ib"] = { query = "@block.inner", desc = "inner block" },
|
||||
["ac"] = { query = "@class.outer", desc = "a class" },
|
||||
["ic"] = { query = "@class.inner", desc = "inner class" },
|
||||
["af"] = { query = "@function.outer", desc = "a function" },
|
||||
["if"] = { query = "@function.inner", desc = "inner function" },
|
||||
["ak"] = { query = "@comment.outer", desc = "a comment" },
|
||||
["aS"] = { query = "@statement.outer", desc = "a statement" },
|
||||
},
|
||||
},
|
||||
move = {
|
||||
enable = true,
|
||||
-- Add to jump list
|
||||
set_jumps = true,
|
||||
goto_next_start = {
|
||||
["]m"] = { query = "@function.outer", desc = "Next method start" },
|
||||
["]S"] = { query = "@statement.outer", desc = "Next statement start" },
|
||||
["]]"] = { query = "@class.outer", desc = "Next class start" },
|
||||
},
|
||||
goto_next_end = {
|
||||
["]M"] = { query = "@function.outer", desc = "Next method end" },
|
||||
["]["] = { query = "@class.outer", desc = "Next class end" },
|
||||
},
|
||||
goto_previous_start = {
|
||||
["[m"] = { query = "@function.outer", desc = "Previous method start" },
|
||||
["[S"] = { query = "@statement.outer", desc = "Previous statement start" },
|
||||
["[["] = { query = "@class.outer", desc = "Previous class start" },
|
||||
},
|
||||
goto_previous_end = {
|
||||
["[M"] = { query = "@function.outer", desc = "Previous method end" },
|
||||
["[]"] = { query = "@class.outer", desc = "Previous class end" },
|
||||
},
|
||||
},
|
||||
})
|
||||
|
||||
require("nvim-treesitter-textobjects").setup({
|
||||
select = {
|
||||
-- Jump to matching text objects
|
||||
lookahead = true,
|
||||
},
|
||||
move = {
|
||||
-- Add to jump list
|
||||
set_jumps = true,
|
||||
},
|
||||
})
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue