alma 0.1.1

A Bevy-native modal text editor with Vim-style navigation.
Documentation
//! Status-line request messages.

use crate::ecs::components::buffer::ViewEntity;
use crate::{StatusInfoText, vim::VimError};
use bevy::prelude::Message;

pub use super::error::StatusRejectionReason;

/// Request to update the editor status line.
#[derive(Clone, Debug, Eq, Message, PartialEq)]
pub struct StatusMessageRequested {
    /// Editor view entity whose status should be updated.
    pub target: ViewEntity,
    /// Requested status-line value.
    pub message: StatusMessage,
}

/// Notification that a status request could not be resolved at the owner boundary.
#[derive(Clone, Debug, Eq, Message, PartialEq)]
pub struct StatusMessageRejected {
    /// Editor view entity whose status was requested.
    pub target: ViewEntity,
    /// Requested status-line value.
    pub rejected: StatusMessage,
    /// Typed rejection reason.
    pub reason: StatusRejectionReason,
}

/// Status-line value requested by a feature or owner system.
#[derive(Clone, Debug, Eq, PartialEq)]
pub enum StatusMessage {
    /// Clear the active status message.
    Clear,
    /// Show an informational status message.
    Info(StatusInfoText),
    /// Show a Vim error status message.
    Error(VimError),
}