-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathtreesj.lua
44 lines (39 loc) · 1.36 KB
/
treesj.lua
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
local tsj = require('treesj')
tsj.setup({
use_default_keymaps = false,
max_join_length = 1024,
})
---@param preset table?
---@return nil
function _G.tsj_split_recursive(_, preset)
require('treesj.format')._format(
'split',
vim.tbl_deep_extend('force', preset or {}, {
split = { recursive = true },
})
)
end
---@param preset table?
---@return nil
function _G.tsj_toggle_recursive(_, preset)
require('treesj.format')._format(
nil,
vim.tbl_deep_extend('force', preset or {}, {
split = { recursive = true },
join = { recursive = true },
})
)
end
---Split current treesitter node recursively
local function tsj_split_recursive()
vim.opt.operatorfunc = 'v:lua.tsj_split_recursive'
vim.api.nvim_feedkeys('g@l', 'nx', true)
end
-- stylua: ignore start
vim.keymap.set('n', '<M-C-K>', tsj.join, { desc = 'Join current treesitter node' })
vim.keymap.set('n', '<M-C-Up>', tsj.join, { desc = 'Join current treesitter node' })
vim.keymap.set('n', '<M-NL>', tsj.split, { desc = 'Split current treesitter node' })
vim.keymap.set('n', '<M-C-Down>', tsj.split, { desc = 'Split current treesitter node' })
vim.keymap.set('n', 'g<M-NL>', tsj_split_recursive, { desc = 'Split current treesitter node recursively' })
vim.keymap.set('n', 'g<M-C-Down>', tsj_split_recursive, { desc = 'Split current treesitter node recursively' })
-- stylua: ignore end