[−][src]Crate tower_lsp
Language Server Protocol (LSP) server abstraction for Tower.
Example
#[derive(Debug, Default)] struct Backend; impl LanguageServer for Backend { type ShutdownFuture = BoxFuture<()>; type HighlightFuture = BoxFuture<Option<Vec<DocumentHighlight>>>; type HoverFuture = BoxFuture<Option<Hover>>; fn initialize(&self, _: InitializeParams) -> Result<InitializeResult> { Ok(InitializeResult::default()) } fn initialized(&self, printer: &Printer, _: InitializedParams) { printer.log_message(MessageType::Info, "server initialized!"); } fn shutdown(&self) -> Self::ShutdownFuture { Box::new(future::ok(())) } fn did_open(&self, printer: &Printer, _: DidOpenTextDocumentParams) { printer.log_message(MessageType::Info, "file opened!"); } fn did_change(&self, printer: &Printer, _: DidChangeTextDocumentParams) { printer.log_message(MessageType::Info, "file changed!"); } fn did_save(&self, printer: &Printer, _: DidSaveTextDocumentParams) { printer.log_message(MessageType::Info, "file saved!"); } fn did_close(&self, printer: &Printer, _: DidCloseTextDocumentParams) { printer.log_message(MessageType::Info, "file closed!"); } fn hover(&self, _: TextDocumentPositionParams) -> Self::HoverFuture { Box::new(future::ok(None)) } fn highlight(&self, _: TextDocumentPositionParams) -> Self::HighlightFuture { Box::new(future::ok(None)) } } fn main() { let stdin = tokio::io::stdin(); let stdout = tokio::io::stdout(); let (service, messages) = LspService::new(Backend::default()); let handle = service.close_handle(); let server = Server::new(stdin, stdout) .interleave(messages) .serve(service); tokio::run(handle.run_until_exit(server)); }
Re-exports
pub extern crate lsp_types; |
Structs
ExitReceiver | Future which never resolves until the |
LspService | Service abstraction for the Language Server Protocol. |
MessageStream | Stream of notification messages produced by the language server. |
Printer | Sends notifications from the language server to the client. |
Server | Server for processing requests and responses on |
Traits
LanguageServer | Trait implemented by language server backends. |