From 8949347e2c5d523b7045440f1f51c42a769392dd Mon Sep 17 00:00:00 2001 From: Blaž Hrastnik Date: Mon, 17 May 2021 16:35:34 +0900 Subject: Completion: apply additionalTextEdits. Used for adding imports to the file when completing. --- helix-term/src/ui/completion.rs | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/helix-term/src/ui/completion.rs b/helix-term/src/ui/completion.rs index 6fc7967a..719daa0f 100644 --- a/helix-term/src/ui/completion.rs +++ b/helix-term/src/ui/completion.rs @@ -82,16 +82,6 @@ impl Completion { // and we insert at position. }; - // TODO: merge edit with additional_text_edits - if let Some(additional_edits) = &item.additional_text_edits { - if !additional_edits.is_empty() { - unimplemented!( - "completion: additional_text_edits: {:?}", - additional_edits - ); - } - } - // if more text was entered, remove it let cursor = doc.selection(view.id).cursor(); if trigger_offset < cursor { @@ -109,6 +99,19 @@ impl Completion { offset_encoding, // TODO: should probably transcode in Client ); doc.apply(&transaction, view.id); + + // TODO: merge edit with additional_text_edits + if let Some(additional_edits) = &item.additional_text_edits { + // gopls uses this to add extra imports + if !additional_edits.is_empty() { + let transaction = util::generate_transaction_from_edits( + doc.text(), + additional_edits.clone(), + offset_encoding, // TODO: should probably transcode in Client + ); + doc.apply(&transaction, view.id); + } + } } _ => (), }; -- cgit v1.2.3-70-g09d2