@@ -371,14 +371,14 @@ func (ls *INOLanguageServer) TextDocumentCompletionReqFromIDE(ctx context.Contex
371371 ls .readLock (logger , true )
372372 defer ls .readUnlock (logger )
373373
374- cppTextDocPositionParams , err := ls .ide2ClangTextDocumentPositionParams (logger , ideParams .TextDocumentPositionParams )
374+ clangTextDocPositionParams , err := ls .ide2ClangTextDocumentPositionParams (logger , ideParams .TextDocumentPositionParams )
375375 if err != nil {
376376 logger .Logf ("Error: %s" , err )
377377 return nil , & jsonrpc.ResponseError {Code : jsonrpc .ErrorCodesInternalError , Message : err .Error ()}
378378 }
379379
380380 clangParams := & lsp.CompletionParams {
381- TextDocumentPositionParams : cppTextDocPositionParams ,
381+ TextDocumentPositionParams : clangTextDocPositionParams ,
382382 Context : ideParams .Context ,
383383 WorkDoneProgressParams : ideParams .WorkDoneProgressParams ,
384384 PartialResultParams : ideParams .PartialResultParams ,
@@ -637,14 +637,14 @@ func (ls *INOLanguageServer) TextDocumentImplementationReqFromIDE(ctx context.Co
637637 ls .readLock (logger , true )
638638 defer ls .readUnlock (logger )
639639
640- cppTextDocumentPosition , err := ls .ide2ClangTextDocumentPositionParams (logger , ideParams .TextDocumentPositionParams )
640+ clangTextDocumentPosition , err := ls .ide2ClangTextDocumentPositionParams (logger , ideParams .TextDocumentPositionParams )
641641 if err != nil {
642642 logger .Logf ("Error: %s" , err )
643643 return nil , nil , & jsonrpc.ResponseError {Code : jsonrpc .ErrorCodesInternalError , Message : err .Error ()}
644644 }
645645
646646 clangParams := & lsp.ImplementationParams {
647- TextDocumentPositionParams : cppTextDocumentPosition ,
647+ TextDocumentPositionParams : clangTextDocumentPosition ,
648648 WorkDoneProgressParams : ideParams .WorkDoneProgressParams ,
649649 PartialResultParams : ideParams .PartialResultParams ,
650650 }
@@ -1212,6 +1212,40 @@ func (ls *INOLanguageServer) PublishDiagnosticsNotifFromClangd(logger jsonrpc.Fu
12121212 }
12131213}
12141214
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+
12151249func (ls * INOLanguageServer ) ProgressNotifFromClangd (logger jsonrpc.FunctionLogger , progress * lsp.ProgressParams ) {
12161250 var token string
12171251 if err := json .Unmarshal (progress .Token , & token ); err != nil {
0 commit comments