From 037e02c08da80f25a6e0ddac06b36adac93f2076 Mon Sep 17 00:00:00 2001 From: Kirill Bulatov Date: Thu, 12 Sep 2019 00:02:07 +0300 Subject: Complete macros parenthesis --- .../src/completion/complete_macro_in_item_position.rs | 2 +- crates/ra_ide_api/src/completion/complete_path.rs | 2 +- crates/ra_ide_api/src/completion/complete_scope.rs | 12 ++++++------ crates/ra_ide_api/src/completion/presentation.rs | 2 +- 4 files changed, 9 insertions(+), 9 deletions(-) (limited to 'crates/ra_ide_api/src') diff --git a/crates/ra_ide_api/src/completion/complete_macro_in_item_position.rs b/crates/ra_ide_api/src/completion/complete_macro_in_item_position.rs index 708dc9777..dfba97f17 100644 --- a/crates/ra_ide_api/src/completion/complete_macro_in_item_position.rs +++ b/crates/ra_ide_api/src/completion/complete_macro_in_item_position.rs @@ -40,7 +40,7 @@ mod tests { label: "foo", source_range: [46; 46), delete: [46; 46), - insert: "foo!", + insert: "foo!($0)", kind: Macro, detail: "macro_rules! foo", }, diff --git a/crates/ra_ide_api/src/completion/complete_path.rs b/crates/ra_ide_api/src/completion/complete_path.rs index 31e7dffe8..465edf6dd 100644 --- a/crates/ra_ide_api/src/completion/complete_path.rs +++ b/crates/ra_ide_api/src/completion/complete_path.rs @@ -608,7 +608,7 @@ mod tests { label: "foo", source_range: [179; 179), delete: [179; 179), - insert: "foo!", + insert: "foo!($0)", kind: Macro, detail: "#[macro_export]\nmacro_rules! foo", }, diff --git a/crates/ra_ide_api/src/completion/complete_scope.rs b/crates/ra_ide_api/src/completion/complete_scope.rs index 2062e7300..7380d8508 100644 --- a/crates/ra_ide_api/src/completion/complete_scope.rs +++ b/crates/ra_ide_api/src/completion/complete_scope.rs @@ -571,7 +571,7 @@ mod tests { label: "bar", source_range: [252; 252), delete: [252; 252), - insert: "bar!", + insert: "bar!($0)", kind: Macro, detail: "macro_rules! bar", }, @@ -579,7 +579,7 @@ mod tests { label: "baz", source_range: [252; 252), delete: [252; 252), - insert: "baz!", + insert: "baz!($0)", kind: Macro, detail: "#[macro_export]\nmacro_rules! baz", }, @@ -587,7 +587,7 @@ mod tests { label: "foo", source_range: [252; 252), delete: [252; 252), - insert: "foo!", + insert: "foo!($0)", kind: Macro, detail: "macro_rules! foo", }, @@ -637,7 +637,7 @@ mod tests { label: "foo", source_range: [49; 49), delete: [49; 49), - insert: "foo!", + insert: "foo!($0)", kind: Macro, detail: "macro_rules! foo", }, @@ -673,7 +673,7 @@ mod tests { label: "foo", source_range: [57; 57), delete: [57; 57), - insert: "foo!", + insert: "foo!($0)", kind: Macro, detail: "macro_rules! foo", }, @@ -709,7 +709,7 @@ mod tests { label: "foo", source_range: [50; 50), delete: [50; 50), - insert: "foo!", + insert: "foo!($0)", kind: Macro, detail: "macro_rules! foo", }, diff --git a/crates/ra_ide_api/src/completion/presentation.rs b/crates/ra_ide_api/src/completion/presentation.rs index 1b706bb13..1995e8971 100644 --- a/crates/ra_ide_api/src/completion/presentation.rs +++ b/crates/ra_ide_api/src/completion/presentation.rs @@ -114,7 +114,7 @@ impl Completions { .kind(CompletionItemKind::Macro) .set_documentation(macro_.docs(ctx.db)) .detail(detail) - .insert_snippet(format!("{}!", name)); + .insert_snippet(format!("{}!($0)", name)); self.add(builder); } -- cgit v1.2.3 From 1852b272334b436865cb36089a91b5dba3148c7f Mon Sep 17 00:00:00 2001 From: Kirill Bulatov Date: Thu, 12 Sep 2019 00:24:39 +0300 Subject: Add `!` to the macro completion label --- .../completion/complete_macro_in_item_position.rs | 2 +- crates/ra_ide_api/src/completion/complete_path.rs | 2 +- crates/ra_ide_api/src/completion/complete_scope.rs | 24 +++++++++++----------- crates/ra_ide_api/src/completion/presentation.rs | 16 +++++++++------ 4 files changed, 24 insertions(+), 20 deletions(-) (limited to 'crates/ra_ide_api/src') diff --git a/crates/ra_ide_api/src/completion/complete_macro_in_item_position.rs b/crates/ra_ide_api/src/completion/complete_macro_in_item_position.rs index dfba97f17..a08fb3b5c 100644 --- a/crates/ra_ide_api/src/completion/complete_macro_in_item_position.rs +++ b/crates/ra_ide_api/src/completion/complete_macro_in_item_position.rs @@ -37,7 +37,7 @@ mod tests { ), @r##"[ CompletionItem { - label: "foo", + label: "foo!", source_range: [46; 46), delete: [46; 46), insert: "foo!($0)", diff --git a/crates/ra_ide_api/src/completion/complete_path.rs b/crates/ra_ide_api/src/completion/complete_path.rs index 465edf6dd..457a3d10c 100644 --- a/crates/ra_ide_api/src/completion/complete_path.rs +++ b/crates/ra_ide_api/src/completion/complete_path.rs @@ -605,7 +605,7 @@ mod tests { ), @r###"[ CompletionItem { - label: "foo", + label: "foo!", source_range: [179; 179), delete: [179; 179), insert: "foo!($0)", diff --git a/crates/ra_ide_api/src/completion/complete_scope.rs b/crates/ra_ide_api/src/completion/complete_scope.rs index 7380d8508..2ea22876f 100644 --- a/crates/ra_ide_api/src/completion/complete_scope.rs +++ b/crates/ra_ide_api/src/completion/complete_scope.rs @@ -568,7 +568,7 @@ mod tests { ), @r##"[ CompletionItem { - label: "bar", + label: "bar!", source_range: [252; 252), delete: [252; 252), insert: "bar!($0)", @@ -576,7 +576,7 @@ mod tests { detail: "macro_rules! bar", }, CompletionItem { - label: "baz", + label: "baz!", source_range: [252; 252), delete: [252; 252), insert: "baz!($0)", @@ -584,7 +584,7 @@ mod tests { detail: "#[macro_export]\nmacro_rules! baz", }, CompletionItem { - label: "foo", + label: "foo!", source_range: [252; 252), delete: [252; 252), insert: "foo!($0)", @@ -637,17 +637,17 @@ mod tests { label: "foo", source_range: [49; 49), delete: [49; 49), - insert: "foo!($0)", - kind: Macro, - detail: "macro_rules! foo", + insert: "foo()$0", + kind: Function, + detail: "fn foo()", }, CompletionItem { - label: "foo", + label: "foo!", source_range: [49; 49), delete: [49; 49), - insert: "foo()$0", - kind: Function, - detail: "fn foo()", + insert: "foo!($0)", + kind: Macro, + detail: "macro_rules! foo", }, ]"## ); @@ -670,7 +670,7 @@ mod tests { ), @r##"[ CompletionItem { - label: "foo", + label: "foo!", source_range: [57; 57), delete: [57; 57), insert: "foo!($0)", @@ -706,7 +706,7 @@ mod tests { ), @r##"[ CompletionItem { - label: "foo", + label: "foo!", source_range: [50; 50), delete: [50; 50), insert: "foo!($0)", diff --git a/crates/ra_ide_api/src/completion/presentation.rs b/crates/ra_ide_api/src/completion/presentation.rs index 1995e8971..301c878b1 100644 --- a/crates/ra_ide_api/src/completion/presentation.rs +++ b/crates/ra_ide_api/src/completion/presentation.rs @@ -108,13 +108,17 @@ impl Completions { let ast_node = macro_.source(ctx.db).ast; if let Some(name) = name { let detail = macro_label(&ast_node); + let code_declaration = name + "!"; - let builder = - CompletionItem::new(CompletionKind::Reference, ctx.source_range(), name.clone()) - .kind(CompletionItemKind::Macro) - .set_documentation(macro_.docs(ctx.db)) - .detail(detail) - .insert_snippet(format!("{}!($0)", name)); + let builder = CompletionItem::new( + CompletionKind::Reference, + ctx.source_range(), + &code_declaration, + ) + .kind(CompletionItemKind::Macro) + .set_documentation(macro_.docs(ctx.db)) + .detail(detail) + .insert_snippet(format!("{}($0)", &code_declaration)); self.add(builder); } -- cgit v1.2.3 From 9c2a3da67cee6f941b4ad77bdb2b7552c8afdb7f Mon Sep 17 00:00:00 2001 From: Kirill Bulatov Date: Thu, 12 Sep 2019 01:27:50 +0300 Subject: Complete vec macros with square brackets --- .../completion/complete_macro_in_item_position.rs | 28 ++++++++++++++++++++++ crates/ra_ide_api/src/completion/presentation.rs | 11 ++++++--- 2 files changed, 36 insertions(+), 3 deletions(-) (limited to 'crates/ra_ide_api/src') diff --git a/crates/ra_ide_api/src/completion/complete_macro_in_item_position.rs b/crates/ra_ide_api/src/completion/complete_macro_in_item_position.rs index a08fb3b5c..6fcef4a72 100644 --- a/crates/ra_ide_api/src/completion/complete_macro_in_item_position.rs +++ b/crates/ra_ide_api/src/completion/complete_macro_in_item_position.rs @@ -44,6 +44,34 @@ mod tests { kind: Macro, detail: "macro_rules! foo", }, +]"## + ); + } + + #[test] + fn completes_vec_macros_with_square_brackets() { + assert_debug_snapshot!( + do_reference_completion( + " + //- /main.rs + macro_rules! vec { + () => {} + } + + fn foo() {} + + <|> + " + ), + @r##"[ + CompletionItem { + label: "vec!", + source_range: [46; 46), + delete: [46; 46), + insert: "vec![$0]", + kind: Macro, + detail: "macro_rules! vec", + }, ]"## ); } diff --git a/crates/ra_ide_api/src/completion/presentation.rs b/crates/ra_ide_api/src/completion/presentation.rs index 301c878b1..5cabe9a32 100644 --- a/crates/ra_ide_api/src/completion/presentation.rs +++ b/crates/ra_ide_api/src/completion/presentation.rs @@ -108,17 +108,22 @@ impl Completions { let ast_node = macro_.source(ctx.db).ast; if let Some(name) = name { let detail = macro_label(&ast_node); - let code_declaration = name + "!"; + + let macro_braces_to_insert = match name.as_str() { + "vec" => "[$0]", + _ => "($0)", + }; + let macro_declaration = name + "!"; let builder = CompletionItem::new( CompletionKind::Reference, ctx.source_range(), - &code_declaration, + ¯o_declaration, ) .kind(CompletionItemKind::Macro) .set_documentation(macro_.docs(ctx.db)) .detail(detail) - .insert_snippet(format!("{}($0)", &code_declaration)); + .insert_snippet(macro_declaration + macro_braces_to_insert); self.add(builder); } -- cgit v1.2.3