diff --git a/config/keymap.toml b/config/keymap.toml index 3040e4fc..897e2db1 100644 --- a/config/keymap.toml +++ b/config/keymap.toml @@ -22,6 +22,7 @@ keymap = [ { on = [ "" ], exec = "arrow 1" }, { on = [ "" ], exec = "leave" }, { on = [ "" ], exec = "enter" }, + { on = [ "" ], exec = "enter --select" }, # Selection { on = [ "" ], exec = "select --state=none" }, diff --git a/src/core/manager/tab.rs b/src/core/manager/tab.rs index e492ee1e..a5b23c65 100644 --- a/src/core/manager/tab.rs +++ b/src/core/manager/tab.rs @@ -262,6 +262,18 @@ impl Tab { }; true } + + pub fn current_is_file(&self) -> bool{ + let hovered = if let Some(ref h) = self.current.hovered { + h.clone() + } else { + return false; + }; + if hovered.meta.is_dir() { + return false; + } + true + } } impl Tab { diff --git a/src/ui/dispatcher.rs b/src/ui/dispatcher.rs index dc5699ff..1a9e8790 100644 --- a/src/ui/dispatcher.rs +++ b/src/ui/dispatcher.rs @@ -62,7 +62,12 @@ impl Executor { cx.manager.active_mut().arrow(step) } "leave" => cx.manager.active_mut().leave(), - "enter" => cx.manager.active_mut().enter(), + "enter" =>{ + if cx.manager.active().current_is_file() { + return cx.manager.open(exec.named.contains_key("select")) + } + cx.manager.active_mut().enter() + }, "back" => cx.manager.active_mut().back(), "forward" => cx.manager.active_mut().forward(),