From b4e79ef41191dae5aa59c8426b6d89e7fbd49026 Mon Sep 17 00:00:00 2001 From: Minijackson Date: Fri, 29 Apr 2022 15:38:11 +0200 Subject: vim: add TS refactor, better TS keymaps --- common/vim.nix | 1 + dotfiles/vim.lua | 63 +++++++++++++++++++++++++++++++++++++++++++++++++------- 2 files changed, 57 insertions(+), 7 deletions(-) diff --git a/common/vim.nix b/common/vim.nix index 7b76bf9..d571cae 100644 --- a/common/vim.nix +++ b/common/vim.nix @@ -99,6 +99,7 @@ let (nvim-treesitter.withPlugins (_: tree-sitter.allGrammars)) nvim-treesitter-textobjects nvim-treesitter-context + nvim-treesitter-refactor vim-matchup diff --git a/dotfiles/vim.lua b/dotfiles/vim.lua index 2b97a53..0b11fb6 100644 --- a/dotfiles/vim.lua +++ b/dotfiles/vim.lua @@ -129,15 +129,17 @@ require('nvim-treesitter.configs').setup { matchup = { enable = true, }, + refactor = { + highlight_current_scope = { enable = true }, + highlight_definitions = { enable = true }, + }, textobjects = { - select = { + lsp_interop = { enable = true, - keymaps = { - -- You can use the capture groups defined in textobjects.scm - ["af"] = "@function.outer", - ["if"] = "@function.inner", - ["ac"] = "@class.outer", - ["ic"] = "@class.inner", + border = 'none', + peek_definition_code = { + ["df"] = "@function.outer", + ["dF"] = "@class.outer", }, }, @@ -160,12 +162,59 @@ require('nvim-treesitter.configs').setup { ["[]"] = "@class.outer", }, }, + + select = { + enable = true, + keymaps = { + -- You can use the capture groups defined in textobjects.scm + ["af"] = "@function.outer", + ["if"] = "@function.inner", + + ["aF"] = "@call.outer", + ["iF"] = "@call.inner", + + ["ac"] = "@class.outer", + ["ic"] = "@class.inner", + + ["aC"] = "@comment.outer", + ["iC"] = "@comment.inner", + + ["ab"] = "@block.outer", + ["ib"] = "@block.inner", + + ["aa"] = "@parameter.outer", + ["ia"] = "@parameter.inner", + }, + }, + + swap = { + enable = true, + swap_next = { + ["a"] = "@parameter.inner", + }, + swap_previous = { + ["A"] = "@parameter.inner", + }, + }, }, } vim.o.foldmethod = 'expr' vim.o.foldexpr = 'nvim_treesitter#foldexpr()' + +vim.api.nvim_set_hl(0, "TSCurrentScope", { + bg = vim.g.current_gruvbox_colors.dark0_soft[1], +}) + +vim.api.nvim_set_hl(0, "TSDefinition", { + bg = vim.g.current_gruvbox_colors.faded_blue[1], +}) + +vim.api.nvim_set_hl(0, "TSDefinitionUsage", { + bg = vim.g.current_gruvbox_colors.faded_aqua[1], +}) + -- nvim-cmp local cmp = require("cmp") -- cgit v1.2.3