Do not format or fully save non-dirty buffers (#9813)

Fixes https://github.com/zed-industries/zed/issues/9475

Release Notes:

- Start skipping formatting and actual FS saving for non-dirty buffers
([9475](https://github.com/zed-industries/zed/issues/9475))
This commit is contained in:
Kirill Bulatov
2024-03-26 17:17:20 +02:00
committed by GitHub
parent f495ee0848
commit 9d4c6c60fb
3 changed files with 282 additions and 40 deletions
+5 -2
View File
@@ -8264,14 +8264,17 @@ impl Editor {
cx: &mut ViewContext<Self>,
) -> Task<Result<()>> {
let buffer = self.buffer().clone();
let buffers = buffer.read(cx).all_buffers();
let mut buffers = buffer.read(cx).all_buffers();
if trigger == FormatTrigger::Save {
buffers.retain(|buffer| buffer.read(cx).is_dirty());
}
let mut timeout = cx.background_executor().timer(FORMAT_TIMEOUT).fuse();
let format = project.update(cx, |project, cx| project.format(buffers, true, trigger, cx));
cx.spawn(|_, mut cx| async move {
let transaction = futures::select_biased! {
_ = timeout => {
() = timeout => {
log::warn!("timed out waiting for formatting");
None
}