@@ -3,7 +3,6 @@ use futures_util::future::BoxFuture;
3use futures_util::FutureExt;
3use futures_util::FutureExt;
4use helix_core::auto_pairs::AutoPairs;
4use helix_core::auto_pairs::AutoPairs;
5use helix_core::Range;
5use helix_core::Range;
7use serde::de::{self, Deserialize, Deserializer};
6use serde::de::{self, Deserialize, Deserializer};
8use serde::Serialize;
7use serde::Serialize;
9use std::borrow::Cow;
8use std::borrow::Cow;
@@ -644,16 +643,15 @@ impl Document {
644 async fn await_save_impl(&mut self, block: bool) -> Option<DocumentSaveEventResult> {
643 async fn await_save_impl(&mut self, block: bool) -> Option<DocumentSaveEventResult> {
645 let mut current_save = self.current_save.lock().await;
644 let mut current_save = self.current_save.lock().await;
646 if let Some(ref mut save) = *current_save {
645 if let Some(ref mut save) = *current_save {
646+ log::trace!("reawaiting save of '{:?}'", self.path());
647 let result = save.await;
647 let result = save.await;
648 *current_save = None;
648 *current_save = None;
649− debug!("save of '{:?}' result: {:?}", self.path(), result);
649+ log::trace!("reawait save of '{:?}' result: {:?}", self.path(), result);
650 return Some(result);
650 return Some(result);
653 // return early if the receiver is closed
653 // return early if the receiver is closed
654− self.save_receiver.as_ref()?;
656− let rx = self.save_receiver.as_mut().unwrap();
654+ let rx = self.save_receiver.as_mut()?;
658 let save_req = if block {
656 let save_req = if block {
659 rx.recv().await
657 rx.recv().await
@@ -672,12 +670,12 @@ impl Document {
672 // save a handle to the future so that when a poll on this
670 // save a handle to the future so that when a poll on this
673 // function gets cancelled, we don't lose it
671 // function gets cancelled, we don't lose it
674 *current_save = Some(save);
672 *current_save = Some(save);
675− debug!("awaiting save of '{:?}'", self.path());
673+ log::trace!("awaiting save of '{:?}'", self.path());
677 let result = (*current_save).as_mut().unwrap().await;
675 let result = (*current_save).as_mut().unwrap().await;
678 *current_save = None;
676 *current_save = None;
680− debug!("save of '{:?}' result: {:?}", self.path(), result);
678+ log::trace!("save of '{:?}' result: {:?}", self.path(), result);
682 Some(result)
680 Some(result)
@@ -715,7 +713,7 @@ impl Document {
715 /// it stops early before emptying the rest of the queue.
713 /// it stops early before emptying the rest of the queue.
716 pub async fn close(&mut self) -> Option<DocumentSaveEventResult> {
714 pub async fn close(&mut self) -> Option<DocumentSaveEventResult> {
717 if self.save_sender.is_some() {
715 if self.save_sender.is_some() {
718− self.save_sender = None;
716+ self.save_sender.take();
721 self.flush_saves_impl(true).await
719 self.flush_saves_impl(true).await