From 8f7c8ffbfbd37550ad56a62e08aa486039a1585d Mon Sep 17 00:00:00 2001 From: fzdwx Date: Sat, 12 Aug 2023 19:23:07 +0800 Subject: [PATCH] feat: add preset command to the `shell` --- app/src/executor.rs | 5 ++++- core/src/manager/manager.rs | 21 +++++++++++++-------- 2 files changed, 17 insertions(+), 9 deletions(-) diff --git a/app/src/executor.rs b/app/src/executor.rs index 78414152..67402d4f 100644 --- a/app/src/executor.rs +++ b/app/src/executor.rs @@ -106,7 +106,10 @@ impl Executor { } "create" => cx.manager.create(), "rename" => cx.manager.rename(), - "shell" => cx.manager.shell(exec.named.contains_key("block")), + "shell" => cx.manager.shell( + exec.named.contains_key("block"), + exec.args.get(0).map(|s| s.as_str()).unwrap_or(""), + ), "hidden" => cx.manager.current_mut().hidden(match exec.args.get(0).map(|s| s.as_str()) { Some("show") => Some(true), Some("hide") => Some(false), diff --git a/core/src/manager/manager.rs b/core/src/manager/manager.rs index 6660f0d4..d580139b 100644 --- a/core/src/manager/manager.rs +++ b/core/src/manager/manager.rs @@ -225,16 +225,21 @@ impl Manager { pub fn bulk_rename(&self) -> bool { false } - pub fn shell(&self, block: bool) -> bool { - tokio::spawn(async move { - let result = emit!(Input(InputOpt::top("Shell:").with_highlight())); + pub fn shell(&self, block: bool, arg: &str) -> bool { + let mut command = arg.to_string(); - if let Ok(exec) = result.await { - emit!(Open( - Default::default(), - Some(Opener { exec, block, display_name: Default::default(), spread: true }) - )); + tokio::spawn(async move { + if command.is_empty() { + let result = emit!(Input(InputOpt::top("Shell:").with_highlight())); + if let Ok(exec) = result.await { + command = exec; + } } + + emit!(Open( + Default::default(), + Some(Opener { exec: command, block, display_name: Default::default(), spread: true }) + )); }); false