Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/ide-completion/src/completions/item_list.rs')
| -rw-r--r-- | crates/ide-completion/src/completions/item_list.rs | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/crates/ide-completion/src/completions/item_list.rs b/crates/ide-completion/src/completions/item_list.rs index 6c001bd16b..39048e4400 100644 --- a/crates/ide-completion/src/completions/item_list.rs +++ b/crates/ide-completion/src/completions/item_list.rs @@ -87,6 +87,9 @@ fn add_keywords(acc: &mut Completions, ctx: &CompletionContext<'_>, kind: Option let in_block = kind.is_none(); let no_vis_qualifiers = ctx.qualifier_ctx.vis_node.is_none(); + let no_abi_qualifiers = ctx.qualifier_ctx.abi_node.is_none(); + let has_extern_kw = + ctx.qualifier_ctx.abi_node.as_ref().is_some_and(|it| it.string_token().is_none()); let has_unsafe_kw = ctx.qualifier_ctx.unsafe_tok.is_some(); let has_async_kw = ctx.qualifier_ctx.async_tok.is_some(); let has_safe_kw = ctx.qualifier_ctx.safe_tok.is_some(); @@ -118,7 +121,7 @@ fn add_keywords(acc: &mut Completions, ctx: &CompletionContext<'_>, kind: Option } } - if !has_async_kw && no_vis_qualifiers && in_item_list { + if !has_async_kw && no_vis_qualifiers && no_abi_qualifiers && in_item_list { add_keyword("extern", "extern $0"); } @@ -159,11 +162,14 @@ fn add_keywords(acc: &mut Completions, ctx: &CompletionContext<'_>, kind: Option add_keyword("static", "static $1: $2;"); } else { if !in_inherent_impl { - if !in_trait { + if !in_trait && no_abi_qualifiers { add_keyword("extern", "extern $0"); } add_keyword("type", "type $0"); } + if has_extern_kw { + add_keyword("crate", "crate $0;"); + } add_keyword("fn", "fn $1($2) {\n $0\n}"); add_keyword("unsafe", "unsafe $0"); |