@@ -275,23 +275,14 @@ fn completion_item(
275275) {
276276 let insert_replace_support = config. insert_replace_support ( ) . then_some ( tdpp. position ) ;
277277 let ref_match = item. ref_match ( ) ;
278+ let lookup = item. lookup ( ) . to_owned ( ) ;
278279
279280 let mut additional_text_edits = Vec :: new ( ) ;
280281 let mut something_to_resolve = false ;
281282
282- let filter_text = if fields_to_resolve. resolve_filter_text {
283- something_to_resolve = !item. lookup ( ) . is_empty ( ) ;
284- None
285- } else {
286- Some ( item. lookup ( ) . to_owned ( ) )
287- } ;
288-
289283 // LSP does not allow arbitrary edits in completion, so we have to do a
290284 // non-trivial mapping here.
291- let text_edit = if fields_to_resolve. resolve_text_edit {
292- something_to_resolve = true ;
293- None
294- } else {
285+ let text_edit = {
295286 let mut text_edit = None ;
296287 let source_range = item. source_range ;
297288 for indel in item. text_edit {
@@ -314,49 +305,25 @@ fn completion_item(
314305 additional_text_edits. push ( text_edit) ;
315306 }
316307 }
317- Some ( text_edit. unwrap ( ) )
308+ text_edit. unwrap ( )
318309 } ;
319310
320311 let insert_text_format = item. is_snippet . then_some ( lsp_types:: InsertTextFormat :: SNIPPET ) ;
321- let tags = if fields_to_resolve. resolve_tags {
322- something_to_resolve = item. deprecated ;
323- None
324- } else {
325- item. deprecated . then ( || vec ! [ lsp_types:: CompletionItemTag :: DEPRECATED ] )
326- } ;
312+ let tags = item. deprecated . then ( || vec ! [ lsp_types:: CompletionItemTag :: DEPRECATED ] ) ;
327313 let command = if item. trigger_call_info && config. client_commands ( ) . trigger_parameter_hints {
328- if fields_to_resolve. resolve_command {
329- something_to_resolve = true ;
330- Some ( command:: trigger_parameter_hints ( ) )
331- } else {
332- None
333- }
314+ Some ( command:: trigger_parameter_hints ( ) )
334315 } else {
335316 None
336317 } ;
337318
338- let detail = if fields_to_resolve. resolve_detail {
339- something_to_resolve = item. detail . is_some ( ) ;
340- None
341- } else {
342- item. detail
343- } ;
344-
345- let documentation = if fields_to_resolve. resolve_documentation {
346- something_to_resolve = item. documentation . is_some ( ) ;
347- None
348- } else {
349- item. documentation . map ( documentation)
350- } ;
351-
352319 let mut lsp_item = lsp_types:: CompletionItem {
353320 label : item. label . to_string ( ) ,
354- detail,
355- filter_text,
321+ detail : item . detail ,
322+ filter_text : Some ( lookup ) ,
356323 kind : Some ( completion_item_kind ( item. kind ) ) ,
357- text_edit,
324+ text_edit : Some ( text_edit ) ,
358325 additional_text_edits : Some ( additional_text_edits) ,
359- documentation,
326+ documentation : item . documentation . map ( documentation ) ,
360327 deprecated : Some ( item. deprecated ) ,
361328 tags,
362329 command,
@@ -365,40 +332,34 @@ fn completion_item(
365332 } ;
366333
367334 if config. completion_label_details_support ( ) {
368- if fields_to_resolve. resolve_label_details {
369- something_to_resolve = true ;
370- } else {
371- lsp_item. label_details = Some ( lsp_types:: CompletionItemLabelDetails {
372- detail : item. label_detail . as_ref ( ) . map ( ToString :: to_string) ,
373- description : lsp_item. detail . clone ( ) ,
374- } ) ;
375- }
335+ lsp_item. label_details = Some ( lsp_types:: CompletionItemLabelDetails {
336+ detail : item. label_detail . as_ref ( ) . map ( ToString :: to_string) ,
337+ description : lsp_item. detail . clone ( ) ,
338+ } ) ;
376339 } else if let Some ( label_detail) = item. label_detail {
377340 lsp_item. label . push_str ( label_detail. as_str ( ) ) ;
378341 }
379342
380343 set_score ( & mut lsp_item, max_relevance, item. relevance ) ;
381344
382- let imports =
383- if config. completion ( None ) . enable_imports_on_the_fly && !item. import_to_add . is_empty ( ) {
384- item. import_to_add
385- . into_iter ( )
386- . map ( |( import_path, import_name) | lsp_ext:: CompletionImport {
387- full_import_path : import_path,
388- imported_name : import_name,
389- } )
390- . collect ( )
391- } else {
392- Vec :: new ( )
393- } ;
394- if something_to_resolve || !imports. is_empty ( ) {
395- let data = lsp_ext:: CompletionResolveData {
396- position : tdpp. clone ( ) ,
397- imports,
398- version,
399- completion_trigger_character,
400- } ;
401- lsp_item. data = Some ( to_value ( data) . unwrap ( ) ) ;
345+ if config. completion ( None ) . enable_imports_on_the_fly && !item. import_to_add . is_empty ( ) {
346+ let imports = item
347+ . import_to_add
348+ . into_iter ( )
349+ . map ( |( import_path, import_name) | lsp_ext:: CompletionImport {
350+ full_import_path : import_path,
351+ imported_name : import_name,
352+ } )
353+ . collect :: < Vec < _ > > ( ) ;
354+ if !imports. is_empty ( ) {
355+ let data = lsp_ext:: CompletionResolveData {
356+ position : tdpp. clone ( ) ,
357+ imports,
358+ version,
359+ completion_trigger_character,
360+ } ;
361+ lsp_item. data = Some ( to_value ( data) . unwrap ( ) ) ;
362+ }
402363 }
403364
404365 if let Some ( ( label, indel, relevance) ) = ref_match {
0 commit comments