@@ -8,7 +8,7 @@ use syntax::SmolStr;
8
8
use crate :: {
9
9
context:: { ParamContext , ParamKind , PathCompletionCtx , PatternContext } ,
10
10
render:: {
11
- variant:: { format_literal_label, visible_fields} ,
11
+ variant:: { format_literal_label, format_literal_lookup , visible_fields} ,
12
12
RenderContext ,
13
13
} ,
14
14
CompletionItem , CompletionItemKind ,
@@ -34,9 +34,10 @@ pub(crate) fn render_struct_pat(
34
34
let ( name, escaped_name) = ( name. unescaped ( ) . to_smol_str ( ) , name. to_smol_str ( ) ) ;
35
35
let kind = strukt. kind ( ctx. db ( ) ) ;
36
36
let label = format_literal_label ( name. as_str ( ) , kind) ;
37
+ let lookup = format_literal_lookup ( name. as_str ( ) , kind) ;
37
38
let pat = render_pat ( & ctx, pattern_ctx, & escaped_name, kind, & visible_fields, fields_omitted) ?;
38
39
39
- Some ( build_completion ( ctx, label, pat, strukt) )
40
+ Some ( build_completion ( ctx, label, lookup , pat, strukt) )
40
41
}
41
42
42
43
pub ( crate ) fn render_variant_pat (
@@ -60,11 +61,14 @@ pub(crate) fn render_variant_pat(
60
61
}
61
62
} ;
62
63
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
+ }
65
68
_ => {
66
69
let kind = variant. kind ( ctx. db ( ) ) ;
67
70
let label = format_literal_label ( name. as_str ( ) , kind) ;
71
+ let lookup = format_literal_lookup ( name. as_str ( ) , kind) ;
68
72
let pat = render_pat (
69
73
& ctx,
70
74
pattern_ctx,
@@ -73,23 +77,25 @@ pub(crate) fn render_variant_pat(
73
77
& visible_fields,
74
78
fields_omitted,
75
79
) ?;
76
- ( label, pat)
80
+ ( label, lookup , pat)
77
81
}
78
82
} ;
79
83
80
- Some ( build_completion ( ctx, label, pat, variant) )
84
+ Some ( build_completion ( ctx, label, lookup , pat, variant) )
81
85
}
82
86
83
87
fn build_completion (
84
88
ctx : RenderContext < ' _ > ,
85
89
label : SmolStr ,
90
+ lookup : SmolStr ,
86
91
pat : String ,
87
92
def : impl HasAttrs + Copy ,
88
93
) -> CompletionItem {
89
94
let mut item = CompletionItem :: new ( CompletionItemKind :: Binding , ctx. source_range ( ) , label) ;
90
95
item. set_documentation ( ctx. docs ( def) )
91
96
. set_deprecated ( ctx. is_deprecated ( def) )
92
97
. detail ( & pat)
98
+ . lookup_by ( lookup)
93
99
. set_relevance ( ctx. completion_relevance ( ) ) ;
94
100
match ctx. snippet_cap ( ) {
95
101
Some ( snippet_cap) => item. insert_snippet ( snippet_cap, pat) ,
0 commit comments