Skip to content

amirhhashemi/inc-rename.nvim

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

41 Commits
 
 
 
 
 
 
 
 

Repository files navigation

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.

inc_rename_demo.mp4

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:


💡 Tip - try these dressing.nvim settings 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
}

About

Incremental LSP renaming based on Neovim's command-preview feature.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Lua 100.0%