diff --git a/crates/project/src/lsp_store.rs b/crates/project/src/lsp_store.rs index 10fb447a6f6c7867212a4622d084deb4fcea91a2..fea44cefed3fcdd0ecb27c3ec0059733575c70f0 100644 --- a/crates/project/src/lsp_store.rs +++ b/crates/project/src/lsp_store.rs @@ -4184,6 +4184,11 @@ impl LspStore { } } + pub fn is_buffer_being_formatted(&self, buffer_id: BufferId) -> bool { + self.as_local() + .is_some_and(|local| local.buffers_being_formatted.contains(&buffer_id)) + } + pub fn as_local_mut(&mut self) -> Option<&mut LocalLspStore> { match &mut self.mode { LspStoreMode::Local(local_lsp_store) => Some(local_lsp_store), diff --git a/crates/project/src/project.rs b/crates/project/src/project.rs index 96b82a16930543028b7588a843433c6a70bf34e6..f3e4824a039e58df6505f9643670f4a5a1c803a8 100644 --- a/crates/project/src/project.rs +++ b/crates/project/src/project.rs @@ -3694,7 +3694,9 @@ impl Project { let buffer_id = buffer.read(cx).remote_id(); match event { BufferEvent::ReloadNeeded => { - if !self.is_via_collab() { + if !self.is_via_collab() + && !self.lsp_store.read(cx).is_buffer_being_formatted(buffer_id) + { self.reload_buffers([buffer.clone()].into_iter().collect(), true, cx) .detach_and_log_err(cx); }