From 6677e197e9315bd0b1f44b7d50d85cc5aab9f597 Mon Sep 17 00:00:00 2001 From: Robert Morrison Date: Fri, 5 May 2023 19:12:41 +0100 Subject: [PATCH] feat(treesitter): Change to new rainbow Change to new rainbow plugin, also make config more robust to plugin issues. --- after/plugin/treesitter.lua | 91 +++++++++++++++++++++++++++++++++--- lua/sherlock5512/plugins.lua | 2 +- 2 files changed, 85 insertions(+), 8 deletions(-) diff --git a/after/plugin/treesitter.lua b/after/plugin/treesitter.lua index 0d725a5..18ab0eb 100644 --- a/after/plugin/treesitter.lua +++ b/after/plugin/treesitter.lua @@ -1,4 +1,6 @@ -if not pcall(require, 'nvim-treesitter') then +local ok = pcall(require, 'nvim-treesitter') + +if not ok then return end @@ -18,12 +20,6 @@ local config = { enable = true, }, - rainbow = { - enable = true, - extended_mode = true, - max_file_lines = nil - }, - incremental_selection = { enable = true, keymaps = { @@ -35,3 +31,84 @@ local config = { } } +---@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) diff --git a/lua/sherlock5512/plugins.lua b/lua/sherlock5512/plugins.lua index d8e3ff5..46199c1 100644 --- a/lua/sherlock5512/plugins.lua +++ b/lua/sherlock5512/plugins.lua @@ -101,7 +101,7 @@ return require('packer').startup(function(use) use {'nvim-treesitter/nvim-treesitter', run = ':TSUpdate' } - use {'p00f/nvim-ts-rainbow', + use {'HiPhish/nvim-ts-rainbow2', requires = 'nvim-treesitter/nvim-treesitter'} use {'nvim-treesitter/nvim-treesitter-textobjects', requires = 'nvim-treesitter/nvim-treesitter'}