From 1ead7cd5ecd891598d9b61c0e9e01a2c1c0f27af Mon Sep 17 00:00:00 2001 From: Jeff Zhao Date: Fri, 15 Oct 2021 17:28:01 -0400 Subject: remove keymapping default code - just use a big string and parse it at runtime --- src/config/keymap/keymapping.rs | 176 ++-------------------------------------- 1 file changed, 8 insertions(+), 168 deletions(-) (limited to 'src/config/keymap/keymapping.rs') diff --git a/src/config/keymap/keymapping.rs b/src/config/keymap/keymapping.rs index 9250c28..0f42e94 100644 --- a/src/config/keymap/keymapping.rs +++ b/src/config/keymap/keymapping.rs @@ -8,10 +8,13 @@ use termion::event::MouseEvent; use termion::event::{Event, Key}; use crate::config::{parse_to_config_file, ConfigStructure, Flattenable}; +use crate::error::JoshutoResult; use crate::io::IoWorkerOptions; use crate::key_command::{Command, CommandKeybind}; use crate::util::keyparse::str_to_event; +use super::default_keymap::DEFAULT_KEYMAP; + #[derive(Debug, Deserialize)] struct CommandKeymap { pub command: String, @@ -78,179 +81,16 @@ impl AppKeyMapping { } } - pub fn default_res(&mut self) -> Result<(), String> { - let mut m = self; - - let cmd = Command::CursorMoveUp(1); - let keys = [Event::Key(Key::Up)]; - insert_keycommand(&mut m, cmd, &keys)?; - let cmd = Command::CursorMoveDown(1); - let keys = [Event::Key(Key::Down)]; - insert_keycommand(&mut m, cmd, &keys)?; - let cmd = Command::ParentDirectory; - let keys = [Event::Key(Key::Left)]; - insert_keycommand(&mut m, cmd, &keys)?; - let cmd = Command::OpenFile; - let keys = [Event::Key(Key::Right)]; - insert_keycommand(&mut m, cmd, &keys)?; - - let cmd = Command::OpenFile; - let keys = [Event::Key(Key::Char('\n'))]; - insert_keycommand(&mut m, cmd, &keys)?; - - let cmd = Command::CursorMoveHome; - let keys = [Event::Key(Key::Home)]; - insert_keycommand(&mut m, cmd, &keys)?; - - let cmd = Command::CursorMoveEnd; - let keys = [Event::Key(Key::End)]; - insert_keycommand(&mut m, cmd, &keys)?; - - let cmd = Command::CursorMovePageUp; - let keys = [Event::Key(Key::PageUp)]; - insert_keycommand(&mut m, cmd, &keys)?; - - let cmd = Command::CursorMovePageDown; - let keys = [Event::Key(Key::PageDown)]; - insert_keycommand(&mut m, cmd, &keys)?; - - // vim keys - let cmd = Command::CursorMoveUp(1); - let keys = [Event::Key(Key::Char('k'))]; - insert_keycommand(&mut m, cmd, &keys)?; - - let cmd = Command::CursorMoveDown(1); - let keys = [Event::Key(Key::Char('j'))]; - insert_keycommand(&mut m, cmd, &keys)?; - - let cmd = Command::ParentDirectory; - let keys = [Event::Key(Key::Char('h'))]; - insert_keycommand(&mut m, cmd, &keys)?; - - let cmd = Command::OpenFile; - let keys = [Event::Key(Key::Char('l'))]; - insert_keycommand(&mut m, cmd, &keys)?; - - let cmd = Command::NewTab; - let keys = [Event::Key(Key::Char('T'))]; - insert_keycommand(&mut m, cmd, &keys)?; - let cmd = Command::NewTab; - let keys = [Event::Key(Key::Ctrl('t'))]; - insert_keycommand(&mut m, cmd, &keys)?; - - let cmd = Command::CloseTab; - let keys = [Event::Key(Key::Char('W'))]; - insert_keycommand(&mut m, cmd, &keys)?; - let cmd = Command::CloseTab; - let keys = [Event::Key(Key::Ctrl('w'))]; - insert_keycommand(&mut m, cmd, &keys)?; - - let cmd = Command::CloseTab; - let keys = [Event::Key(Key::Char('q'))]; - insert_keycommand(&mut m, cmd, &keys)?; - let cmd = Command::ForceQuit; - let keys = [Event::Key(Key::Char('Q'))]; - insert_keycommand(&mut m, cmd, &keys)?; - - let cmd = Command::ReloadDirList; - let keys = [Event::Key(Key::Char('R'))]; - insert_keycommand(&mut m, cmd, &keys)?; - - let cmd = Command::ToggleHiddenFiles; - let keys = [Event::Key(Key::Char('z')), Event::Key(Key::Char('h'))]; - insert_keycommand(&mut m, cmd, &keys)?; - - let cmd = Command::TabSwitch(1); - let keys = [Event::Key(Key::Char('\t'))]; - insert_keycommand(&mut m, cmd, &keys)?; - - let cmd = Command::TabSwitch(-1); - let keys = [Event::Key(Key::BackTab)]; - insert_keycommand(&mut m, cmd, &keys)?; - - let cmd = Command::OpenFileWith(None); - let keys = [Event::Key(Key::Char('r'))]; - insert_keycommand(&mut m, cmd, &keys)?; - - let cmd = Command::CutFiles; - let keys = [Event::Key(Key::Char('d')), Event::Key(Key::Char('d'))]; - insert_keycommand(&mut m, cmd, &keys)?; - - let cmd = Command::CopyFiles; - let keys = [Event::Key(Key::Char('y')), Event::Key(Key::Char('y'))]; - insert_keycommand(&mut m, cmd, &keys)?; - - let cmd = Command::PasteFiles(IoWorkerOptions::default()); - let keys = [Event::Key(Key::Char('p')), Event::Key(Key::Char('p'))]; - insert_keycommand(&mut m, cmd, &keys)?; - - let cmd = Command::DeleteFiles; - let keys = [Event::Key(Key::Delete)]; - insert_keycommand(&mut m, cmd, &keys)?; - - let cmd = Command::DeleteFiles; - let keys = [Event::Key(Key::Char('D')), Event::Key(Key::Char('d'))]; - insert_keycommand(&mut m, cmd, &keys)?; - - let cmd = Command::RenameFileAppend; - let keys = [Event::Key(Key::Char('a'))]; - insert_keycommand(&mut m, cmd, &keys)?; - - let cmd = Command::RenameFilePrepend; - let keys = [Event::Key(Key::Char('A'))]; - insert_keycommand(&mut m, cmd, &keys)?; - - let cmd = Command::CommandLine("search ".to_string(), "".to_string()); - let keys = [Event::Key(Key::Char('/'))]; - insert_keycommand(&mut m, cmd, &keys)?; - - let cmd = Command::SearchNext; - let keys = [Event::Key(Key::Char('n'))]; - insert_keycommand(&mut m, cmd, &keys)?; - - let cmd = Command::SearchPrev; - let keys = [Event::Key(Key::Char('N'))]; - insert_keycommand(&mut m, cmd, &keys)?; - - let cmd = Command::BulkRename; - let keys = [Event::Key(Key::Char('b')), Event::Key(Key::Char('b'))]; - insert_keycommand(&mut m, cmd, &keys)?; - - let cmd = Command::SetMode; - let keys = [Event::Key(Key::Char('='))]; - insert_keycommand(&mut m, cmd, &keys)?; - - let cmd = Command::CommandLine("".to_string(), "".to_string()); - let keys = [Event::Key(Key::Char(';'))]; - insert_keycommand(&mut m, cmd, &keys)?; - - let cmd = Command::CommandLine("".to_string(), "".to_string()); - let keys = [Event::Key(Key::Char(':'))]; - insert_keycommand(&mut m, cmd, &keys)?; - - let cmd = Command::CommandLine("mkdir ".to_string(), "".to_string()); - let keys = [Event::Key(Key::Char('m')), Event::Key(Key::Char('k'))]; - insert_keycommand(&mut m, cmd, &keys)?; - - let cmd = Command::CommandLine("rename ".to_string(), "".to_string()); - let keys = [Event::Key(Key::Char('c')), Event::Key(Key::Char('w'))]; - insert_keycommand(&mut m, cmd, &keys)?; - - let cmd = Command::Help; - let keys = [Event::Key(Key::Char('?'))]; - insert_keycommand(&mut m, cmd, &keys)?; - - Ok(()) + pub fn default_res() -> JoshutoResult { + let raw: RawAppKeyMapping = toml::from_str(DEFAULT_KEYMAP)?; + let keymapping: Self = raw.flatten(); + Ok(keymapping) } } impl std::default::Default for AppKeyMapping { fn default() -> Self { - let mut m = Self { - map: HashMap::new(), - }; - let _ = m.default_res(); - m + AppKeyMapping::default_res().unwrap() } } -- cgit v1.2.3