zte 0.1.1

A buffer/window-driven text editor that takes inspiration from Howl
use std::path::PathBuf;
use vek::*;
use crate::BufferHandle;

#[derive(Copy, Clone, Debug)]
pub enum Dir {
    Left,
    Right,
    Up,
    Down,
}

impl From<Dir> for Vec2<isize> {
    fn from(dir: Dir) -> Vec2<isize> {
        match dir {
            Dir::Left => Vec2::new(-1, 0),
            Dir::Right => Vec2::new(1, 0),
            Dir::Up => Vec2::new(0, -1),
            Dir::Down => Vec2::new(0, 1),
        }
    }
}

impl Dir {
    pub fn is_forward(&self) -> bool {
        matches!(self, Dir::Right | Dir::Down)
    }
}

#[derive(Clone, Debug)]
pub enum Event {
    Insert(char),
    Backspace,
    BackspaceWord,
    Delete,
    Comment,
    Undo,
    Redo,
    CursorMove(Dir, bool),
    CursorJump(Dir, bool),
    PageMove(Dir, bool),
    SelectAll,
    SwitchEditor(Dir),
    NewEditor(Dir),
    NewTerminal(Dir),
    CloseEditor,
    OpenPrompt,
    OpenSwitcher,
    OpenOpener,
    NewFile(PathBuf),
    OpenFile(PathBuf),
    CloseMenu,
    NewBuffer,
    SwitchBuffer(BufferHandle),
    CloseBuffer,
    SaveBuffer,
    Cut,
    Copy,
    Paste,
    Duplicate,
    Escape,
    Quit,
}