use crate::{buffer::{Buffer, Mode}, custom_greys::CustomGreys}; use ratatui::{style::{Color, Stylize}, text::{Line, Span, Text}}; impl Buffer { pub fn render_status_line(&self) -> Text<'_> { Text::from( Line::from_iter([ self.render_mode(), " ".into(), self.render_file_name(), self.modified_indicator(), " ".into(), self.alert_message.clone() ]) ) .bg(Color::ui_grey()) } fn render_mode(&self) -> Span<'static> { Span::from(self.mode.label()) .black() .bg(self.mode.color()) } fn render_file_name(&self) -> Span<'_> { Span::from(&self.file_name) } fn modified_indicator(&self) -> Span<'static> { if self.has_unsaved_changes() { " [+]".into() } else { "".into() } } } impl Mode { pub const fn label(self) -> &'static str { match self { Self::Normal => " NORMAL ", Self::Select => " SELECT ", Self::Insert => " INSERT ", } } pub const fn color(self) -> Color { match self { Self::Normal => Color::Blue, Self::Select => Color::Yellow, Self::Insert => Color::Green, } } }