From 72a3722470e5297c72dcaccaf2f113e7b758606d Mon Sep 17 00:00:00 2001 From: Aleksey Kladov Date: Fri, 30 Aug 2019 17:24:11 +0300 Subject: move lsp-server to a separate repository --- .../gen_lsp_server/examples/01_gen_lsp_server.rs | 47 -------- .../examples/02_gen_lsp_server_with_logging.rs | 120 --------------------- 2 files changed, 167 deletions(-) delete mode 100644 crates/gen_lsp_server/examples/01_gen_lsp_server.rs delete mode 100644 crates/gen_lsp_server/examples/02_gen_lsp_server_with_logging.rs (limited to 'crates/gen_lsp_server/examples') diff --git a/crates/gen_lsp_server/examples/01_gen_lsp_server.rs b/crates/gen_lsp_server/examples/01_gen_lsp_server.rs deleted file mode 100644 index f49965064..000000000 --- a/crates/gen_lsp_server/examples/01_gen_lsp_server.rs +++ /dev/null @@ -1,47 +0,0 @@ -use std::error::Error; - -use crossbeam_channel::{Receiver, Sender}; -use gen_lsp_server::{handle_shutdown, run_server, stdio_transport, RawMessage, RawResponse}; -use lsp_types::{ - request::{GotoDefinition, GotoDefinitionResponse}, - InitializeParams, ServerCapabilities, -}; - -fn main() -> Result<(), Box> { - let (receiver, sender, io_threads) = stdio_transport(); - run_server(ServerCapabilities::default(), receiver, sender, main_loop)?; - io_threads.join()?; - Ok(()) -} - -fn main_loop( - _params: InitializeParams, - receiver: &Receiver, - sender: &Sender, -) -> Result<(), Box> { - for msg in receiver { - match msg { - RawMessage::Request(req) => { - let req = match handle_shutdown(req, sender) { - None => return Ok(()), - Some(req) => req, - }; - match req.cast::() { - Ok((id, _params)) => { - let resp = RawResponse::ok::( - id, - &Some(GotoDefinitionResponse::Array(Vec::new())), - ); - sender.send(RawMessage::Response(resp))?; - continue; - } - Err(req) => req, - }; - // ... - } - RawMessage::Response(_resp) => (), - RawMessage::Notification(_not) => (), - } - } - Ok(()) -} diff --git a/crates/gen_lsp_server/examples/02_gen_lsp_server_with_logging.rs b/crates/gen_lsp_server/examples/02_gen_lsp_server_with_logging.rs deleted file mode 100644 index 3c48106c5..000000000 --- a/crates/gen_lsp_server/examples/02_gen_lsp_server_with_logging.rs +++ /dev/null @@ -1,120 +0,0 @@ -//! A minimal example LSP server that can only respond to the `gotoDefinition` request. To use -//! this example, execute it and then send an `initialize` request. -//! -//! ```no_run -//! Content-Length: 85 -//! -//! {"jsonrpc": "2.0", "method": "initialize", "id": 1, "params": {"capabilities": {}}} -//! ``` -//! -//! This will respond with a server respose. Then send it a `initialized` notification which will -//! have no response. -//! -//! ```no_run -//! Content-Length: 59 -//! -//! {"jsonrpc": "2.0", "method": "initialized", "params": {}} -//! ``` -//! -//! Once these two are sent, then we enter the main loop of the server. The only request this -//! example can handle is `gotoDefinition`: -//! -//! ```no_run -//! Content-Length: 159 -//! -//! {"jsonrpc": "2.0", "method": "textDocument/definition", "id": 2, "params": {"textDocument": {"uri": "file://temp"}, "position": {"line": 1, "character": 1}}} -//! ``` -//! -//! To finish up without errors, send a shutdown request: -//! -//! ```no_run -//! Content-Length: 67 -//! -//! {"jsonrpc": "2.0", "method": "shutdown", "id": 3, "params": null} -//! ``` -//! -//! The server will exit the main loop and finally we send a `shutdown` notification to stop -//! the server. -//! -//! ``` -//! Content-Length: 54 -//! -//! {"jsonrpc": "2.0", "method": "exit", "params": null} -//! ``` - -use std::error::Error; - -use crossbeam_channel::{Receiver, Sender}; -use gen_lsp_server::{ - handle_shutdown, run_server, stdio_transport, RawMessage, RawRequest, RawResponse, -}; -use log::info; -use lsp_types::{ - request::{GotoDefinition, GotoDefinitionResponse}, - InitializeParams, ServerCapabilities, -}; - -fn main() -> Result<(), Box> { - // Set up logging. Because `stdio_transport` gets a lock on stdout and stdin, we must have - // our logging only write out to stderr. - flexi_logger::Logger::with_str("info").start().unwrap(); - info!("starting generic LSP server"); - - // Create the transport. Includes the stdio (stdin and stdout) versions but this could - // also be implemented to use sockets or HTTP. - let (receiver, sender, io_threads) = stdio_transport(); - - // Run the server and wait for the two threads to end (typically by trigger LSP Exit event). - run_server(ServerCapabilities::default(), receiver, sender, main_loop)?; - io_threads.join()?; - - // Shut down gracefully. - info!("shutting down server"); - Ok(()) -} - -fn main_loop( - _params: InitializeParams, - receiver: &Receiver, - sender: &Sender, -) -> Result<(), Box> { - info!("starting example main loop"); - for msg in receiver { - info!("got msg: {:?}", msg); - match msg { - RawMessage::Request(req) => { - let req = match log_handle_shutdown(req, sender) { - None => return Ok(()), - Some(req) => req, - }; - info!("got request: {:?}", req); - match req.cast::() { - Ok((id, params)) => { - info!("got gotoDefinition request #{}: {:?}", id, params); - let resp = RawResponse::ok::( - id, - &Some(GotoDefinitionResponse::Array(Vec::new())), - ); - info!("sending gotoDefinition response: {:?}", resp); - sender.send(RawMessage::Response(resp))?; - continue; - } - Err(req) => req, - }; - // ... - } - RawMessage::Response(resp) => { - info!("got response: {:?}", resp); - } - RawMessage::Notification(not) => { - info!("got notification: {:?}", not); - } - } - } - Ok(()) -} - -pub fn log_handle_shutdown(req: RawRequest, sender: &Sender) -> Option { - info!("handle_shutdown: {:?}", req); - handle_shutdown(req, sender) -} -- cgit v1.2.3