emacs-lsp / lsp-mode

Emacs client/library for the Language Server Protocol
https://emacs-lsp.github.io/lsp-mode
GNU General Public License v3.0
4.76k stars 874 forks source link

c++ rename destroys code (clangd) #4523

Open cyberkm opened 1 month ago

cyberkm commented 1 month ago

Thank you for the bug report

Bug description

When working on a multi file project, a lot of times I have to rename functions or variables across multiple files I am doing it using lsp-rename, but unfortunately lsp rename destroys the code all over the project instead of just renaming the symbol, it adds random characters, and deletes random some other characters around the symbol to be renamed all over the project. Can you please fix it? Using clangd as a backend.

Steps to reproduce

Open multifile c++ code with compilation database and clangd backend open one of the files, select a symbol, it can be a function or a variable that used in other files as well. do lsp-rename, write a new name. The code is now destroyed, new chars are added, some chars are deleted (for example it might delete opening brackets after the function name)

Expected behavior

The symbol name is correctly replaced all over the project without destroying anything.

Which Language Server did you use?

clangd

OS

Windows

Error callstack

No response

Anything else?

No response

dgutov commented 5 days ago

Just a heads up: the odds of such a bug getting fixed will go up if the report contains specific instructions for reproducing, e.g. a link to a sample C++ project where a rename breaks things. And maybe a recording of additional edits you have to do before to trigger this.