From 47e8b80e9b67d5012fbc860a7763975e99fdf28d Mon Sep 17 00:00:00 2001 From: Aleksey Kladov Date: Wed, 5 Sep 2018 21:38:43 +0300 Subject: use correct workdir for the server --- crates/gen_lsp_server/src/lib.rs | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) (limited to 'crates/gen_lsp_server/src') diff --git a/crates/gen_lsp_server/src/lib.rs b/crates/gen_lsp_server/src/lib.rs index b25017045..baca921df 100644 --- a/crates/gen_lsp_server/src/lib.rs +++ b/crates/gen_lsp_server/src/lib.rs @@ -14,7 +14,7 @@ mod stdio; use crossbeam_channel::{Sender, Receiver}; use languageserver_types::{ - ServerCapabilities, InitializeResult, + ServerCapabilities, InitializeResult, InitializeParams, request::{Initialize, Shutdown}, notification::{Initialized, Exit}, }; @@ -27,14 +27,18 @@ pub use { pub fn run_server( caps: ServerCapabilities, - server: impl FnOnce(&mut Receiver, &mut Sender) -> Result<()>, + server: impl FnOnce( + InitializeParams, + &mut Receiver, + &mut Sender, + ) -> Result<()>, mut receiver: Receiver, mut sender: Sender, ) -> Result<()> { info!("lsp server initializes"); - initialize(&mut receiver, &mut sender, caps)?; + let params = initialize(&mut receiver, &mut sender, caps)?; info!("lsp server initialized, serving requests"); - server(&mut receiver, &mut sender)?; + server(params, &mut receiver, &mut sender)?; info!("lsp server waiting for exit notification"); match receiver.recv() { Some(RawMessage::Notification(n)) => { @@ -63,11 +67,11 @@ fn initialize( receiver: &mut Receiver, sender: &mut Sender, caps: ServerCapabilities, -) -> Result<()> { - let id = match receiver.recv() { +) -> Result { + let (id, params) = match receiver.recv() { Some(RawMessage::Request(req)) => match req.cast::() { Err(req) => bail!("expected initialize request, got {:?}", req), - Ok(req) => req.0, + Ok(req) => req, } msg => bail!("expected initialize request, got {:?}", msg), @@ -82,5 +86,5 @@ fn initialize( } _ => bail!("expected initialized notification"), } - Ok(()) + Ok(params) } -- cgit v1.2.3