From dd1ff9b99863b3f7805a18694a51baa6b0612851 Mon Sep 17 00:00:00 2001 From: Conrad Irwin Date: Tue, 25 Feb 2025 23:29:17 -0700 Subject: [PATCH] Git: Fix prompts with a very large number of filenames (#25629) Closes #ISSUE Release Notes: - N/A --- crates/git_ui/src/git_panel.rs | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/crates/git_ui/src/git_panel.rs b/crates/git_ui/src/git_panel.rs index 8f83f793bb706b3a7e123ce351ac6ef570ba5002..9266c05f5dd344d7d97dc6547ea765bfe3c915fe 100644 --- a/crates/git_ui/src/git_panel.rs +++ b/crates/git_ui/src/git_panel.rs @@ -854,11 +854,15 @@ impl GitPanel { 1 => return self.revert_entry(&entries[0], window, cx), _ => {} } - let details = entries + let mut details = entries .iter() .filter_map(|entry| entry.repo_path.0.file_name()) .map(|filename| filename.to_string_lossy()) + .take(5) .join("\n"); + if entries.len() > 5 { + details.push_str(&format!("\nand {} more…", entries.len() - 5)) + } #[derive(strum::EnumIter, strum::VariantNames)] #[strum(serialize_all = "title_case")] @@ -908,7 +912,7 @@ impl GitPanel { _ => {} }; - let details = to_delete + let mut details = to_delete .iter() .map(|entry| { entry @@ -918,8 +922,13 @@ impl GitPanel { .map(|f| f.to_string_lossy()) .unwrap_or_default() }) + .take(5) .join("\n"); + if to_delete.len() > 5 { + details.push_str(&format!("\nand {} more…", to_delete.len() - 5)) + } + let prompt = prompt("Trash these files?", Some(&details), window, cx); cx.spawn_in(window, |this, mut cx| async move { match prompt.await? {