diff options
Diffstat (limited to 'helix-lsp/src/client.rs')
-rw-r--r-- | helix-lsp/src/client.rs | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/helix-lsp/src/client.rs b/helix-lsp/src/client.rs index 0b52681c..6554e996 100644 --- a/helix-lsp/src/client.rs +++ b/helix-lsp/src/client.rs @@ -165,13 +165,16 @@ impl Client { } /// Reply to a language server RPC call. - pub async fn reply( + pub fn reply( &self, id: jsonrpc::Id, result: core::result::Result<Value, jsonrpc::Error>, - ) -> Result<()> { + ) -> impl Future<Output = Result<()>> { use jsonrpc::{Failure, Output, Success, Version}; + let server_tx = self.server_tx.clone(); + + async move { let output = match result { Ok(result) => Output::Success(Success { jsonrpc: Some(Version::V2), @@ -185,12 +188,13 @@ impl Client { }), }; - self.server_tx + server_tx .send(Payload::Response(output)) .map_err(|e| Error::Other(e.into()))?; Ok(()) } + } // ------------------------------------------------------------------------------------------- // General messages |