@@ -242,15 +242,16 @@ fn completion_item(
242
242
let text_edit = {
243
243
let mut text_edit = None ;
244
244
let source_range = item. source_range ( ) ;
245
- for indel in item. text_edit ( ) . iter ( ) {
245
+ for indel in item. text_edit ( ) {
246
246
if indel. delete . contains_range ( source_range) {
247
+ // Extract this indel as the main edit
247
248
text_edit = Some ( if indel. delete == source_range {
248
249
self :: completion_text_edit ( line_index, insert_replace_support, indel. clone ( ) )
249
250
} else {
250
251
assert ! ( source_range. end( ) == indel. delete. end( ) ) ;
251
252
let range1 = TextRange :: new ( indel. delete . start ( ) , source_range. start ( ) ) ;
252
253
let range2 = source_range;
253
- let indel1 = Indel :: replace ( range1, String :: new ( ) ) ;
254
+ let indel1 = Indel :: delete ( range1) ;
254
255
let indel2 = Indel :: replace ( range2, indel. insert . clone ( ) ) ;
255
256
additional_text_edits. push ( self :: text_edit ( line_index, indel1) ) ;
256
257
self :: completion_text_edit ( line_index, insert_replace_support, indel2)
@@ -316,18 +317,13 @@ fn completion_item(
316
317
}
317
318
}
318
319
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) ) ;
321
326
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
-
331
327
acc. push ( lsp_item_with_ref) ;
332
328
} ;
333
329
0 commit comments