toolkit for mdBook [mirror of my GitHub repo] docs.tonywu.dev/mdbookkit/
permalinks rust-analyzer mdbook
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

refactor: logging (WIP)

Tony Wu 11129c54 4966da90

+28 -15
+1
crates/mdbook-rustdoc-links/Cargo.toml
··· 39 39 tempfile = { workspace = true } 40 40 tokio = { workspace = true, features = [ 41 41 "fs", 42 + "io-util", 42 43 "macros", 43 44 "process", 44 45 "rt-multi-thread",
+26 -14
crates/mdbook-rustdoc-links/src/client.rs
··· 21 21 }; 22 22 use serde::{Deserialize, Serialize}; 23 23 use serde_json::json; 24 - use tap::{Pipe, TapFallible}; 24 + use tap::TapFallible; 25 25 use tokio::{ 26 + io::{AsyncBufReadExt, BufReader}, 26 27 sync::{OnceCell, OwnedSemaphorePermit, Semaphore, mpsc}, 27 28 task::JoinHandle, 28 29 }; ··· 261 262 ServiceBuilder::new().service(router) 262 263 }); 263 264 264 - let proc = env 265 + let mut proc = env 265 266 .which() 266 267 .command()? 267 268 .current_dir(env.crate_dir.to_path()?) 268 269 .stdin(Stdio::piped()) 269 270 .stdout(Stdio::piped()) 270 - // TODO: managed subcommand stderr 271 - .stderr(Stdio::null()) 271 + .stderr(Stdio::piped()) 272 272 .spawn() 273 273 .context("failed to spawn rust-analyzer")?; 274 274 275 - let background = tokio::spawn(async move { 276 - let mut proc = proc; 275 + let background = { 276 + let stdin = proc.stdin.take().unwrap(); 277 277 let stdout = proc.stdout.take().unwrap(); 278 - let stdin = proc.stdin.take().unwrap(); 279 - background 280 - .run_buffered(stdout.compat(), stdin.compat_write()) 281 - .await 282 - .tap_err(log_debug!()) 283 - .ok(); 284 - }) 285 - .pipe(Arc::new); 278 + let stderr = proc.stderr.take().unwrap(); 279 + 280 + tokio::spawn(async move { 281 + let mut stderr = BufReader::new(stderr).lines(); 282 + while let Some(line) = stderr.next_line().await.ok().flatten() { 283 + log::debug!("{line}"); 284 + } 285 + }); 286 + 287 + let background = tokio::spawn(async move { 288 + background 289 + .run_buffered(stdout.compat(), stdin.compat_write()) 290 + .await 291 + .context("LSP client stopped unexpectedly") 292 + .tap_err(log_debug!()) 293 + .ok(); 294 + }); 295 + 296 + Arc::new(background) 297 + }; 286 298 287 299 let features = { 288 300 let features = &env.config.cargo_features;
+1 -1
docs/book.toml
··· 32 32 33 33 [preprocessor.rustdoc-links] 34 34 after = ["links"] 35 - cache-dir = "build" 35 + # cache-dir = "build" 36 36 command = "cargo run --package mdbook-rustdoc-links" 37 37 manifest-dir = "." 38 38 rust-analyzer = "cargo run --package util-rust-analyzer -- analyzer"