From a75f307cc76b49b9d128abbe4a2ef57279c8aeb9 Mon Sep 17 00:00:00 2001 From: fzdwx Date: Sat, 22 Jul 2023 22:07:51 +0800 Subject: [PATCH] feat: `open` support open dir --- config/keymap.toml | 4 ++-- src/core/manager/tab.rs | 7 ++----- src/ui/dispatcher.rs | 14 +++++++------- 3 files changed, 11 insertions(+), 14 deletions(-) diff --git a/config/keymap.toml b/config/keymap.toml index 897e2db1..dfd4c670 100644 --- a/config/keymap.toml +++ b/config/keymap.toml @@ -21,8 +21,8 @@ keymap = [ { on = [ "" ], exec = "arrow -1" }, { on = [ "" ], exec = "arrow 1" }, { on = [ "" ], exec = "leave" }, - { on = [ "" ], exec = "enter" }, - { on = [ "" ], exec = "enter --select" }, + { 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 ce564a58..6d53c3fb 100644 --- a/src/core/manager/tab.rs +++ b/src/core/manager/tab.rs @@ -263,17 +263,14 @@ impl Tab { true } - pub fn current_is_file(&self) -> bool{ + pub fn current_is_dir(&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 + hovered.meta.is_dir() } } diff --git a/src/ui/dispatcher.rs b/src/ui/dispatcher.rs index 1a9e8790..95221887 100644 --- a/src/ui/dispatcher.rs +++ b/src/ui/dispatcher.rs @@ -62,12 +62,7 @@ impl Executor { cx.manager.active_mut().arrow(step) } "leave" => cx.manager.active_mut().leave(), - "enter" =>{ - if cx.manager.active().current_is_file() { - return cx.manager.open(exec.named.contains_key("select")) - } - cx.manager.active_mut().enter() - }, + "enter" => cx.manager.active_mut().enter(), "back" => cx.manager.active_mut().back(), "forward" => cx.manager.active_mut().forward(), @@ -83,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();