summaryrefslogtreecommitdiffstats
path: root/src/config/keymap/keymapping.rs
diff options
context:
space:
mode:
authorJeff Zhao <jeff.no.zhao@gmail.com>2021-10-15 17:28:01 -0400
committerJeff Zhao <jeff.no.zhao@gmail.com>2021-10-15 17:28:01 -0400
commit1ead7cd5ecd891598d9b61c0e9e01a2c1c0f27af (patch)
treede3b4d8c179ed0a2d102165aafa40a31cbfb195c /src/config/keymap/keymapping.rs
parentc0a071f81b2a7a9776dfca313b19ade350c677b2 (diff)
remove keymapping default code
- just use a big string and parse it at runtime
Diffstat (limited to 'src/config/keymap/keymapping.rs')
-rw-r--r--src/config/keymap/keymapping.rs176
1 files changed, 8 insertions, 168 deletions
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<Self> {
+ 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()
}
}