Skip to main content

aft/lsp/
mod.rs

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/// LSP subsystem error type.
12#[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}