SUMMARY LSP Client rename symbol functionality is broken for Go and gopls. STEPS TO REPRODUCE 1. Call LSP Client -> Rename for some symbol (for example function) 2. Enter new name OBSERVED RESULT Symbol was not renamed. EXPECTED RESULT Symbol should be renamed SOFTWARE/OS VERSIONS Windows: macOS: Linux/KDE Plasma: (available in About System) KDE Plasma Version: KDE Frameworks Version: Qt Version: ADDITIONAL INFORMATION Sample main.go file: package main func main() { myFunction() } // myFunction is just a dummy function func myFunction() { return } Trace logs from gopls when calling rename action: [Trace - 18:41:39.802 PM] Sending request 'textDocument/rename - (12)'. Params: { "newName": "myFunctionNew", "position": { "character": 12, "line": 7 }, "textDocument": { "uri": "file:///tmp/goproj/main.go" } } [Trace - 18:41:39.803 PM] Received response 'textDocument/rename - (12)' in 0ms. Result: {"documentChanges":[{"textDocument":{"version":167,"uri":"file:///tmp/goproj/main.go"},"edits":[{"range":{"start":{"line":3,"character":4},"end":{"line":3,"character":14}},"newText":"myFunctionNew"},{"range":{"start":{"line":6,"character":3},"end":{"line":6,"character":13}},"newText":"myFunctionNew"},{"range":{"start":{"line":7,"character":5},"end":{"line":7,"character":15}},"newText":"myFunctionNew"}]}]} Operating System: Arch Linux KDE Plasma Version: 5.23.5 KDE Frameworks Version: 5.90.0 Qt Version: 5.15.2 Kernel Version: 5.16.2-arch1-1 (64-bit) Graphics Platform: Wayland Processors: 12 × AMD Ryzen 5 5600G with Radeon Graphics Memory: 13,6 GiB of RAM Graphics Processor: AMD RENOIR
The response from the gopls server is not quite what it should be, see specifications on https://microsoft.github.io/language-server-protocol/specifications/specification-3-17/#workspaceEdit In this case, it chooses to use the documentChanges property, but it should only do that if the client specifies suitable capabilities. In this case, the LSP plugin does not specify those, as it does not (yet) support that type of response. We may extend that parsing somewhat on the client side, but as it stands it is a server-side protocol issue.
(In reply to Mark Nauwelaerts from comment #1) > The response from the gopls server is not quite what it should be, see > specifications on > https://microsoft.github.io/language-server-protocol/specifications/ > specification-3-17/#workspaceEdit > > In this case, it chooses to use the documentChanges property, but it should > only do that if the client specifies suitable capabilities. In this case, > the LSP plugin does not specify those, as it does not (yet) support that > type of response. We may extend that parsing somewhat on the client side, > but as it stands it is a server-side protocol issue. Mark, thanks for explanation! I am not versed in LSP client/server protocol. What I hear is that there might be issue on gopls side. If that is correct the I suppose it makes sense to open issue on their issue tracker. Would you be willing to comment on issue since I might not have the best idea what is going on? Thanks!
(In reply to Juris from comment #2) > (In reply to Mark Nauwelaerts from comment #1) > > The response from the gopls server is not quite what it should be, see > > specifications on > > https://microsoft.github.io/language-server-protocol/specifications/ > > specification-3-17/#workspaceEdit > > > > In this case, it chooses to use the documentChanges property, but it should > > only do that if the client specifies suitable capabilities. In this case, > > the LSP plugin does not specify those, as it does not (yet) support that > > type of response. We may extend that parsing somewhat on the client side, > > but as it stands it is a server-side protocol issue. > > Mark, thanks for explanation! I am not versed in LSP client/server protocol. > What I hear is that there might be issue on gopls side. If that is correct > the I suppose it makes sense to open issue on their issue tracker. Would you > be willing to comment on issue since I might not have the best idea what is > going on? > > Thanks! Mark, I created issue on gopls project, please, feel free to add comments. https://github.com/golang/go/issues/50922 I will appreciate your input very much! Thank You!
A possibly relevant merge request was started @ https://invent.kde.org/utilities/kate/-/merge_requests/580
Git commit e1b89deaec075e9b155877ba5e549ed87baf1395 by Mark Nauwelaerts. Committed on 31/01/2022 at 21:05. Pushed by cullmann into branch 'master'. lspclient: also support some alternative WorkspaceEdit replies Related: bug 447640 M +22 -9 addons/lspclient/lspclientpluginview.cpp https://invent.kde.org/utilities/kate/commit/e1b89deaec075e9b155877ba5e549ed87baf1395