diff .chezmoitemplates/init.lua @ 739:dbadb754946e

feat: add refactoring plugin
author zegervdv <zegervdv@me.com>
date Sun, 18 Dec 2022 11:09:26 +0100
parents d63750fc240f
children 68cb1c4b268c
line wrap: on
line diff
--- 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 { ['<leader>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,
+            '<leader>r' .. map.key,
+            function() refactoring.refactor(map.name) end,
+            { desc = map.name, silent = true, expr = false }
+          )
+        end
+        vim.keymap.set(
+          'n',
+          '<leader>rpp',
+          function() refactoring.debug.printf { below = false } end,
+          { desc = 'Add debug print statement', silent = true }
+        )
+        vim.keymap.set(
+          'n',
+          '<leader>rpv',
+          function() refactoring.debug.print_var { normal = true } end,
+          { desc = 'Print variable', silent = true }
+        )
+        vim.keymap.set(
+          'v',
+          '<leader>rpv',
+          function() refactoring.debug.print_var() end,
+          { desc = 'Print variable', silent = true }
+        )
+        vim.keymap.set(
+          'n',
+          '<leader>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()