From f6547dd051a853d4510196c75b599fd4e5985ec7 Mon Sep 17 00:00:00 2001 From: fzdwx Date: Sat, 22 Jul 2023 22:53:03 +0800 Subject: [PATCH] feat: `open` support enter dir (#2) --- config/keymap.toml | 3 ++- src/core/manager/tab.rs | 10 ++++++++++ src/ui/dispatcher.rs | 7 ++++++- 3 files changed, 18 insertions(+), 2 deletions(-) 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();