diff options
Diffstat (limited to 'lua/alpha/refactoring.lua')
| -rw-r--r-- | lua/alpha/refactoring.lua | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/lua/alpha/refactoring.lua b/lua/alpha/refactoring.lua new file mode 100644 index 0000000..262400f --- /dev/null +++ b/lua/alpha/refactoring.lua @@ -0,0 +1,35 @@ +local refactor = require("refactoring") +refactor.setup() + +-- telescope refactoring helper +local function refactor(prompt_bufnr) + local content = require("telescope.actions.state").get_selected_entry( + prompt_bufnr + ) + require("telescope.actions").close(prompt_bufnr) + require("refactoring").refactor(content.value) +end +-- NOTE: M is a global object +-- for the sake of simplicity in this example +-- you can extract this function and the helper above +-- and then require the file and call the extracted function +-- in the mappings below +M = {} +M.refactors = function() + require("telescope.pickers").new({}, { + prompt_title = "refactors", + finder = require("telescope.finders").new_table({ + results = require("refactoring").get_refactors(), + }), + sorter = require("telescope.config").values.generic_sorter({}), + attach_mappings = function(_, map) + map("i", "<CR>", refactor) + map("n", "<CR>", refactor) + return true + end + }):find() +end + +vim.api.nvim_set_keymap("v", "<Leader>re", [[ <Cmd>lua require('refactoring').refactor('Extract Function')<CR>]], {noremap = true, silent = true, expr = false}) +vim.api.nvim_set_keymap("v", "<Leader>rf", [[ <Cmd>lua require('refactoring').refactor('Extract Function To File')<CR>]], {noremap = true, silent = true, expr = false}) +vim.api.nvim_set_keymap("v", "<Leader>rt", [[ <Cmd>lua M.refactors()<CR>]], {noremap = true, silent = true, expr = false}) |