Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/ide-completion/src/render/variant.rs')
-rw-r--r--crates/ide-completion/src/render/variant.rs23
1 files changed, 18 insertions, 5 deletions
diff --git a/crates/ide-completion/src/render/variant.rs b/crates/ide-completion/src/render/variant.rs
index 24e6abdc9a..55c55725be 100644
--- a/crates/ide-completion/src/render/variant.rs
+++ b/crates/ide-completion/src/render/variant.rs
@@ -22,6 +22,9 @@ pub(crate) fn render_record_lit(
fields: &[hir::Field],
path: &str,
) -> RenderedLiteral {
+ if snippet_cap.is_none() {
+ return RenderedLiteral { literal: path.to_string(), detail: path.to_string() };
+ }
let completions = fields.iter().enumerate().format_with(", ", |(idx, field), f| {
if snippet_cap.is_some() {
f(&format_args!("{}: ${{{}:()}}", field.name(db), idx + 1))
@@ -35,8 +38,8 @@ pub(crate) fn render_record_lit(
});
RenderedLiteral {
- literal: format!("{} {{ {} }}", path, completions),
- detail: format!("{} {{ {} }}", path, types),
+ literal: format!("{path} {{ {completions} }}"),
+ detail: format!("{path} {{ {types} }}"),
}
}
@@ -48,6 +51,9 @@ pub(crate) fn render_tuple_lit(
fields: &[hir::Field],
path: &str,
) -> RenderedLiteral {
+ if snippet_cap.is_none() {
+ return RenderedLiteral { literal: path.to_string(), detail: path.to_string() };
+ }
let completions = fields.iter().enumerate().format_with(", ", |(idx, _), f| {
if snippet_cap.is_some() {
f(&format_args!("${{{}:()}}", idx + 1))
@@ -59,8 +65,8 @@ pub(crate) fn render_tuple_lit(
let types = fields.iter().format_with(", ", |field, f| f(&field.ty(db).display(db)));
RenderedLiteral {
- literal: format!("{}({})", path, completions),
- detail: format!("{}({})", path, types),
+ literal: format!("{path}({completions})"),
+ detail: format!("{path}({types})"),
}
}
@@ -87,7 +93,14 @@ pub(crate) fn visible_fields(
}
/// Format a struct, etc. literal option for display in the completions menu.
-pub(crate) fn format_literal_label(name: &str, kind: StructKind) -> SmolStr {
+pub(crate) fn format_literal_label(
+ name: &str,
+ kind: StructKind,
+ snippet_cap: Option<SnippetCap>,
+) -> SmolStr {
+ if snippet_cap.is_none() {
+ return name.into();
+ }
match kind {
StructKind::Tuple => SmolStr::from_iter([name, "(…)"]),
StructKind::Record => SmolStr::from_iter([name, " {…}"]),