aboutsummaryrefslogtreecommitdiff
path: root/helix-lsp/src/client.rs
diff options
context:
space:
mode:
Diffstat (limited to 'helix-lsp/src/client.rs')
-rw-r--r--helix-lsp/src/client.rs15
1 files changed, 15 insertions, 0 deletions
diff --git a/helix-lsp/src/client.rs b/helix-lsp/src/client.rs
index 245eb854..101d2f9b 100644
--- a/helix-lsp/src/client.rs
+++ b/helix-lsp/src/client.rs
@@ -272,6 +272,21 @@ impl Client {
self.notify::<lsp::notification::Exit>(())
}
+ /// Tries to shut down the language server but returns
+ /// early if server responds with an error.
+ pub async fn shutdown_and_exit(&self) -> Result<()> {
+ self.shutdown().await?;
+ self.exit().await
+ }
+
+ /// Forcefully shuts down the language server ignoring any errors.
+ pub async fn force_shutdown(&self) -> Result<()> {
+ if let Err(e) = self.shutdown().await {
+ log::warn!("language server failed to terminate gracefully - {}", e);
+ }
+ self.exit().await
+ }
+
// -------------------------------------------------------------------------------------------
// Text document
// -------------------------------------------------------------------------------------------