Lazy programmer hack for key bindings

pull/3/head
Arijit Basu 3 years ago
parent 720ba38b4d
commit 758f362fee
No known key found for this signature in database
GPG Key ID: 7D7BF809E7378863

2
Cargo.lock generated

@ -1096,7 +1096,7 @@ checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
[[package]] [[package]]
name = "xplr" name = "xplr"
version = "0.1.1" version = "0.1.2"
dependencies = [ dependencies = [
"criterion", "criterion",
"crossterm", "crossterm",

@ -1,6 +1,6 @@
[package] [package]
name = "xplr" name = "xplr"
version = "0.1.1" version = "0.1.2"
authors = ["Arijit Basu <sayanarijit@gmail.com>"] authors = ["Arijit Basu <sayanarijit@gmail.com>"]
edition = "2018" edition = "2018"
description = "An experimental, minimal, configurable TUI file explorer, stealing ideas from nnn and fzf." description = "An experimental, minimal, configurable TUI file explorer, stealing ideas from nnn and fzf."

@ -31,7 +31,6 @@ impl Default for Format {
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)] #[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
pub enum GlobalAction { pub enum GlobalAction {
// Common actions // Common actions
ToggleShowHidden, ToggleShowHidden,
Back, Back,
@ -54,7 +53,6 @@ pub enum GlobalAction {
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)] #[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
pub enum ExploreModeAction { pub enum ExploreModeAction {
// Common actions // Common actions
ToggleShowHidden, ToggleShowHidden,
Back, Back,
@ -86,7 +84,6 @@ pub enum ExploreModeAction {
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)] #[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
pub enum SelectModeAction { pub enum SelectModeAction {
// Common actions // Common actions
ToggleShowHidden, ToggleShowHidden,
Back, Back,
@ -165,126 +162,100 @@ pub struct KeyBindings {
impl Default for KeyBindings { impl Default for KeyBindings {
fn default() -> Self { fn default() -> Self {
let mut global: HashMap<Key, GlobalActionMenu> = Default::default(); let yaml = r###"
let mut explore_mode: HashMap<Key, ExploreModeActionMenu> = Default::default(); global:
let explore_submodes: HashMap<String, ExploreSubmodeActionMenu> = Default::default(); ctrl-c:
let mut select_mode: HashMap<Key, SelectModeActionMenu> = Default::default(); help: quit
let select_submodes: HashMap<String, SelectSubmodeActionMenu> = Default::default(); actions:
- Quit
global.insert( q:
Key::CtrlC, help: quit
GlobalActionMenu { actions:
help: "quit".into(), - Quit
actions: vec![GlobalAction::Quit], question-mark:
}, help: print debug info
); actions:
- PrintAppStateAndQuit
global.insert( up:
Key::Q, help: up
GlobalActionMenu { actions:
help: "quit".into(), - FocusPrevious
actions: vec![GlobalAction::Quit], down:
}, help: down
); actions:
- FocusNext
global.insert( shift-g:
Key::Escape, help: bottom
GlobalActionMenu { actions:
help: "quit".into(), - FocusLast
actions: vec![GlobalAction::Quit], forward-slash:
}, help: go root
); actions:
- ChangeDirectory: /
global.insert( tilde:
Key::Left, help: go home
GlobalActionMenu { actions:
help: "left".into(), - ChangeDirectory: "~"
actions: vec![GlobalAction::Back], dot:
}, help: toggle show hidden
); actions:
- ToggleShowHidden
global.insert( right:
Key::Dot, help: enter
GlobalActionMenu { actions:
help: "show/hide hidden files".into(), - Enter
actions: vec![GlobalAction::ToggleShowHidden], left:
}, help: back
); actions:
- Back
global.insert( escape:
Key::Right, help: quit
GlobalActionMenu { actions:
help: "enter".into(), - Quit
actions: vec![GlobalAction::Enter], explore_mode:
}, g:
); help: go to
actions:
global.insert( - EnterSubmode: GoTo
Key::Up, return:
GlobalActionMenu { help: done
help: "<prev".into(), actions:
actions: vec![GlobalAction::FocusPrevious], - PrintFocusedAndQuit
}, space:
); help: select
actions:
global.insert( - Select
Key::Down, - FocusNext
GlobalActionMenu { explore_submodes:
help: "next>".into(), GoTo:
actions: vec![GlobalAction::FocusNext], g:
}, help: top
); actions:
- FocusFirst
global.insert( - ExitSubmode
Key::G, select_mode:
GlobalActionMenu { space:
help: "top".into(), help: toggle selection
actions: vec![GlobalAction::FocusFirst], actions:
}, - ToggleSelection
); - FocusNext
g:
global.insert( help: go to
Key::ShiftG, actions:
GlobalActionMenu { - EnterSubmode: GoTo
help: "bottom".into(), return:
actions: vec![GlobalAction::FocusLast], help: done
}, actions:
); - PrintSelectedAndQuit
select_submodes:
global.insert( GoTo:
Key::Tilde, g:
GlobalActionMenu { help: top
help: "home".into(), actions:
actions: vec![GlobalAction::ChangeDirectory("~".to_string())], - FocusFirst
}, - ExitSubmode
); "###;
serde_yaml::from_str(yaml).unwrap()
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,
}
} }
} }

Loading…
Cancel
Save