inc-rename.nvim
                                
                                 inc-rename.nvim copied to clipboard
                                
                                    inc-rename.nvim copied to clipboard
                            
                            
                            
                        Incremental LSP renaming based on Neovim's command-preview feature.
inc-rename.nvim
A small Neovim plugin that provides a command for LSP renaming with immediate visual feedback thanks to Neovim's command preview feature.
Installation
This plugin requires Neovim 0.8
Install using your favorite package manager and call the setup function.
Here is an example using packer.nvim:
use {
  "smjonas/inc-rename.nvim",
  config = function()
    require("inc_rename").setup()
  end,
}
Usage
Simply type :IncRename <new_name> while your cursor is on an LSP identifier.
You could also create a keymap that types out the command name for you so you only have to
enter the new name:
vim.keymap.set("n", "<leader>rn", ":IncRename ")
If you want to fill in the word under the cursor you can use the following:
vim.keymap.set("n", "<leader>rn", function()
  return ":IncRename " .. vim.fn.expand("<cword>")
end, { expr = true })
💥 noice.nvim support
If you are using noice.nvim, you can enable the inc_rename preset like this:
require("noice").setup {
  presets = { inc_rename = true }
}
Then simply type the :IncRename command (or use the keymap mentioned above).
 
🌸 dressing.nvim support
If you are using dressing.nvim,
set the input_buffer_type option to "dressing":
require("inc_rename").setup {
  input_buffer_type = "dressing",
}
Then simply type the :IncRename command and the new name you enter will automatically be updated in the input buffer as you type.
The result should look something like this:
 
:bulb: Tip - try these
dressing.nvimsettings to position the input box above the cursor to not cover the word being renamed (thank you @RaafatTurki for the suggestion!):
require("dressing").setup {
  input = {
    override = function(conf)
      conf.col = -1
      conf.row = 0
      return conf
    end,
  },
}
Customization
You can override the default settings by passing a Lua table to the setup function.
The default options are:
require("inc_rename").setup {
  cmd_name = "IncRename", -- the name of the command
  hl_group = "Substitute", -- the highlight group used for highlighting the identifier's new name
  preview_empty_name = false, -- whether an empty new name should be previewed; if false the command preview will be cancelled instead
  show_message = true, -- whether to display a `Renamed m instances in n files` message after a rename operation
  input_buffer_type = nil, -- the type of the external input buffer to use (the only supported value is currently "dressing")
  post_hook = nil, -- callback to run after renaming, receives the result table (from LSP handler) as an argument
}