@@ -392,18 +392,36 @@ fn completion_item(
392392 } else {
393393 Vec :: new ( )
394394 } ;
395- if something_to_resolve || !imports. is_empty ( ) {
396- let data = lsp_ext:: CompletionResolveData {
395+ let ( ref_resolve_data, resolve_data) = if something_to_resolve || !imports. is_empty ( ) {
396+ let mut item_index = acc. len ( ) ;
397+ let ref_resolve_data = if ref_match. is_some ( ) {
398+ let ref_resolve_data = lsp_ext:: CompletionResolveData {
399+ position : tdpp. clone ( ) ,
400+ imports : Vec :: new ( ) ,
401+ version,
402+ trigger_character : completion_trigger_character,
403+ completion_item_index : item_index,
404+ } ;
405+ item_index += 1 ;
406+ Some ( to_value ( ref_resolve_data) . unwrap ( ) )
407+ } else {
408+ None
409+ } ;
410+ let resolve_data = lsp_ext:: CompletionResolveData {
397411 position : tdpp. clone ( ) ,
398412 imports,
399413 version,
400414 trigger_character : completion_trigger_character,
415+ completion_item_index : item_index,
401416 } ;
402- lsp_item. data = Some ( to_value ( data) . unwrap ( ) ) ;
403- }
417+ ( ref_resolve_data, Some ( to_value ( resolve_data) . unwrap ( ) ) )
418+ } else {
419+ ( None , None )
420+ } ;
404421
405422 if let Some ( ( label, indel, relevance) ) = ref_match {
406- let mut lsp_item_with_ref = lsp_types:: CompletionItem { label, ..lsp_item. clone ( ) } ;
423+ let mut lsp_item_with_ref =
424+ lsp_types:: CompletionItem { label, data : ref_resolve_data, ..lsp_item. clone ( ) } ;
407425 lsp_item_with_ref
408426 . additional_text_edits
409427 . get_or_insert_with ( Default :: default)
@@ -412,6 +430,7 @@ fn completion_item(
412430 acc. push ( lsp_item_with_ref) ;
413431 } ;
414432
433+ lsp_item. data = resolve_data;
415434 acc. push ( lsp_item) ;
416435
417436 fn set_score (
0 commit comments