use crate::{
buffer::BufferEditError,
ecs::components::buffer::{BufferEntity, ViewEntity},
text_stream::TextRevision,
};
#[derive(Clone, Debug, Eq, PartialEq)]
pub enum BufferEditRejectionReason {
MissingTarget {
target: BufferEntity,
},
InvalidEdit {
error: BufferEditError,
},
StaleRevision {
expected: TextRevision,
actual: TextRevision,
},
}
#[derive(Clone, Debug, Eq, PartialEq)]
pub enum EditHistoryRejectionReason {
MissingTarget {
target: BufferEntity,
},
EmptyUndoStack,
EmptyRedoStack,
InvalidEdit {
error: BufferEditError,
},
}
#[derive(Clone, Copy, Debug, Eq, PartialEq)]
pub enum PluginProposalDecisionRejectionReason {
UnknownProposal {
id: crate::ecs::events::edit::PluginProposalId,
},
}
#[derive(Clone, Copy, Debug, Eq, PartialEq)]
pub enum CommandRejectionReason {
MissingTarget {
target: BufferEntity,
},
}
#[derive(Clone, Copy, Debug, Eq, PartialEq)]
pub enum CursorMoveRejectionReason {
MissingTarget {
target: ViewEntity,
},
MissingBuffer {
target: ViewEntity,
buffer: BufferEntity,
},
}
#[derive(Clone, Copy, Debug, Eq, PartialEq)]
pub enum VimInputRejectionReason {
MissingBuffer {
target: ViewEntity,
buffer: BufferEntity,
},
InsertPayloadTooLarge {
target: ViewEntity,
rejected_byte_len: usize,
max_byte_len: usize,
},
PastePayloadTooLarge {
target: ViewEntity,
rejected_byte_len: usize,
max_byte_len: usize,
},
}
#[derive(Clone, Copy, Debug, Eq, PartialEq)]
pub enum StatusRejectionReason {
MissingTarget {
target: ViewEntity,
},
}
#[derive(Clone, Copy, Debug, Eq, PartialEq)]
pub enum FocusRejectionReason {
MissingTarget {
target: ViewEntity,
},
}
#[derive(Clone, Copy, Debug, Eq, PartialEq)]
pub enum ViewportRejectionReason {
MissingTarget {
target: ViewEntity,
},
MissingBuffer {
target: ViewEntity,
buffer: BufferEntity,
},
}