use aether_lspd::{ClientError, UriError};
use thiserror::Error;
#[doc = include_str!("../docs/lsp_error.md")]
#[derive(Debug, Error)]
pub enum LspError {
#[error("I/O error: {0}")]
Io(#[from] std::io::Error),
#[error(transparent)]
Client(#[from] ClientError),
#[error("Language server unavailable: {0}")]
ServerUnavailable(String),
#[error("No LSP configured for {0}")]
UnsupportedLanguage(String),
#[error("Invalid path: {0}")]
InvalidPath(String),
#[error("Symbol not found: {0}")]
SymbolNotFound(String),
#[error("Invalid source position: {0}")]
InvalidPosition(String),
#[error("Invalid edit: {0}")]
InvalidEdit(String),
}
impl From<UriError> for LspError {
fn from(error: UriError) -> Self {
Self::InvalidPath(error.to_string())
}
}