@@ -242,15 +242,16 @@ fn completion_item(
242242 let text_edit = {
243243 let mut text_edit = None ;
244244 let source_range = item. source_range ( ) ;
245- for indel in item. text_edit ( ) . iter ( ) {
245+ for indel in item. text_edit ( ) {
246246 if indel. delete . contains_range ( source_range) {
247+ // Extract this indel as the main edit
247248 text_edit = Some ( if indel. delete == source_range {
248249 self :: completion_text_edit ( line_index, insert_replace_support, indel. clone ( ) )
249250 } else {
250251 assert ! ( source_range. end( ) == indel. delete. end( ) ) ;
251252 let range1 = TextRange :: new ( indel. delete . start ( ) , source_range. start ( ) ) ;
252253 let range2 = source_range;
253- let indel1 = Indel :: replace ( range1, String :: new ( ) ) ;
254+ let indel1 = Indel :: delete ( range1) ;
254255 let indel2 = Indel :: replace ( range2, indel. insert . clone ( ) ) ;
255256 additional_text_edits. push ( self :: text_edit ( line_index, indel1) ) ;
256257 self :: completion_text_edit ( line_index, insert_replace_support, indel2)
@@ -316,18 +317,13 @@ fn completion_item(
316317 }
317318 }
318319
319- if let Some ( ( mutability, offset, relevance) ) = item. ref_match ( ) {
320- let mut lsp_item_with_ref = lsp_item. clone ( ) ;
320+ if let Some ( ( label, indel, relevance) ) = item. ref_match ( ) {
321+ let mut lsp_item_with_ref = lsp_types:: CompletionItem { label, ..lsp_item. clone ( ) } ;
322+ lsp_item_with_ref
323+ . additional_text_edits
324+ . get_or_insert_with ( Default :: default)
325+ . push ( self :: text_edit ( line_index, indel) ) ;
321326 set_score ( & mut lsp_item_with_ref, max_relevance, relevance) ;
322- lsp_item_with_ref. label =
323- format ! ( "&{}{}" , mutability. as_keyword_for_ref( ) , lsp_item_with_ref. label) ;
324- lsp_item_with_ref. additional_text_edits . get_or_insert_with ( Default :: default) . push (
325- self :: text_edit (
326- line_index,
327- Indel :: insert ( offset, format ! ( "&{}" , mutability. as_keyword_for_ref( ) ) ) ,
328- ) ,
329- ) ;
330-
331327 acc. push ( lsp_item_with_ref) ;
332328 } ;
333329
0 commit comments