use crate::ecs::components::buffer::{BufferEntity, ViewEntity};
use crate::vim::{VimCommand, VimError};
use bevy::prelude::Message;
pub use super::error::CommandRejectionReason;
pub use super::operation::{
OperationFailureClass as CommandFailureClass, OperationFailureSource as CommandFailureSource,
OperationRetryAdvice as CommandRetryAdvice,
};
#[derive(Clone, Copy, Debug, Eq, Message, PartialEq)]
pub struct CommandRequested {
pub target: BufferEntity,
pub source: ViewEntity,
pub command: VimCommand,
}
#[derive(Clone, Copy, Debug, Eq, Message, PartialEq)]
pub struct CommandRejected {
pub target: BufferEntity,
pub source: ViewEntity,
pub command: VimCommand,
pub reason: CommandRejectionReason,
}
#[derive(Clone, Copy, Debug, Eq, Message, PartialEq)]
pub struct CommandFailed {
pub target: BufferEntity,
pub source: ViewEntity,
pub command: VimCommand,
pub diagnostic: CommandFailureDiagnostic,
}
#[derive(Clone, Copy, Debug, Eq, PartialEq)]
pub struct CommandFailureDiagnostic {
pub class: CommandFailureClass,
pub status_error: VimError,
pub source: Option<CommandFailureSource>,
pub retry: CommandRetryAdvice,
}