From d1cdacdf149b9569bd461042f950f5ee71f5fb03 Mon Sep 17 00:00:00 2001 From: Antonio Scandurra Date: Wed, 29 Jun 2022 17:00:16 +0200 Subject: [PATCH] Skip ignored entries when recording worktree extensions Co-Authored-By: Nathan Sobo --- crates/project/src/worktree.rs | 34 +++++++++++++++++++--------------- 1 file changed, 19 insertions(+), 15 deletions(-) diff --git a/crates/project/src/worktree.rs b/crates/project/src/worktree.rs index 5900c9b079..4d2b8631f6 100644 --- a/crates/project/src/worktree.rs +++ b/crates/project/src/worktree.rs @@ -1455,9 +1455,9 @@ impl LocalSnapshot { ); if let Some(removed_entry) = removed_entry { - self.dec_extension_count(&removed_entry.path); + self.dec_extension_count(&removed_entry.path, removed_entry.is_ignored); } - self.inc_extension_count(&entry.path); + self.inc_extension_count(&entry.path, entry.is_ignored); entry } @@ -1494,7 +1494,7 @@ impl LocalSnapshot { for mut entry in entries { self.reuse_entry_id(&mut entry); - self.inc_extension_count(&entry.path); + self.inc_extension_count(&entry.path, entry.is_ignored); entries_by_id_edits.push(Edit::Insert(PathEntry { id: entry.id, path: entry.path.clone(), @@ -1508,24 +1508,28 @@ impl LocalSnapshot { let removed_entries = self.entries_by_id.edit(entries_by_id_edits, &()); for removed_entry in removed_entries { - self.dec_extension_count(&removed_entry.path); + self.dec_extension_count(&removed_entry.path, removed_entry.is_ignored); } } - fn inc_extension_count(&mut self, path: &Path) { - if let Some(extension) = path.extension() { - if let Some(count) = self.extension_counts.get_mut(extension) { - *count += 1; - } else { - self.extension_counts.insert(extension.into(), 1); + fn inc_extension_count(&mut self, path: &Path, ignored: bool) { + if !ignored { + if let Some(extension) = path.extension() { + if let Some(count) = self.extension_counts.get_mut(extension) { + *count += 1; + } else { + self.extension_counts.insert(extension.into(), 1); + } } } } - fn dec_extension_count(&mut self, path: &Path) { - if let Some(extension) = path.extension() { - if let Some(count) = self.extension_counts.get_mut(extension) { - *count -= 1; + fn dec_extension_count(&mut self, path: &Path, ignored: bool) { + if !ignored { + if let Some(extension) = path.extension() { + if let Some(count) = self.extension_counts.get_mut(extension) { + *count -= 1; + } } } } @@ -1557,7 +1561,7 @@ impl LocalSnapshot { .or_insert(entry.id); *removed_entry_id = cmp::max(*removed_entry_id, entry.id); entries_by_id_edits.push(Edit::Remove(entry.id)); - self.dec_extension_count(&entry.path); + self.dec_extension_count(&entry.path, entry.is_ignored); } self.entries_by_id.edit(entries_by_id_edits, &());