windjammer-lsp 0.38.3

Language Server Protocol implementation for Windjammer
Documentation
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() {
    // Initialize logging
    tracing_subscriber::registry()
        .with(fmt::layer())
        .with(EnvFilter::from_default_env())
        .init();

    tracing::info!("Starting Windjammer Language Server");

    // Set up stdin/stdout for LSP communication
    let stdin = tokio::io::stdin();
    let stdout = tokio::io::stdout();

    // Create the LSP service
    let (service, socket) = LspService::new(WindjammerLanguageServer::new);

    // Run the server
    Server::new(stdin, stdout, socket).serve(service).await;

    tracing::info!("Windjammer Language Server shutting down");
}