fix: Work around crashes on LSPs that don't just emit JSON-RPC
This commit is contained in:
parent
7eff905680
commit
847d1fa496
1 changed files with 8 additions and 3 deletions
|
@ -1,7 +1,7 @@
|
|||
use crate::Result;
|
||||
use anyhow::{anyhow, Context};
|
||||
use anyhow::Context;
|
||||
use jsonrpc_core as jsonrpc;
|
||||
use log::{debug, error, info};
|
||||
use log::{debug, error, info, warn};
|
||||
use serde::{Deserialize, Serialize};
|
||||
use serde_json::Value;
|
||||
use std::collections::HashMap;
|
||||
|
@ -92,7 +92,12 @@ impl Transport {
|
|||
content_length = Some(value.parse().context("invalid content length")?);
|
||||
}
|
||||
Some((_, _)) => {}
|
||||
None => return Err(anyhow!("Failed to parse header: {:?}", header).into()),
|
||||
None => {
|
||||
// Workaround: Some non-conformant language servers will output logging and other garbage
|
||||
// into the same stream as JSON-RPC messages. This can also happen from shell scripts that spawn
|
||||
// the server. Skip such lines and log a warning.
|
||||
warn!("Failed to parse header: {:?}", header);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue