diff --git a/Cargo.lock b/Cargo.lock index 707f7dc..3f38e24 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1096,7 +1096,7 @@ checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" [[package]] name = "xplr" -version = "0.1.1" +version = "0.1.2" dependencies = [ "criterion", "crossterm", diff --git a/Cargo.toml b/Cargo.toml index 88cf794..022ff4a 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "xplr" -version = "0.1.1" +version = "0.1.2" authors = ["Arijit Basu "] edition = "2018" description = "An experimental, minimal, configurable TUI file explorer, stealing ideas from nnn and fzf." diff --git a/src/config.rs b/src/config.rs index 817c617..bfd649d 100644 --- a/src/config.rs +++ b/src/config.rs @@ -31,7 +31,6 @@ impl Default for Format { #[derive(Debug, Clone, PartialEq, Serialize, Deserialize)] pub enum GlobalAction { - // Common actions ToggleShowHidden, Back, @@ -54,7 +53,6 @@ pub enum GlobalAction { #[derive(Debug, Clone, PartialEq, Serialize, Deserialize)] pub enum ExploreModeAction { - // Common actions ToggleShowHidden, Back, @@ -86,7 +84,6 @@ pub enum ExploreModeAction { #[derive(Debug, Clone, PartialEq, Serialize, Deserialize)] pub enum SelectModeAction { - // Common actions ToggleShowHidden, Back, @@ -165,126 +162,100 @@ pub struct KeyBindings { impl Default for KeyBindings { fn default() -> Self { - let mut global: HashMap = Default::default(); - let mut explore_mode: HashMap = Default::default(); - let explore_submodes: HashMap = Default::default(); - let mut select_mode: HashMap = Default::default(); - let select_submodes: HashMap = Default::default(); - - global.insert( - Key::CtrlC, - GlobalActionMenu { - help: "quit".into(), - actions: vec![GlobalAction::Quit], - }, - ); - - global.insert( - Key::Q, - GlobalActionMenu { - help: "quit".into(), - actions: vec![GlobalAction::Quit], - }, - ); - - global.insert( - Key::Escape, - GlobalActionMenu { - help: "quit".into(), - actions: vec![GlobalAction::Quit], - }, - ); - - global.insert( - Key::Left, - GlobalActionMenu { - help: "left".into(), - actions: vec![GlobalAction::Back], - }, - ); - - global.insert( - Key::Dot, - GlobalActionMenu { - help: "show/hide hidden files".into(), - actions: vec![GlobalAction::ToggleShowHidden], - }, - ); - - global.insert( - Key::Right, - GlobalActionMenu { - help: "enter".into(), - actions: vec![GlobalAction::Enter], - }, - ); - - global.insert( - Key::Up, - GlobalActionMenu { - help: "".into(), - actions: vec![GlobalAction::FocusNext], - }, - ); - - global.insert( - Key::G, - GlobalActionMenu { - help: "top".into(), - actions: vec![GlobalAction::FocusFirst], - }, - ); - - global.insert( - Key::ShiftG, - GlobalActionMenu { - help: "bottom".into(), - actions: vec![GlobalAction::FocusLast], - }, - ); - - global.insert( - Key::Tilde, - GlobalActionMenu { - help: "home".into(), - actions: vec![GlobalAction::ChangeDirectory("~".to_string())], - }, - ); - - explore_mode.insert( - Key::Space, - ExploreModeActionMenu { - help: "select".into(), - actions: vec![ExploreModeAction::Select, ExploreModeAction::FocusNext], - }, - ); - - select_mode.insert( - Key::Space, - SelectModeActionMenu { - help: "select/unselect".into(), - actions: vec![ - SelectModeAction::ToggleSelection, - SelectModeAction::FocusNext, - ], - }, - ); - - Self { - global, - explore_mode, - explore_submodes, - select_mode, - select_submodes, - } + let yaml = r###" + global: + ctrl-c: + help: quit + actions: + - Quit + q: + help: quit + actions: + - Quit + question-mark: + help: print debug info + actions: + - PrintAppStateAndQuit + up: + help: up + actions: + - FocusPrevious + down: + help: down + actions: + - FocusNext + shift-g: + help: bottom + actions: + - FocusLast + forward-slash: + help: go root + actions: + - ChangeDirectory: / + tilde: + help: go home + actions: + - ChangeDirectory: "~" + dot: + help: toggle show hidden + actions: + - ToggleShowHidden + right: + help: enter + actions: + - Enter + left: + help: back + actions: + - Back + escape: + help: quit + actions: + - Quit + explore_mode: + g: + help: go to + actions: + - EnterSubmode: GoTo + return: + help: done + actions: + - PrintFocusedAndQuit + space: + help: select + actions: + - Select + - FocusNext + explore_submodes: + GoTo: + g: + help: top + actions: + - FocusFirst + - ExitSubmode + select_mode: + space: + help: toggle selection + actions: + - ToggleSelection + - FocusNext + g: + help: go to + actions: + - EnterSubmode: GoTo + return: + help: done + actions: + - PrintSelectedAndQuit + select_submodes: + GoTo: + g: + help: top + actions: + - FocusFirst + - ExitSubmode + "###; + serde_yaml::from_str(yaml).unwrap() } }