use crate::ratatui::style::Style; use crate::ratatui::text::Span; use crate::util::{num_digits, spaces}; #[cfg(feature = "ratatui")] use ratatui_core::text::Line; use std::borrow::Cow; use std::cmp::Ordering; #[cfg(feature = "tuirs")] use tui::text::Spans as Line; use unicode_width::UnicodeWidthChar as _; enum Boundary { Cursor(Style), Select(Style), #[cfg(feature = "search")] Search(Style), Custom(Style, u8), // style, priority End, } impl Boundary { fn cmp(&self, other: &Boundary) -> Ordering { fn rank(b: &Boundary) -> u8 { match b { Boundary::Cursor(_) => 30, #[cfg(feature = "search")] Boundary::Search(_) => 20, Boundary::Select(_) => 10, Boundary::Custom(_, p) => *p, Boundary::End => 0, } } rank(self).cmp(&rank(other)) } fn style(&self) -> Option