@@ -262,6 +262,11 @@ func (handler *InoHandler) transformClangdResult(method string, uri lsp.Document
262
262
case "textDocument/completion" :
263
263
r := result .(* lsp.CompletionList )
264
264
handler .cpp2inoCompletionList (r , uri )
265
+ case "textDocument/codeAction" :
266
+ r := result .(* []CodeAction )
267
+ for index := range * r {
268
+ handler .cpp2inoCodeAction (& (* r )[index ], uri )
269
+ }
265
270
case "textDocument/hover" :
266
271
r := result .(* Hover )
267
272
handler .cpp2inoHover (r , uri )
@@ -297,6 +302,36 @@ func (handler *InoHandler) cpp2inoCompletionList(list *lsp.CompletionList, uri l
297
302
}
298
303
}
299
304
305
+ func (handler * InoHandler ) cpp2inoCodeAction (codeAction * CodeAction , uri lsp.DocumentURI ) {
306
+ newEdit := lsp.WorkspaceEdit {Changes : make (map [string ][]lsp.TextEdit )}
307
+ for uri , edit := range codeAction .Edit .Changes {
308
+ if data , ok := handler .data [lsp .DocumentURI (uri )]; ok {
309
+ newValue := make ([]lsp.TextEdit , len (edit ))
310
+ for index := range edit {
311
+ r := edit [index ].Range
312
+ newValue [index ] = lsp.TextEdit {
313
+ NewText : edit [index ].NewText ,
314
+ Range : lsp.Range {
315
+ Start : lsp.Position {Line : data .sourceLineMap [r .Start .Line ], Character : r .Start .Character },
316
+ End : lsp.Position {Line : data .sourceLineMap [r .End .Line ], Character : r .End .Character },
317
+ },
318
+ }
319
+ }
320
+ newEdit .Changes [string (data .sourceURI )] = newValue
321
+ } else {
322
+ newEdit .Changes [uri ] = edit
323
+ }
324
+ }
325
+ codeAction .Edit = & newEdit
326
+ if data , ok := handler .data [uri ]; ok {
327
+ for index := range codeAction .Diagnostics {
328
+ r := & codeAction .Diagnostics [index ].Range
329
+ r .Start .Line = data .sourceLineMap [r .Start .Line ]
330
+ r .End .Line = data .sourceLineMap [r .End .Line ]
331
+ }
332
+ }
333
+ }
334
+
300
335
func (handler * InoHandler ) cpp2inoHover (hover * Hover , uri lsp.DocumentURI ) {
301
336
if data , ok := handler .data [uri ]; ok {
302
337
r := hover .Range
0 commit comments