use tower_lsp::{LspService, Server};
use tracing_subscriber::{fmt, prelude::*, EnvFilter};
mod analysis;
mod cache;
mod completion;
pub mod database;
mod debug_adapter;
mod diagnostics;
mod hover;
mod inlay_hints;
mod refactoring;
mod semantic_tokens;
mod server;
mod symbol_table;
use server::WindjammerLanguageServer;
#[tokio::main]
async fn main() {
tracing_subscriber::registry()
.with(fmt::layer())
.with(EnvFilter::from_default_env())
.init();
tracing::info!("Starting Windjammer Language Server");
let stdin = tokio::io::stdin();
let stdout = tokio::io::stdout();
let (service, socket) = LspService::new(WindjammerLanguageServer::new);
Server::new(stdin, stdout, socket).serve(service).await;
tracing::info!("Windjammer Language Server shutting down");
}