Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/ide_completion/src/render/compound.rs')
| -rw-r--r-- | crates/ide_completion/src/render/compound.rs | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/crates/ide_completion/src/render/compound.rs b/crates/ide_completion/src/render/compound.rs index 19bc53203a..a1a199c6e2 100644 --- a/crates/ide_completion/src/render/compound.rs +++ b/crates/ide_completion/src/render/compound.rs @@ -1,9 +1,10 @@ //! Code common to structs, unions, and enum variants. use crate::render::RenderContext; -use hir::{db::HirDatabase, HasAttrs, HasVisibility, HirDisplay}; +use hir::{db::HirDatabase, HasAttrs, HasVisibility, HirDisplay, StructKind}; use ide_db::SnippetCap; use itertools::Itertools; +use syntax::SmolStr; /// A rendered struct, union, or enum variant, split into fields for actual /// auto-completion (`literal`, using `field: ()`) and display in the @@ -91,3 +92,12 @@ pub(crate) fn visible_fields( n_fields - fields.len() > 0 || item.attrs(ctx.db()).by_key("non_exhaustive").exists(); Some((fields, fields_omitted)) } + +/// Format a struct, etc. literal option for display in the completions menu. +pub(crate) fn format_literal_label(name: &str, kind: StructKind) -> SmolStr { + match kind { + StructKind::Tuple => SmolStr::from_iter([name, "(…)"]), + StructKind::Record => SmolStr::from_iter([name, " {…}"]), + StructKind::Unit => name.into(), + } +} |