# HG changeset patch # User zegervdv # Date 1671358166 -3600 # Node ID dbadb754946ee34dd14fabe0d127bd1b678064e5 # Parent d63750fc240fb5d9fb68fb2ea642bd48c8a5451a feat: add refactoring plugin diff -r d63750fc240f -r dbadb754946e .chezmoitemplates/init.lua --- a/.chezmoitemplates/init.lua Tue Dec 20 13:54:52 2022 +0000 +++ b/.chezmoitemplates/init.lua Sun Dec 18 11:09:26 2022 +0100 @@ -490,6 +490,65 @@ } use { + 'ThePrimeagen/refactoring.nvim', + after = 'which-key.nvim', + requires = { + 'nvim-lua/plenary.nvim', + 'nvim-treesitter/nvim-treesitter', + }, + config = function() + local refactoring = require 'refactoring' + local wk = require 'which-key' + + refactoring.setup {} + + wk.register { ['r'] = { name = 'Refactoring' } } + + local maps = { + { mode = 'v', key = 'e', name = 'Extract Function' }, + { mode = 'v', key = 'f', name = 'Extract Function To File' }, + { mode = 'v', key = 'v', name = 'Extract Variable' }, + { mode = 'v', key = 'i', name = 'Inline Variable' }, + { mode = 'n', key = 'b', name = 'Extract Block' }, + { mode = 'n', key = 'bf', name = 'Extract Block To File' }, + { mode = 'n', key = 'i', name = 'Inline Variable' }, + } + for _, map in ipairs(maps) do + vim.keymap.set( + map.mode, + 'r' .. map.key, + function() refactoring.refactor(map.name) end, + { desc = map.name, silent = true, expr = false } + ) + end + vim.keymap.set( + 'n', + 'rpp', + function() refactoring.debug.printf { below = false } end, + { desc = 'Add debug print statement', silent = true } + ) + vim.keymap.set( + 'n', + 'rpv', + function() refactoring.debug.print_var { normal = true } end, + { desc = 'Print variable', silent = true } + ) + vim.keymap.set( + 'v', + 'rpv', + function() refactoring.debug.print_var() end, + { desc = 'Print variable', silent = true } + ) + vim.keymap.set( + 'n', + 'rpc', + function() refactoring.debug.cleanup {} end, + { desc = 'Clean up debug prints', silent = true } + ) + end, + } + + use { 'nvim-telescope/telescope-ui-select.nvim', requires = { 'nvim-telescope/telescope.nvim' }, config = function()