Skip to content

Commit

Permalink
Retry on cancelled request
Browse files Browse the repository at this point in the history
  • Loading branch information
SofusA committed Mar 9, 2025
1 parent c1ca44a commit 1dc3deb
Showing 1 changed file with 32 additions and 2 deletions.
34 changes: 32 additions & 2 deletions helix-term/src/handlers/diagnostics.rs
Original file line number Diff line number Diff line change
Expand Up @@ -183,7 +183,8 @@ pub fn pull_diagnostics_for_document(
}
});

let provider = DiagnosticProvider::from_server_and_identifier(language_server.id(), identifier);
let language_server_id = language_server.id();
let provider = DiagnosticProvider::from_server_and_identifier(language_server_id, identifier);
let document_id = doc.id();

tokio::spawn(async move {
Expand All @@ -199,7 +200,36 @@ pub fn pull_diagnostics_for_document(
})
.await
}
Err(err) => log::error!("Pull diagnostic request failed: {err}"),
Err(err) => {
let parsed_retrigger_request = if let helix_lsp::Error::Rpc(error) = err {
error.data.and_then(|data| {
data.as_object().and_then(|data_object| {
data_object
.get("retriggerRequest")
.and_then(|retrigger| retrigger.as_bool())
})
})
} else {
log::error!("Pull diagnostic request failed: {err}");
return;
};

if let Some(retrigger_request) = parsed_retrigger_request {
if retrigger_request {
tokio::time::sleep(Duration::from_millis(500)).await;

job::dispatch(move |editor, _| {
if let (Some(doc), Some(language_server)) = (
editor.document(document_id),
editor.language_server_by_id(language_server_id),
) {
pull_diagnostics_for_document(doc, language_server);
}
})
.await;
}
}
}
}
});
}
Expand Down

0 comments on commit 1dc3deb

Please sign in to comment.