diff --git a/crates/project/src/project.rs b/crates/project/src/project.rs index 2ebea8d07d..f93de8e1d8 100644 --- a/crates/project/src/project.rs +++ b/crates/project/src/project.rs @@ -1434,7 +1434,19 @@ impl Project { let worktree = file.worktree.clone(); let path = file.path.clone(); worktree.update(cx, |worktree, cx| match worktree { - Worktree::Local(worktree) => worktree.save_buffer(buffer, path, false, cx), + Worktree::Local(worktree) => { + if buffer.read(cx).is_dirty() || buffer.read(cx).has_conflict() { + worktree.save_buffer(buffer, path, false, cx) + } else { + buffer.update(cx, |buffer, cx| { + let version = buffer.saved_version().clone(); + let fingerprint = buffer.saved_version_fingerprint(); + let mtime = buffer.saved_mtime(); + buffer.did_save(version.clone(), fingerprint, mtime, cx); + Task::ready(Ok((version, fingerprint, mtime))) + }) + } + } Worktree::Remote(worktree) => worktree.save_buffer(buffer, cx), }) }