@@ -557,8 +557,10 @@ pub struct VimCompleteItem {
557
557
pub icase : Option < u64 > ,
558
558
#[ serde( skip_serializing_if = "Option::is_none" ) ]
559
559
pub dup : Option < u64 > ,
560
+ /// Deprecated. Use `user_data` instead.
560
561
#[ serde( skip_serializing_if = "Option::is_none" ) ]
561
562
pub snippet : Option < String > ,
563
+ /// Deprecated. Use `user_data` instead.
562
564
#[ serde( skip_serializing_if = "Option::is_none" ) ]
563
565
pub is_snippet : Option < bool > ,
564
566
// NOTE: `user_data` can only be string in vim. So cannot specify concrete type here.
@@ -570,6 +572,8 @@ pub struct VimCompleteItem {
570
572
pub struct VimCompleteItemUserData {
571
573
#[ serde( skip_serializing_if = "Option::is_none" ) ]
572
574
pub lspitem : Option < CompletionItem > ,
575
+ #[ serde( skip_serializing_if = "Option::is_none" ) ]
576
+ pub snippet : Option < String > ,
573
577
}
574
578
575
579
impl VimCompleteItem {
@@ -603,13 +607,10 @@ impl VimCompleteItem {
603
607
}
604
608
}
605
609
606
- let is_snippet;
607
610
let snippet;
608
611
if lspitem. insert_text_format == Some ( InsertTextFormat :: Snippet ) {
609
- is_snippet = Some ( true ) ;
610
612
snippet = Some ( word. clone ( ) ) ;
611
613
} else {
612
- is_snippet = None ;
613
614
snippet = None ;
614
615
} ;
615
616
@@ -620,6 +621,7 @@ impl VimCompleteItem {
620
621
621
622
let user_data = VimCompleteItemUserData {
622
623
lspitem : Some ( lspitem. clone ( ) ) ,
624
+ snippet : snippet. clone ( ) ,
623
625
} ;
624
626
625
627
Ok ( VimCompleteItem {
@@ -634,8 +636,8 @@ impl VimCompleteItem {
634
636
. replace ( "\n " , " " ) ,
635
637
info,
636
638
kind : lspitem. kind . map ( |k| format ! ( "{:?}" , k) ) . unwrap_or_default ( ) ,
639
+ is_snippet : Some ( snippet. is_some ( ) ) ,
637
640
snippet,
638
- is_snippet,
639
641
user_data : Some ( serde_json:: to_string ( & user_data) ?) ,
640
642
} )
641
643
}
0 commit comments