@@ -371,14 +371,14 @@ func (ls *INOLanguageServer) TextDocumentCompletionReqFromIDE(ctx context.Contex
371
371
ls .readLock (logger , true )
372
372
defer ls .readUnlock (logger )
373
373
374
- cppTextDocPositionParams , err := ls .ide2ClangTextDocumentPositionParams (logger , ideParams .TextDocumentPositionParams )
374
+ clangTextDocPositionParams , err := ls .ide2ClangTextDocumentPositionParams (logger , ideParams .TextDocumentPositionParams )
375
375
if err != nil {
376
376
logger .Logf ("Error: %s" , err )
377
377
return nil , & jsonrpc.ResponseError {Code : jsonrpc .ErrorCodesInternalError , Message : err .Error ()}
378
378
}
379
379
380
380
clangParams := & lsp.CompletionParams {
381
- TextDocumentPositionParams : cppTextDocPositionParams ,
381
+ TextDocumentPositionParams : clangTextDocPositionParams ,
382
382
Context : ideParams .Context ,
383
383
WorkDoneProgressParams : ideParams .WorkDoneProgressParams ,
384
384
PartialResultParams : ideParams .PartialResultParams ,
@@ -637,14 +637,14 @@ func (ls *INOLanguageServer) TextDocumentImplementationReqFromIDE(ctx context.Co
637
637
ls .readLock (logger , true )
638
638
defer ls .readUnlock (logger )
639
639
640
- cppTextDocumentPosition , err := ls .ide2ClangTextDocumentPositionParams (logger , ideParams .TextDocumentPositionParams )
640
+ clangTextDocumentPosition , err := ls .ide2ClangTextDocumentPositionParams (logger , ideParams .TextDocumentPositionParams )
641
641
if err != nil {
642
642
logger .Logf ("Error: %s" , err )
643
643
return nil , nil , & jsonrpc.ResponseError {Code : jsonrpc .ErrorCodesInternalError , Message : err .Error ()}
644
644
}
645
645
646
646
clangParams := & lsp.ImplementationParams {
647
- TextDocumentPositionParams : cppTextDocumentPosition ,
647
+ TextDocumentPositionParams : clangTextDocumentPosition ,
648
648
WorkDoneProgressParams : ideParams .WorkDoneProgressParams ,
649
649
PartialResultParams : ideParams .PartialResultParams ,
650
650
}
@@ -1212,6 +1212,40 @@ func (ls *INOLanguageServer) PublishDiagnosticsNotifFromClangd(logger jsonrpc.Fu
1212
1212
}
1213
1213
}
1214
1214
1215
+ func (ls * INOLanguageServer ) TextDocumentRenameReqFromIDE (ctx context.Context , logger jsonrpc.FunctionLogger , ideParams * lsp.RenameParams ) (* lsp.WorkspaceEdit , * jsonrpc.ResponseError ) {
1216
+ ls .writeLock (logger , false )
1217
+ defer ls .writeUnlock (logger )
1218
+
1219
+ clangTextDocPositionParams , err := ls .ide2ClangTextDocumentPositionParams (logger , ideParams .TextDocumentPositionParams )
1220
+ if err != nil {
1221
+ logger .Logf ("Error: %s" , err )
1222
+ return nil , & jsonrpc.ResponseError {Code : jsonrpc .ErrorCodesInternalError , Message : err .Error ()}
1223
+ }
1224
+
1225
+ clangParams := & lsp.RenameParams {
1226
+ TextDocumentPositionParams : clangTextDocPositionParams ,
1227
+ NewName : ideParams .NewName ,
1228
+ WorkDoneProgressParams : ideParams .WorkDoneProgressParams ,
1229
+ }
1230
+ clangWorkspaceEdit , clangErr , err := ls .Clangd .conn .TextDocumentRename (ctx , clangParams )
1231
+ if err != nil {
1232
+ logger .Logf ("clangd communication error: %v" , err )
1233
+ ls .Close ()
1234
+ return nil , & jsonrpc.ResponseError {Code : jsonrpc .ErrorCodesInternalError , Message : err .Error ()}
1235
+ }
1236
+ if clangErr != nil {
1237
+ logger .Logf ("clangd response error: %v" , clangErr .AsError ())
1238
+ return nil , & jsonrpc.ResponseError {Code : jsonrpc .ErrorCodesInternalError , Message : clangErr .AsError ().Error ()}
1239
+ }
1240
+
1241
+ ideWorkspaceEdit , err := ls .clang2IdeWorkspaceEdit (logger , clangWorkspaceEdit )
1242
+ if err != nil {
1243
+ logger .Logf ("Error: %s" , err )
1244
+ return nil , & jsonrpc.ResponseError {Code : jsonrpc .ErrorCodesInternalError , Message : err .Error ()}
1245
+ }
1246
+ return ideWorkspaceEdit , nil
1247
+ }
1248
+
1215
1249
func (ls * INOLanguageServer ) ProgressNotifFromClangd (logger jsonrpc.FunctionLogger , progress * lsp.ProgressParams ) {
1216
1250
var token string
1217
1251
if err := json .Unmarshal (progress .Token , & token ); err != nil {
0 commit comments