1use std::io;
2use std::time::Duration;
3use thiserror::Error;
4
5#[doc = include_str!("docs/daemon_error.md")]
6#[derive(Debug, Error)]
7pub enum DaemonError {
8 #[error("IO error: {0}")]
10 Io(#[from] io::Error),
11
12 #[error("Failed to bind to socket: {0}")]
14 BindFailed(#[source] io::Error),
15
16 #[error("Failed to spawn LSP: {0}")]
18 LspSpawnFailed(String),
19
20 #[error("Language server failed to complete initialization (it exited or rejected `initialize`)")]
22 LspInitializeFailed,
23
24 #[error("Language server did not answer `initialize` within {}s", .0.as_secs())]
26 LspInitializeTimedOut(Duration),
27
28 #[error("Lockfile error: {0}")]
30 LockfileError(#[source] io::Error),
31}
32
33pub type DaemonResult<T> = std::result::Result<T, DaemonError>;