aboutsummaryrefslogtreecommitdiff
path: root/crates/ra_ide_api/src/completion/complete_macro_in_item_position.rs
diff options
context:
space:
mode:
authorbors[bot] <26634292+bors[bot]@users.noreply.github.com>2019-09-12 11:45:47 +0100
committerGitHub <[email protected]>2019-09-12 11:45:47 +0100
commit561e7aea5bdaf6c51e0a87da9ff1d73e2df52be1 (patch)
treeacb43ce2f904a5e79af45ff0706b9f69a273d210 /crates/ra_ide_api/src/completion/complete_macro_in_item_position.rs
parentdfcbdcb9a3a329686eedfc18518c675a6f80f338 (diff)
parent9c2a3da67cee6f941b4ad77bdb2b7552c8afdb7f (diff)
Merge #1821
1821: Macro completion tweaks r=matklad a=SomeoneToIgnore Thanks @uHOOCCOOHu for making the macro completion happen :) I've added a few tweaks to the current completion to make it a bit more convenient: * Automatically add braces and put the editor cursor inside of them: <img width="159" alt="image" src="https://user-images.githubusercontent.com/2690773/64737220-022b9f00-d4f5-11e9-8088-76d4678921ab.png"> Currently I have to add the braces manually which is a bit cumbersome. One further improvement can be to detect if macro accepts no parameters and place the cursor differently for this case. * Add an exclamation mark to the macro completion label This helps to distinguish macros from other completion items and also allows to show only macros in completion if you type `!`: <img width="722" alt="image" src="https://user-images.githubusercontent.com/2690773/64736987-8b8ea180-d4f4-11e9-8355-2ce4f83b7aa8.png"> <img width="732" alt="image" src="https://user-images.githubusercontent.com/2690773/64737214-ffc94500-d4f4-11e9-946e-1ba2db1c7fb1.png"> Additionally, automatic formatting hooks had adjusted two `help.rs` files, I've added them as a last commit to the PR even though they are not really related. Co-authored-by: Kirill Bulatov <[email protected]>
Diffstat (limited to 'crates/ra_ide_api/src/completion/complete_macro_in_item_position.rs')
-rw-r--r--crates/ra_ide_api/src/completion/complete_macro_in_item_position.rs32
1 files changed, 30 insertions, 2 deletions
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..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
@@ -37,14 +37,42 @@ mod tests {
37 ), 37 ),
38 @r##"[ 38 @r##"[
39 CompletionItem { 39 CompletionItem {
40 label: "foo", 40 label: "foo!",
41 source_range: [46; 46), 41 source_range: [46; 46),
42 delete: [46; 46), 42 delete: [46; 46),
43 insert: "foo!", 43 insert: "foo!($0)",
44 kind: Macro, 44 kind: Macro,
45 detail: "macro_rules! foo", 45 detail: "macro_rules! foo",
46 }, 46 },
47]"## 47]"##
48 ); 48 );
49 } 49 }
50
51 #[test]
52 fn completes_vec_macros_with_square_brackets() {
53 assert_debug_snapshot!(
54 do_reference_completion(
55 "
56 //- /main.rs
57 macro_rules! vec {
58 () => {}
59 }
60
61 fn foo() {}
62
63 <|>
64 "
65 ),
66 @r##"[
67 CompletionItem {
68 label: "vec!",
69 source_range: [46; 46),
70 delete: [46; 46),
71 insert: "vec![$0]",
72 kind: Macro,
73 detail: "macro_rules! vec",
74 },
75]"##
76 );
77 }
50} 78}