move language server refresh to document saved event handler

pull/2267/head
Skyler Hawthorne 2 years ago
parent af03df3413
commit b3fc31a211

@ -462,14 +462,27 @@ impl Application {
let lines = doc_save_event.text.len_lines(); let lines = doc_save_event.text.len_lines();
let bytes = doc_save_event.text.len_bytes(); let bytes = doc_save_event.text.len_bytes();
if doc.path() != Some(&doc_save_event.path) {
if let Err(err) = doc.set_path(Some(&doc_save_event.path)) { if let Err(err) = doc.set_path(Some(&doc_save_event.path)) {
log::error!( log::error!(
"error setting path for doc '{:?}': {}", "error setting path for doc '{:?}': {}",
doc.path(), doc.path(),
err.to_string(), err.to_string(),
); );
self.editor.set_error(err.to_string()); self.editor.set_error(err.to_string());
} else { return;
}
let loader = self.editor.syn_loader.clone();
// borrowing the same doc again to get around the borrow checker
let doc = self.editor.document_mut(doc_save_event.doc_id).unwrap();
let id = doc.id();
doc.detect_language(loader);
let _ = self.editor.refresh_language_server(id);
}
// TODO: fix being overwritten by lsp // TODO: fix being overwritten by lsp
self.editor.set_status(format!( self.editor.set_status(format!(
"'{}' written, {}L {}B", "'{}' written, {}L {}B",
@ -478,7 +491,6 @@ impl Application {
bytes bytes
)); ));
} }
}
#[inline(always)] #[inline(always)]
pub async fn handle_editor_event(&mut self, event: EditorEvent) -> bool { pub async fn handle_editor_event(&mut self, event: EditorEvent) -> bool {

@ -2519,7 +2519,7 @@ async fn make_format_callback(
write: Option<(Option<PathBuf>, bool)>, write: Option<(Option<PathBuf>, bool)>,
) -> anyhow::Result<job::Callback> { ) -> anyhow::Result<job::Callback> {
let format = format.await?; let format = format.await?;
let call: job::Callback = Callback::EditorCompositor(Box::new(move |editor, _compositor| { let call: job::Callback = Callback::Editor(Box::new(move |editor| {
if !editor.documents.contains_key(&doc_id) { if !editor.documents.contains_key(&doc_id) {
return; return;
} }
@ -2527,7 +2527,6 @@ async fn make_format_callback(
let scrolloff = editor.config().scrolloff; let scrolloff = editor.config().scrolloff;
let doc = doc_mut!(editor, &doc_id); let doc = doc_mut!(editor, &doc_id);
let view = view_mut!(editor); let view = view_mut!(editor);
let loader = editor.syn_loader.clone();
if doc.version() == doc_version { if doc.version() == doc_version {
apply_transaction(&format, doc, view); apply_transaction(&format, doc, view);
@ -2536,14 +2535,8 @@ async fn make_format_callback(
view.ensure_cursor_in_view(doc, scrolloff); view.ensure_cursor_in_view(doc, scrolloff);
if let Some((path, force)) = write { if let Some((path, force)) = write {
let refresh_lang = path.is_some();
if let Err(err) = doc.save(path, force) { if let Err(err) = doc.save(path, force) {
editor.set_error(format!("Error saving: {}", err)); editor.set_error(format!("Error saving: {}", err));
} else if refresh_lang {
let id = doc.id();
doc.detect_language(loader);
let _ = editor.refresh_language_server(id);
} }
} }
} else { } else {

Loading…
Cancel
Save