34 lines
918 B
Rust
34 lines
918 B
Rust
use std::{fmt, io};
|
|
|
|
use lysp::error::{MachineError, ValueConversionError};
|
|
|
|
#[derive(Debug, thiserror::Error)]
|
|
pub enum Error {
|
|
// I/O errors
|
|
#[error("Could not open file: {0}")]
|
|
OpenError(io::Error),
|
|
#[error("Could not write file: {0}")]
|
|
WriteError(io::Error),
|
|
#[error("Buffer does not have a path")]
|
|
NoPath,
|
|
#[error("Buffer has unsaved changes: {0}")]
|
|
UnsavedBuffer(&'static str),
|
|
#[error("Invalid command, usage: {0}")]
|
|
InvalidCommand(&'static str),
|
|
#[error("Unknown command: `{0}`")]
|
|
UnknownCommand(String),
|
|
#[error("Terminal error: {0}")]
|
|
TerminalError(io::Error),
|
|
#[error("Terminal error: {0:?}")]
|
|
TerminalFmtError(fmt::Error),
|
|
|
|
#[error("Scripting error: {0:?}")]
|
|
Script(#[from] MachineError),
|
|
}
|
|
|
|
impl From<ValueConversionError> for Error {
|
|
fn from(value: ValueConversionError) -> Self {
|
|
Self::Script(value.into())
|
|
}
|
|
}
|