1pub mod client;
2pub mod diagnostics;
3pub mod document;
4pub mod jsonrpc;
5pub mod manager;
6pub mod position;
7pub mod registry;
8pub mod roots;
9pub mod transport;
10
11#[derive(Debug)]
13pub enum LspError {
14 Io(std::io::Error),
15 Json(serde_json::Error),
16 ServerNotReady(String),
17 Timeout(String),
18 ServerError { code: i32, message: String },
19 NotFound(String),
20}
21
22impl std::fmt::Display for LspError {
23 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
24 match self {
25 Self::Io(err) => write!(f, "I/O error: {err}"),
26 Self::Json(err) => write!(f, "JSON error: {err}"),
27 Self::ServerNotReady(message) => write!(f, "server not ready: {message}"),
28 Self::Timeout(message) => write!(f, "timeout: {message}"),
29 Self::ServerError { code, message } => {
30 write!(f, "server error {code}: {message}")
31 }
32 Self::NotFound(message) => write!(f, "not found: {message}"),
33 }
34 }
35}
36
37impl std::error::Error for LspError {}
38
39impl From<std::io::Error> for LspError {
40 fn from(value: std::io::Error) -> Self {
41 Self::Io(value)
42 }
43}
44
45impl From<serde_json::Error> for LspError {
46 fn from(value: serde_json::Error) -> Self {
47 Self::Json(value)
48 }
49}