use std::sync::Arc;
use std::path::PathBuf;
use matrixcode_core::lsp::{LspClient, LspServerConfig};
#[tokio::main]
async fn main() {
println!("=== Simple LSP Test ===\n");
let project_root = std::env::current_dir()
.expect("Failed to get current directory")
.parent()
.expect("Failed to get parent directory")
.to_path_buf();
println!("📁 Project root: {}", project_root.display());
let config = LspServerConfig::new("rust-analyzer", "rust");
let client = LspClient::from_config(&config, project_root);
println!("⏳ Starting rust-analyzer...");
let start = std::time::Instant::now();
match client.spawn(&config).await {
Ok(_) => {
let elapsed = start.elapsed();
println!("✓ rust-analyzer initialized in {:.2}s", elapsed.as_secs_f64());
}
Err(e) => {
println!("✗ Failed to start: {}", e);
println!("\n错误详情:");
for cause in e.chain() {
println!(" - {}", cause);
}
return;
}
}
println!("\n⏳ Shutting down...");
match client.shutdown().await {
Ok(_) => println!("✓ Shutdown successful"),
Err(e) => println!("✗ Shutdown error: {}", e),
}
println!("\n=== Test Complete ===");
}