[−][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 SymbolFuture = BoxFuture<Option<Vec<SymbolInformation>>>; type ExecuteFuture = BoxFuture<Option<Value>>; type CompletionFuture = BoxFuture<Option<CompletionResponse>>; type HoverFuture = BoxFuture<Option<Hover>>; type HighlightFuture = BoxFuture<Option<Vec<DocumentHighlight>>>; fn initialize(&self, _: &Printer, _: 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 symbol(&self, _: WorkspaceSymbolParams) -> Self::SymbolFuture { Box::new(future::ok(None)) } fn execute_command(&self, _: &Printer, _: ExecuteCommandParams) -> Self::ExecuteFuture { Box::new(future::ok(None)) } fn completion(&self, _: CompletionParams) -> Self::CompletionFuture { Box::new(future::ok(None)) } fn hover(&self, _: TextDocumentPositionParams) -> Self::HoverFuture { Box::new(future::ok(None)) } fn document_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 |
ExitedError | Error that occurs when attempting to call the language server after it has already exited. |
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 |
Enums
Incoming | An incoming JSON-RPC message. |
Traits
LanguageServer | Trait implemented by language server backends. |