diff --git a/config/keymap.toml b/config/keymap.toml index 3040e4fc..dfd4c670 100644 --- a/config/keymap.toml +++ b/config/keymap.toml @@ -21,7 +21,8 @@ keymap = [ { on = [ "" ], exec = "arrow -1" }, { on = [ "" ], exec = "arrow 1" }, { on = [ "" ], exec = "leave" }, - { on = [ "" ], exec = "enter" }, + { on = [ "" ], exec = "open" }, + { on = [ "" ], exec = "open --select" }, # Selection { on = [ "" ], exec = "select --state=none" }, diff --git a/src/core/manager/tab.rs b/src/core/manager/tab.rs index e492ee1e..e88deee5 100644 --- a/src/core/manager/tab.rs +++ b/src/core/manager/tab.rs @@ -262,6 +262,16 @@ impl Tab { }; true } + + pub fn current_is_dir(&self) -> bool{ + let hovered = if let Some(ref h) = self.current.hovered { + h.clone() + } else { + return false; + }; + + hovered.meta.is_dir() + } } impl Tab { diff --git a/src/ui/dispatcher.rs b/src/ui/dispatcher.rs index dc5699ff..95221887 100644 --- a/src/ui/dispatcher.rs +++ b/src/ui/dispatcher.rs @@ -78,7 +78,12 @@ impl Executor { } // Operation - "open" => cx.manager.open(exec.named.contains_key("select")), + "open" => { + if cx.manager.active().current_is_dir() { + return cx.manager.active_mut().enter(); + } + cx.manager.open(exec.named.contains_key("select")) + }, "yank" => cx.manager.yank(exec.named.contains_key("cut")), "paste" => { let dest = cx.manager.current().cwd.clone();