-- credits to @Malace : https://www.reddit.com/r/neovim/comments/ql4iuj/rename_hover_including_window_title_and/ -- This is modified version of the above snippet local M = {} M.open = function() local currName = vim.fn.expand "" .. " " local win = require("plenary.popup").create(currName, { title = "Renamer", style = "minimal", borderchars = { "─", "│", "─", "│", "╭", "╮", "╯", "╰" }, relative = "cursor", borderhighlight = "RenamerBorder", titlehighlight = "RenamerTitle", focusable = true, width = 25, height = 1, line = "cursor+2", col = "cursor-1", }) local map_opts = { noremap = true, silent = true } vim.cmd "normal w" vim.cmd "startinsert" vim.api.nvim_buf_set_keymap(0, "i", "", "stopinsert | q!", map_opts) vim.api.nvim_buf_set_keymap(0, "n", "", "stopinsert | q!", map_opts) vim.api.nvim_buf_set_keymap( 0, "i", "", "stopinsert | lua require'ui.renamer'.apply(" .. currName .. "," .. win .. ")", map_opts ) vim.api.nvim_buf_set_keymap( 0, "n", "", "stopinsert | lua require'ui.renamer'.apply(" .. currName .. "," .. win .. ")", map_opts ) end M.apply = function(curr, win) local newName = vim.trim(vim.fn.getline ".") vim.api.nvim_win_close(win, true) if #newName > 0 and newName ~= curr then local params = vim.lsp.util.make_position_params() params.newName = newName vim.lsp.buf_request(0, "textDocument/rename", params) end end return M