diff options
| author | Kyren223 <contact@kyren.codes> | 2026-06-22 18:59:04 +0300 |
|---|---|---|
| committer | Kyren223 <contact@kyren.codes> | 2026-06-22 18:59:04 +0300 |
| commit | 9a46455ac09bc007abb45b0fe7ab9b55d24f3cfb (patch) | |
| tree | c3ce88940d4537076380c6eeab6951a6778418c4 /.config/nvim/lua | |
| parent | 798f2e0c8ea4708da4e55bdb2faf8f44d1e91f6e (diff) | |
Add live-rename plugin which is basically IntelliJ-like rename, don't
need the LSPSaga rename now
Diffstat (limited to '.config/nvim/lua')
| -rw-r--r-- | .config/nvim/lua/keymaps.lua | 40 | ||||
| -rw-r--r-- | .config/nvim/lua/plugins/live-rename.lua | 65 |
2 files changed, 104 insertions, 1 deletions
diff --git a/.config/nvim/lua/keymaps.lua b/.config/nvim/lua/keymaps.lua index a900a50..aae2928 100644 --- a/.config/nvim/lua/keymaps.lua +++ b/.config/nvim/lua/keymaps.lua @@ -112,7 +112,45 @@ local keymaps = { end, { desc = 'Show [P]arameters' }, }, - { 'n', 'R', '<cmd>Lspsaga rename<cr>', { desc = '[R]ename' } }, + -- { 'n', 'R', '<cmd>Lspsaga rename<cr>', { desc = '[R]ename' } }, + { + 'n', + 'r', + function() + -- require('live-rename').rename() + -- require('live-rename').rename({ cursorpos = -1 }) + -- require('live-rename').rename({ insert = true, cursorpos = -1 }) + + require('live-rename').rename({ cursorpos = -1 }) + vim.schedule(function() + vim.api.nvim_feedkeys('A', 'n', false) + end) + end, + { desc = '[R]ename' }, + }, + { + 'n', + 'rr', + function() + -- require('live-rename').rename() + -- require('live-rename').rename({ cursorpos = -1 }) + -- require('live-rename').rename({ insert = true, cursorpos = -1 }) + + require('live-rename').rename({ cursorpos = -1 }) + vim.schedule(function() + vim.api.nvim_feedkeys('A', 'n', false) + end) + end, + { desc = '[R]ename' }, + }, + { + 'n', + 'R', + function() + require('live-rename').rename({ insert = true, text = '' }) + end, + { desc = '[R]ename' }, + }, { { 'n', 'i' }, '<M-Enter>', '<cmd>Lspsaga code_action<cr>', { desc = 'Code Actions' } }, -- { 'n', '<leader>e', next_diagnostic(severity.ERROR), { desc = 'Goto [E]rror' } }, -- { 'n', '<leader>E', prev_diagnostic(severity.ERROR), { desc = 'Goto [E]rror (prev)' } }, diff --git a/.config/nvim/lua/plugins/live-rename.lua b/.config/nvim/lua/plugins/live-rename.lua new file mode 100644 index 0000000..c81ad12 --- /dev/null +++ b/.config/nvim/lua/plugins/live-rename.lua @@ -0,0 +1,65 @@ +return { + 'saecki/live-rename.nvim', + commit = '2a30bfdc9369c8ffb188e6da715fbdf1aef6f647', + -- default config + keys = { 'r', 'rr', 'R' }, + opts = { + -- Send a `textDocument/prepareRename` request to the server to + -- determine the word to be renamed, can be slow on some servers. + -- Otherwise fallback to using `<cword>`. + prepare_rename = true, + --- The timeout for the `textDocument/prepareRename` request and final + --- `textDocument/rename` request when submitting. + request_timeout = 1500, + -- Make an initial `textDocument/rename` request to gather other + -- occurences which are edited and use these ranges to preview. + -- If disabled only the word under the cursor will have a preview. + show_other_ocurrences = true, + -- Try to infer patterns from the initial `textDocument/rename` request + -- and use these to show hopefully better edit previews. + use_patterns = true, + -- The register which is used to temporarily record a macro into. This + -- macro can then be executed on other symbols using the `macrorepeat` + -- rename option. + scratch_register = 'l', + keys = { + submit = { + { 'n', '<cr>' }, + { 'v', '<cr>' }, + { 'i', '<cr>' }, + { 'n', '<esc>' }, + }, + cancel = { + { 'n', '<c-c>' }, + { 'i', '<c-c>' }, + { 'n', 'q' }, + }, + }, + hl = { + current = 'LiveRenameCurrent', + others = 'LiveRenameOthers', + }, + }, + + -- -- Start in normal mode and maintain cursor position. + -- require("live-rename").rename() + -- + -- -- Start in normal mode and jump to the start of the word. + -- require("live-rename").rename({ cursorpos = 0 }) + -- + -- -- Start in insert mode and jump to the end of the word + -- require("live-rename").rename({ insert = true, cursorpos = -1 }) + -- + -- -- Start in insert mode with an empty word + -- require("live-rename").rename({ text = "", insert = true }) + -- + -- -- The actions that happened in the previous rename window are recorded as a macro. + -- -- The rename can be repeated by using `.`, or by manually calling the rename + -- -- funciton with the `macrorepeat` parameter. + -- + -- -- The last lsp rename is repeated and commited without any further confirmation. + -- require("live-rename").rename({ macrorepeat = true, noconfirm = true }) + -- + -- -- Without `noconfirm` additional actions can be appended to the macro. + -- require("live-rename").rename({ macrorepeat = true }) +} |
