nviiim/after/plugin/treesitter.lua
Robert Morrison 6677e197e9
feat(treesitter): Change to new rainbow
Change to new rainbow plugin, also make config more robust to plugin
issues.
2023-05-05 19:12:41 +01:00

115 lines
2.8 KiB
Lua

local ok = pcall(require, 'nvim-treesitter')
if not ok then
return
end
local config = {
ensure_installed = {
"c",
"cpp",
"c_sharp",
"markdown",
"latex",
"go",
"rust"
},
sync_install = false,
highlight = {
enable = true,
},
incremental_selection = {
enable = true,
keymaps = {
init_selection = '<CR>',
scope_incremental = '<CR>',
node_incremental = '<TAB>',
node_decremental = '<S-TAB>'
}
}
}
---@diagnostic disable-next-line: redefined-local -- Readability/conciseness over correctness.
local ok, ts_rainbow = pcall(require, 'ts-rainbow')
if ok then
local rainbow = {
enable = true,
query = {
'rainbow-parens',
html = 'rainbow-tags',
latex = 'rainbow-blocks'
},
strategy = ts_rainbow.strategy.global
}
config.rainbow = rainbow
end
if pcall(require,'nvim-treesitter-textobjects') then
local textobjects = {
select = {
enable = true,
lookahead = true,
keymaps = {
["af"] = { query = "@function.outer", desc = "Select outer part of function"},
["if"] = { query = "@function.inner", desc = "Select inner part of function"},
["ac"] = { query = "@class.outer" , desc = "Select outer part of class"},
["ic"] = { query = "@class.inner" , desc = "Select inner part of class"}
}
},
move = {
enable = true,
set_jumps = true,
goto_next_start = {
["]m"] = { query = "@function.outer", desc = "Next Function start"},
["]]"] = { query = "@class.outer", desc = "Next class start"},
["]o"] = { query = "@loop.*", desc = "Next loop component"},
["]z"] = { query = "@fold", query_group = "folds" , desc = "Next Fold"}
},
goto_next_end = {
["]M"] = { query = "@function.outer", desc = "Next Function end"},
["]["] = { query = "@class.outer", desc = "Next class end"},
},
goto_previous_start = {
["[m"] = { query = "@function.outer", desc = "Previous Function start"},
["[]"] = { query = "@class.outer", desc = "Previous class start"},
["[o"] = { query = "@loop.*", desc = "Previous loop component"},
["[z"] = { query = "@fold", query_group = "folds" , desc = "Previous Fold"}
},
goto_previous_end = {
["[M"] = { query = "@function.outer", desc = "Previous Function end"},
["[["] = { query = "@class.outer", desc = "Previous class end"},
},
goto_next = {
["]d"] = { query = "@conditional.*", desc = "Next Conditional"}
},
goto_previous = {
["[d"] = { query = "@conditional.*", desc = "previous Conditional"}
}
},
lsp_interop = {
enable = true,
border = 'none',
floating_preview_opts = {},
peek_definition_code = {
["<leader>df"] = { query = "@function.outer", desc = "Peek function definition"},
["<leader>dF"] = { query = "@class.outer", desc = "Peek class definition"}
}
}
}
config.textobjects = textobjects
end
require('nvim-treesitter.configs').setup(config)