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 = '', scope_incremental = '', node_incremental = '', node_decremental = '' } } } ---@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 = { ["df"] = { query = "@function.outer", desc = "Peek function definition"}, ["dF"] = { query = "@class.outer", desc = "Peek class definition"} } } } config.textobjects = textobjects end require('nvim-treesitter.configs').setup(config)