mirror of
https://github.com/zed-industries/zed.git
synced 2024-10-28 01:07:09 +00:00
Avoid saving buffer if it's neither dirty nor in conflict
However, keep emitting `Saved` events so that the language server is notified and can perform tasks related to saving (e.g., running `cargo check` in the case of rust-analyzer).
This commit is contained in:
parent
a435dc1339
commit
b687aec9d9
1 changed files with 13 additions and 1 deletions
|
@ -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),
|
||||
})
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue