diff --git a/Cargo.toml b/Cargo.toml index 5a17c5d5a466c12c2541c4604e47b8e5086e3dcf..d73582a05e9b1a0323eeaafb8421f3c45ff8ec15 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -7,8 +7,9 @@ Sodium: A modern vi-like editor """ [dependencies] -orbclient = "0.1.12" +orbclient = "0.3" [features] +default = ["orbital"] orbital = [] ansi = [] diff --git a/src/core/exec.rs b/src/core/exec.rs index bd6966a914d45060d5fe444d17f707d1247e7559..1d18425e548d0084089e4e43b7afcc8c1b2ba4de 100644 --- a/src/core/exec.rs +++ b/src/core/exec.rs @@ -24,6 +24,11 @@ impl Editor { self.prompt = String::new(); self.cursor_mut().mode = Mode::Command(CommandMode::Normal); } + (Primitive(Insert(_)), Escape) => { + let left = self.left(1); + self.goto(left); + self.cursor_mut().mode = Mode::Command(CommandMode::Normal); + }, (Primitive(Insert(_)), Char(' ')) if self.key_state.shift => { let left = self.left(1); self.goto(left); diff --git a/src/io/graphics.rs b/src/io/graphics.rs index be5b068bde29050756fd2966b37948cebad977bc..7035df2693b534fc0022a6672ecabba7306d00e3 100644 --- a/src/io/graphics.rs +++ b/src/io/graphics.rs @@ -7,7 +7,7 @@ use state::editor::Editor; use state::mode::{Mode, PrimitiveMode}; #[cfg(feature = "orbital")] -use orbclient::Color; +use orbclient::{Color, Renderer}; #[cfg(feature = "orbital")] impl Editor { diff --git a/src/io/key.rs b/src/io/key.rs index d695b15710b55c2f612817c97f6db2c75be2d8c8..6216d264aa6b40f32ebb22cf8bd41d5f89f0b728 100644 --- a/src/io/key.rs +++ b/src/io/key.rs @@ -42,22 +42,22 @@ impl Key { /// Convern an Orbital key event to a `Key`. #[cfg(feature = "orbital")] pub fn from_event(k: KeyEvent) -> Key { - match k.character { - '\0' => match k.scancode { - s if k.pressed => match s { - K_BKSP => Key::Backspace, - K_LEFT => Key::Left, - K_RIGHT => Key::Right, - K_UP => Key::Up, - K_DOWN => Key::Down, - K_TAB => Key::Tab, - K_ESC => Key::Escape, - _ => Key::Unknown(s), - - }, - _ => Key::Null, - }, - c => Key::Char(c), + if k.pressed { + match k.scancode { + K_BKSP => Key::Backspace, + K_LEFT => Key::Left, + K_RIGHT => Key::Right, + K_UP => Key::Up, + K_DOWN => Key::Down, + K_TAB => Key::Tab, + K_ESC => Key::Escape, + s => match k.character { + '\0' => Key::Unknown(s), + c => Key::Char(c), + } + } + } else { + Key::Null } }