mirror of
https://github.com/sxyazi/yazi.git
synced 2026-07-25 08:41:05 +00:00
chore: clean implementation of --args='...' parameter fir fd and rg`
This commit is contained in:
parent
ccde30efd4
commit
9dcfa5c240
3 changed files with 11 additions and 14 deletions
|
|
@ -63,27 +63,24 @@ impl Tab {
|
|||
let mut input = InputProxy::show(InputCfg::search(&opt.type_.to_string()));
|
||||
let Some(Ok(subject)) = input.recv().await else { bail!("") };
|
||||
|
||||
let mut arguments = Vec::new();
|
||||
let mut subjects = Vec::new();
|
||||
let words = shell_words::split(&subject)?;
|
||||
for word in words {
|
||||
if word.starts_with("--args=") {
|
||||
let args_string = word.strip_prefix("--args=").unwrap();
|
||||
arguments.extend(shell_words::split(args_string)?);
|
||||
} else {
|
||||
subjects.push(word);
|
||||
}
|
||||
}
|
||||
let (arguments, subjects): (Vec<String>, Vec<String>) = words
|
||||
.into_iter()
|
||||
.partition(|word| word.starts_with("--args="));
|
||||
if subjects.is_empty() {
|
||||
bail!("No search subject found");
|
||||
}
|
||||
let subject = subjects.join(" ");
|
||||
let args: Vec<String> = arguments.into_iter()
|
||||
.flat_map(|arg| shell_words::split(&arg["--args=".len()..]))
|
||||
.flatten()
|
||||
.collect();
|
||||
|
||||
cwd = cwd.into_search(subject.clone());
|
||||
let rx = if opt.type_ == OptType::Rg {
|
||||
external::rg(external::RgOpt { cwd: cwd.clone(), hidden, subject, args: arguments})
|
||||
external::rg(external::RgOpt { cwd: cwd.clone(), hidden, subject, args})
|
||||
} else {
|
||||
external::fd(external::FdOpt { cwd: cwd.clone(), hidden, glob: false, subject, args: arguments })
|
||||
external::fd(external::FdOpt { cwd: cwd.clone(), hidden, glob: false, subject, args })
|
||||
}?;
|
||||
|
||||
let rx = UnboundedReceiverStream::new(rx).chunks_timeout(1000, Duration::from_millis(300));
|
||||
|
|
|
|||
2
yazi-plugin/src/external/fd.rs
vendored
2
yazi-plugin/src/external/fd.rs
vendored
|
|
@ -1,4 +1,4 @@
|
|||
use std::{env::args, process::Stdio};
|
||||
use std::process::Stdio;
|
||||
|
||||
use anyhow::Result;
|
||||
use tokio::{io::{AsyncBufReadExt, BufReader}, process::Command, sync::mpsc::{self, UnboundedReceiver}};
|
||||
|
|
|
|||
2
yazi-plugin/src/external/rg.rs
vendored
2
yazi-plugin/src/external/rg.rs
vendored
|
|
@ -16,7 +16,7 @@ pub fn rg(opt: RgOpt) -> Result<UnboundedReceiver<File>> {
|
|||
.current_dir(&opt.cwd)
|
||||
.args(["--color=never", "--files-with-matches", "--smart-case"])
|
||||
.args(if opt.hidden { ["--hidden", "--no-ignore"] } else { ["--no-hidden", "--ignore"] })
|
||||
.args(opt.args)
|
||||
.args(&opt.args)
|
||||
.arg(&opt.subject)
|
||||
.kill_on_drop(true)
|
||||
.stdout(Stdio::piped())
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue