local M = {}
local config = require("code-refactor").__conf
M.replace_text_in_buffer = function(start_row, start_col, end_row, end_col, new_lines)
-- Recover the line content from before and after the function.
local start_line = vim.api.nvim_buf_get_lines(0, start_row, start_row + 1, false)[1]
local end_line = vim.api.nvim_buf_get_lines(0, end_row, end_row + 1, false)[1]
local prefix = start_line:sub(1, start_col)
local suffix = end_line:sub(end_col + 1)
new_lines[1] = prefix .. new_lines[1]
new_lines[#new_lines] = new_lines[#new_lines] .. suffix
-- Replace the old function with the new function.
vim.api.nvim_buf_set_lines(0, start_row, end_row + 1, false, new_lines)
local new_end_row = start_row + #new_lines
local new_end_row_text = vim.api.nvim_buf_get_lines(0, new_end_row - 1, new_end_row, false)[1]
-- Format the newly created function.
config.format({
range = {
start = { start_row + 1, start_col },
["end"] = { new_end_row, #new_end_row_text },
},
})
end
return M