pub mod code_action;
pub mod completion;
pub mod language_server;
pub mod transport;
use async_lsp::{server::LifecycleLayer, MainLoop};
use futures::io::{AsyncRead, AsyncWrite};
use tower_layer::Layer;
pub use crate::language_server::DispositionLanguageServer;
pub async fn server_run<I, O>(input: I, output: O) -> async_lsp::Result<()>
where
I: AsyncRead,
O: AsyncWrite,
{
let (main_loop, _client) = MainLoop::new_server(|client| {
LifecycleLayer::default().layer(async_lsp::router::Router::from_language_server(
DispositionLanguageServer::new(client),
))
});
main_loop.run_buffered(input, output).await
}