diff options
author | bors[bot] <26634292+bors[bot]@users.noreply.github.com> | 2019-09-12 11:45:47 +0100 |
---|---|---|
committer | GitHub <[email protected]> | 2019-09-12 11:45:47 +0100 |
commit | 561e7aea5bdaf6c51e0a87da9ff1d73e2df52be1 (patch) | |
tree | acb43ce2f904a5e79af45ff0706b9f69a273d210 /crates/ra_ide_api/src/completion/complete_macro_in_item_position.rs | |
parent | dfcbdcb9a3a329686eedfc18518c675a6f80f338 (diff) | |
parent | 9c2a3da67cee6f941b4ad77bdb2b7552c8afdb7f (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.rs | 32 |
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 | } |