Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/ide-completion/src/completions/macro_def.rs')
-rw-r--r--crates/ide-completion/src/completions/macro_def.rs31
1 files changed, 31 insertions, 0 deletions
diff --git a/crates/ide-completion/src/completions/macro_def.rs b/crates/ide-completion/src/completions/macro_def.rs
new file mode 100644
index 0000000000..2c8e7a2e62
--- /dev/null
+++ b/crates/ide-completion/src/completions/macro_def.rs
@@ -0,0 +1,31 @@
+//! Completion for macro meta-variable segments
+
+use ide_db::SymbolKind;
+
+use crate::{CompletionItem, Completions, context::CompletionContext};
+
+pub(crate) fn complete_macro_segment(acc: &mut Completions, ctx: &CompletionContext<'_>) {
+ for &label in MACRO_SEGMENTS {
+ let item =
+ CompletionItem::new(SymbolKind::BuiltinAttr, ctx.source_range(), label, ctx.edition);
+ item.add_to(acc, ctx.db);
+ }
+}
+
+const MACRO_SEGMENTS: &[&str] = &[
+ "ident",
+ "block",
+ "stmt",
+ "expr",
+ "pat",
+ "ty",
+ "lifetime",
+ "literal",
+ "path",
+ "meta",
+ "tt",
+ "item",
+ "vis",
+ "expr_2021",
+ "pat_param",
+];