From ecdbc9416a9a4985eb5834064a816c9b7718825d Mon Sep 17 00:00:00 2001 From: Selimaj Dev Date: Sun, 24 May 2026 17:38:35 +0200 Subject: [PATCH] Build all on initialize --- crates/analyzer/src/lib.rs | 48 +++++++++++++++++++++++++++++++++++++- 1 file changed, 47 insertions(+), 1 deletion(-) diff --git a/crates/analyzer/src/lib.rs b/crates/analyzer/src/lib.rs index 3362428..5e0a856 100644 --- a/crates/analyzer/src/lib.rs +++ b/crates/analyzer/src/lib.rs @@ -134,8 +134,14 @@ impl LanguageServer for Backend { let analyzer = self.rust_analyzer.clone(); + let documents = self.documents.clone(); + + let mapping = self.mapping.clone(); + tokio::spawn(async move { if let Some(root) = &*workspace_folder.lock().await { + let src_root = root.join("src"); + transpiler::build(root); analyzer @@ -145,6 +151,30 @@ impl LanguageServer for Backend { .await .expect("Failed to initialize rust analyzer"); + // ---- LOAD ALL .MIST FILES ---- + let mut files = Vec::new(); + collect_mist_files(&src_root, &mut files); + + for file in files { + if let Ok(text) = std::fs::read_to_string(&file) { + if let Ok(transpiled) = transpiler::transpile_text(&text) { + let rust_path = from_mist_to_rust(file.clone()); + + // store document + documents + .lock() + .await + .insert(file.clone(), Rope::from_str(&text)); + + // store mapping + mapping + .lock() + .await + .insert(rust_path, rev_mapper::get_mapping(&transpiled)); + } + } + } + eprintln!("Ready to use"); } }); @@ -227,7 +257,7 @@ impl LanguageServer for Backend { }, end: Position { line, - character: column + 1, + character: u32::MAX, }, }, severity: Some(severity), @@ -624,3 +654,19 @@ fn simplify_item(mut item: CompletionItem) -> CompletionItem { item } + +fn collect_mist_files(dir: &PathBuf, out: &mut Vec) { + let Ok(entries) = std::fs::read_dir(dir) else { + return; + }; + + for entry in entries.flatten() { + let path = entry.path(); + + if path.is_dir() { + collect_mist_files(&path, out); + } else if path.extension().and_then(|e| e.to_str()) == Some("mist") { + out.push(path); + } + } +}