Return back the ability to save non-dirty singleton buffers (#10174)

This commit is contained in:
Kirill Bulatov 2024-04-04 18:06:47 +02:00 committed by GitHub
parent 0861ceaac2
commit 0f1c2e6f2b
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -705,9 +705,15 @@ impl Item for Editor {
.await?;
}
// Only format and save the buffers with changes. For clean buffers,
// we simulate saving by calling `Buffer::did_save`, so that language servers or
// other downstream listeners of save events get notified.
if buffers.len() == 1 {
// Apply full save routine for singleton buffers, to allow to `touch` the file via the editor.
project
.update(&mut cx, |project, cx| project.save_buffers(buffers, cx))?
.await?;
} else {
// For multi-buffers, only format and save the buffers with changes.
// For clean buffers, we simulate saving by calling `Buffer::did_save`,
// so that language servers or other downstream listeners of save events get notified.
let (dirty_buffers, clean_buffers) = buffers.into_iter().partition(|buffer| {
buffer
.update(&mut cx, |buffer, _| {
@ -731,6 +737,7 @@ impl Item for Editor {
})
.ok();
}
}
Ok(())
})