Don't consider empty deleted files to be dirty or conflicting (#27701)

When a file is deleted outside of Zed, but it doesn't have any unsaved
changes, it shouldn't be considered "dirty" (prompting you before you
close it).

Release Notes:

- Fixed an bug where unchanged buffers were marked as conflicting if
their files were deleted outside of Zed.

---------

Co-authored-by: Antonio <antonio@zed.dev>
This commit is contained in:
Max Brunsfeld 2025-03-28 14:17:16 -07:00 committed by GitHub
parent 5c0adde7bb
commit 9445005bff
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 43 additions and 11 deletions

View file

@ -1950,13 +1950,14 @@ impl Buffer {
if self.capability == Capability::ReadOnly {
return false;
}
if self.has_conflict || self.has_unsaved_edits() {
if self.has_conflict {
return true;
}
match self.file.as_ref().map(|f| f.disk_state()) {
Some(DiskState::New) => !self.is_empty(),
Some(DiskState::Deleted) => true,
_ => false,
Some(DiskState::New) | Some(DiskState::Deleted) => {
!self.is_empty() && self.has_unsaved_edits()
}
_ => self.has_unsaved_edits(),
}
}
@ -1977,7 +1978,7 @@ impl Buffer {
}
None => true,
},
DiskState::Deleted => true,
DiskState::Deleted => false,
}
}