diff options
author | Benjamin Coenen <[email protected]> | 2020-06-18 20:31:49 +0100 |
---|---|---|
committer | Benjamin Coenen <[email protected]> | 2020-06-18 20:31:49 +0100 |
commit | 3f26c5758d7beb1207ed187b71fe9fa6fcaa03ec (patch) | |
tree | fc47f0b81a6bc44346b91485cb0dce70a82e5d8a /crates/ra_ide/src/completion | |
parent | 9aad07dbea39132692ff68bd421b88aad9644d81 (diff) |
don't complete top level attrs inside nested attrs and add better labels #4890
Signed-off-by: Benjamin Coenen <[email protected]>
Diffstat (limited to 'crates/ra_ide/src/completion')
-rw-r--r-- | crates/ra_ide/src/completion/complete_attribute.rs | 24 |
1 files changed, 8 insertions, 16 deletions
diff --git a/crates/ra_ide/src/completion/complete_attribute.rs b/crates/ra_ide/src/completion/complete_attribute.rs index 814d7109d..9c7ccc950 100644 --- a/crates/ra_ide/src/completion/complete_attribute.rs +++ b/crates/ra_ide/src/completion/complete_attribute.rs | |||
@@ -22,24 +22,18 @@ pub(super) fn complete_attribute(acc: &mut Completions, ctx: &CompletionContext) | |||
22 | } | 22 | } |
23 | (_, Some(ast::AttrInput::TokenTree(token_tree))) => { | 23 | (_, Some(ast::AttrInput::TokenTree(token_tree))) => { |
24 | let token_tree_str = token_tree.to_string(); | 24 | let token_tree_str = token_tree.to_string(); |
25 | complete_attribute_start( | 25 | let nested = token_tree_str.starts_with('(') && token_tree_str.ends_with(')'); |
26 | acc, | 26 | |
27 | ctx, | 27 | if !nested { |
28 | attribute, | 28 | complete_attribute_start(acc, ctx, attribute); |
29 | token_tree_str.starts_with('(') && token_tree_str.ends_with(')'), | 29 | } |
30 | ) | ||
31 | } | 30 | } |
32 | _ => complete_attribute_start(acc, ctx, attribute, false), | 31 | _ => complete_attribute_start(acc, ctx, attribute), |
33 | } | 32 | } |
34 | Some(()) | 33 | Some(()) |
35 | } | 34 | } |
36 | 35 | ||
37 | fn complete_attribute_start( | 36 | fn complete_attribute_start(acc: &mut Completions, ctx: &CompletionContext, attribute: &ast::Attr) { |
38 | acc: &mut Completions, | ||
39 | ctx: &CompletionContext, | ||
40 | attribute: &ast::Attr, | ||
41 | nested: bool, | ||
42 | ) { | ||
43 | for attr_completion in ATTRIBUTES { | 37 | for attr_completion in ATTRIBUTES { |
44 | let mut item = CompletionItem::new( | 38 | let mut item = CompletionItem::new( |
45 | CompletionKind::Attribute, | 39 | CompletionKind::Attribute, |
@@ -56,9 +50,7 @@ fn complete_attribute_start( | |||
56 | } | 50 | } |
57 | 51 | ||
58 | if attribute.kind() == ast::AttrKind::Inner || !attr_completion.should_be_inner { | 52 | if attribute.kind() == ast::AttrKind::Inner || !attr_completion.should_be_inner { |
59 | if (nested && attr_completion.should_be_inner) || !nested { | 53 | acc.add(item); |
60 | acc.add(item); | ||
61 | } | ||
62 | } | 54 | } |
63 | } | 55 | } |
64 | } | 56 | } |