Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/ide_completion/src/completions/postfix.rs')
| -rw-r--r-- | crates/ide_completion/src/completions/postfix.rs | 45 |
1 files changed, 24 insertions, 21 deletions
diff --git a/crates/ide_completion/src/completions/postfix.rs b/crates/ide_completion/src/completions/postfix.rs index a640b7d073..4df6c36ebe 100644 --- a/crates/ide_completion/src/completions/postfix.rs +++ b/crates/ide_completion/src/completions/postfix.rs @@ -56,7 +56,7 @@ pub(crate) fn complete_postfix(acc: &mut Completions, ctx: &CompletionContext) { let postfix_snippet = build_postfix_snippet_builder(ctx, cap, &dot_receiver); - if !ctx.config.postfix_snippets.is_empty() { + if !ctx.config.snippets.is_empty() { add_custom_postfix_completions(acc, ctx, &postfix_snippet, &receiver_text); } @@ -230,21 +230,23 @@ fn add_custom_postfix_completions( ) -> Option<()> { let import_scope = ImportScope::find_insert_use_container_with_macros(&ctx.token.parent()?, &ctx.sema)?; - ctx.config.postfix_snippets.iter().for_each(|snippet| { - let imports = match snippet.imports(ctx, &import_scope) { - Some(imports) => imports, - None => return, - }; - let mut builder = postfix_snippet( - &snippet.label, - snippet.description.as_deref().unwrap_or_default(), - &format!("{}", snippet.snippet(&receiver_text)), - ); - for import in imports.into_iter() { - builder.add_import(import); - } - builder.add_to(acc); - }); + ctx.config.postfix_snippets().filter(|(_, snip)| snip.is_expr()).for_each( + |(trigger, snippet)| { + let imports = match snippet.imports(ctx, &import_scope) { + Some(imports) => imports, + None => return, + }; + let mut builder = postfix_snippet( + trigger, + snippet.description.as_deref().unwrap_or_default(), + &snippet.postfix_snippet(&receiver_text), + ); + for import in imports.into_iter() { + builder.add_import(import); + } + builder.add_to(acc); + }, + ); None } @@ -254,7 +256,7 @@ mod tests { use crate::{ tests::{check_edit, check_edit_with_config, filtered_completion_list, TEST_CONFIG}, - CompletionConfig, CompletionKind, PostfixSnippet, + CompletionConfig, CompletionKind, Snippet, }; fn check(ra_fixture: &str, expect: Expect) { @@ -476,12 +478,13 @@ fn main() { fn custom_postfix_completion() { check_edit_with_config( CompletionConfig { - postfix_snippets: vec![PostfixSnippet::new( - "break".into(), - &["ControlFlow::Break($receiver)".into()], + snippets: vec![Snippet::new( &[], + &["break".into()], + &["ControlFlow::Break($receiver)".into()], + "", &["core::ops::ControlFlow".into()], - crate::PostfixSnippetScope::Expr, + crate::SnippetScope::Expr, ) .unwrap()], ..TEST_CONFIG |