Deduplicate flush_writes
This commit is contained in:
parent
30c93994b5
commit
b0212b3611
4 changed files with 19 additions and 50 deletions
|
@ -1,5 +1,5 @@
|
|||
use arc_swap::{access::Map, ArcSwap};
|
||||
use futures_util::{Stream, StreamExt};
|
||||
use futures_util::Stream;
|
||||
use helix_core::{
|
||||
diagnostic::{DiagnosticTag, NumberOrString},
|
||||
path::get_relative_path,
|
||||
|
@ -969,22 +969,7 @@ impl Application {
|
|||
let mut errs = Vec::new();
|
||||
|
||||
// TODO: deduplicate with ctx.block_try_flush_writes
|
||||
tokio::task::block_in_place(|| {
|
||||
helix_lsp::block_on(async {
|
||||
while let Some(save_event) = self.editor.save_queue.next().await {
|
||||
match &save_event {
|
||||
Ok(event) => {
|
||||
let doc = doc_mut!(self.editor, &event.doc_id);
|
||||
doc.set_last_saved_revision(event.revision);
|
||||
}
|
||||
Err(err) => {
|
||||
log::error!("error saving document: {}", err);
|
||||
}
|
||||
};
|
||||
// TODO: if is_err: break?
|
||||
}
|
||||
})
|
||||
});
|
||||
tokio::task::block_in_place(|| helix_lsp::block_on(self.editor.flush_writes()));
|
||||
|
||||
if let Err(err) = self
|
||||
.jobs
|
||||
|
|
|
@ -80,22 +80,7 @@ fn buffer_close_by_ids_impl(
|
|||
force: bool,
|
||||
) -> anyhow::Result<()> {
|
||||
// TODO: deduplicate with ctx.block_try_flush_writes
|
||||
tokio::task::block_in_place(|| {
|
||||
helix_lsp::block_on(async {
|
||||
while let Some(save_event) = editor.save_queue.next().await {
|
||||
match &save_event {
|
||||
Ok(event) => {
|
||||
let doc = doc_mut!(editor, &event.doc_id);
|
||||
doc.set_last_saved_revision(event.revision);
|
||||
}
|
||||
Err(err) => {
|
||||
log::error!("error saving document: {}", err);
|
||||
}
|
||||
};
|
||||
// TODO: if is_err: break?
|
||||
}
|
||||
})
|
||||
});
|
||||
tokio::task::block_in_place(|| helix_lsp::block_on(editor.flush_writes()));
|
||||
|
||||
let (modified_ids, modified_names): (Vec<_>, Vec<_>) = doc_ids
|
||||
.iter()
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
use futures_util::StreamExt;
|
||||
// Each component declares it's own size constraints and gets fitted based on it's parent.
|
||||
// Q: how does this work with popups?
|
||||
// cursive does compositor.screen_mut().add_layer_at(pos::absolute(x, y), <component>)
|
||||
|
@ -34,22 +33,7 @@ impl<'a> Context<'a> {
|
|||
pub fn block_try_flush_writes(&mut self) -> anyhow::Result<()> {
|
||||
tokio::task::block_in_place(|| helix_lsp::block_on(self.jobs.finish(self.editor, None)))?;
|
||||
|
||||
tokio::task::block_in_place(|| {
|
||||
helix_lsp::block_on(async {
|
||||
while let Some(save_event) = self.editor.save_queue.next().await {
|
||||
match &save_event {
|
||||
Ok(event) => {
|
||||
let doc = doc_mut!(self.editor, &event.doc_id);
|
||||
doc.set_last_saved_revision(event.revision);
|
||||
}
|
||||
Err(err) => {
|
||||
log::error!("error saving document: {}", err);
|
||||
}
|
||||
};
|
||||
// TODO: if is_err: break?
|
||||
}
|
||||
})
|
||||
});
|
||||
tokio::task::block_in_place(|| helix_lsp::block_on(self.editor.flush_writes()));
|
||||
|
||||
Ok(())
|
||||
}
|
||||
|
|
|
@ -1348,4 +1348,19 @@ impl Editor {
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
pub async fn flush_writes(&mut self) {
|
||||
while let Some(save_event) = self.save_queue.next().await {
|
||||
match &save_event {
|
||||
Ok(event) => {
|
||||
let doc = doc_mut!(self, &event.doc_id);
|
||||
doc.set_last_saved_revision(event.revision);
|
||||
}
|
||||
Err(err) => {
|
||||
log::error!("error saving document: {}", err);
|
||||
}
|
||||
};
|
||||
// TODO: if is_err: break?
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue