nash_cli/cmd/lsp.rs
1use miette::Result;
2use tokio_util::compat::{TokioAsyncReadCompatExt, TokioAsyncWriteCompatExt};
3use tower_lsp_server::{LspService, Server};
4
5#[derive(clap::Args, Debug)]
6pub struct Args;
7
8pub async fn exec(_: Args) -> Result<()> {
9 let (service, socket) = LspService::new(nash_language_server::Server::new);
10 Server::new(
11 tokio::io::stdin().compat(),
12 tokio::io::stdout().compat_write(),
13 socket,
14 )
15 .serve(service)
16 .await;
17
18 Ok(())
19}