Skip to main content

aft/lsp/
mod.rs

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