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