pub mod client;
pub mod manager;
pub mod mock;
pub mod servers;
pub mod symbols;
pub use mock::{MockLspClient, MockLspProvider};
pub mod call_hierarchy;
pub mod ops;
pub use ops::{LspClientOps, LspProvider};
pub mod mux;
pub mod transport;
pub use client::{LspClient, LspServerConfig};
pub use manager::LspManager;
pub use symbols::{SymbolInfo, SymbolKind};
const PREWARM_LANGUAGES: &[&str] = &["java", "kotlin"];
pub fn prewarm_lsp_background(
lsp: std::sync::Arc<dyn LspProvider>,
root: std::path::PathBuf,
project_languages: &[String],
) {
for lang in project_languages {
if PREWARM_LANGUAGES.contains(&lang.as_str()) {
let lsp = lsp.clone();
let root = root.clone();
let lang = lang.clone();
tokio::spawn(async move {
if let Err(e) = lsp.get_or_start(&lang, &root, None).await {
tracing::debug!("LSP pre-warm for {lang} skipped: {e}");
}
});
}
}
}