pub mod extract;
pub mod mode;
use crate::buffer::cursor::Cursor;
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum SelectionMode {
Visual,
VisualLine,
VisualBlock,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub struct Selection {
pub mode: SelectionMode,
pub anchor: Cursor,
}
impl Selection {
pub fn new(mode: SelectionMode, anchor: Cursor) -> Self {
Self { mode, anchor }
}
pub fn row_range(&self, cursor: &Cursor) -> (usize, usize) {
let r1 = self.anchor.row;
let r2 = cursor.row;
(r1.min(r2), r1.max(r2))
}
pub fn col_range(&self, cursor: &Cursor) -> (usize, usize) {
let c1 = self.anchor.col;
let c2 = cursor.col;
(c1.min(c2), c1.max(c2))
}
}