@@ -8,7 +8,7 @@ use syntax::SmolStr;
88use crate :: {
99 context:: { ParamContext , ParamKind , PathCompletionCtx , PatternContext } ,
1010 render:: {
11- variant:: { format_literal_label, visible_fields} ,
11+ variant:: { format_literal_label, format_literal_lookup , visible_fields} ,
1212 RenderContext ,
1313 } ,
1414 CompletionItem , CompletionItemKind ,
@@ -34,9 +34,10 @@ pub(crate) fn render_struct_pat(
3434 let ( name, escaped_name) = ( name. unescaped ( ) . to_smol_str ( ) , name. to_smol_str ( ) ) ;
3535 let kind = strukt. kind ( ctx. db ( ) ) ;
3636 let label = format_literal_label ( name. as_str ( ) , kind) ;
37+ let lookup = format_literal_lookup ( name. as_str ( ) , kind) ;
3738 let pat = render_pat ( & ctx, pattern_ctx, & escaped_name, kind, & visible_fields, fields_omitted) ?;
3839
39- Some ( build_completion ( ctx, label, pat, strukt) )
40+ Some ( build_completion ( ctx, label, lookup , pat, strukt) )
4041}
4142
4243pub ( crate ) fn render_variant_pat (
@@ -60,11 +61,14 @@ pub(crate) fn render_variant_pat(
6061 }
6162 } ;
6263
63- let ( label, pat) = match path_ctx {
64- Some ( PathCompletionCtx { has_call_parens : true , .. } ) => ( name, escaped_name. to_string ( ) ) ,
64+ let ( label, lookup, pat) = match path_ctx {
65+ Some ( PathCompletionCtx { has_call_parens : true , .. } ) => {
66+ ( name. clone ( ) , name, escaped_name. to_string ( ) )
67+ }
6568 _ => {
6669 let kind = variant. kind ( ctx. db ( ) ) ;
6770 let label = format_literal_label ( name. as_str ( ) , kind) ;
71+ let lookup = format_literal_lookup ( name. as_str ( ) , kind) ;
6872 let pat = render_pat (
6973 & ctx,
7074 pattern_ctx,
@@ -73,23 +77,25 @@ pub(crate) fn render_variant_pat(
7377 & visible_fields,
7478 fields_omitted,
7579 ) ?;
76- ( label, pat)
80+ ( label, lookup , pat)
7781 }
7882 } ;
7983
80- Some ( build_completion ( ctx, label, pat, variant) )
84+ Some ( build_completion ( ctx, label, lookup , pat, variant) )
8185}
8286
8387fn build_completion (
8488 ctx : RenderContext < ' _ > ,
8589 label : SmolStr ,
90+ lookup : SmolStr ,
8691 pat : String ,
8792 def : impl HasAttrs + Copy ,
8893) -> CompletionItem {
8994 let mut item = CompletionItem :: new ( CompletionItemKind :: Binding , ctx. source_range ( ) , label) ;
9095 item. set_documentation ( ctx. docs ( def) )
9196 . set_deprecated ( ctx. is_deprecated ( def) )
9297 . detail ( & pat)
98+ . lookup_by ( lookup)
9399 . set_relevance ( ctx. completion_relevance ( ) ) ;
94100 match ctx. snippet_cap ( ) {
95101 Some ( snippet_cap) => item. insert_snippet ( snippet_cap, pat) ,
0 commit comments