Add :pipe-to
typable command that ignores shell output (#4931)
This commit is contained in:
parent
d5ab974d38
commit
0b96021643
2 changed files with 26 additions and 1 deletions
|
@ -71,4 +71,5 @@
|
|||
| `:insert-output` | Run shell command, inserting output before each selection. |
|
||||
| `:append-output` | Run shell command, appending output after each selection. |
|
||||
| `:pipe` | Pipe each selection to the shell command. |
|
||||
| `:pipe-to` | Pipe each selection to the shell command, ignoring output. |
|
||||
| `:run-shell-command`, `:sh` | Run a shell command |
|
||||
|
|
|
@ -1741,13 +1741,30 @@ fn insert_output(
|
|||
Ok(())
|
||||
}
|
||||
|
||||
fn pipe_to(
|
||||
cx: &mut compositor::Context,
|
||||
args: &[Cow<str>],
|
||||
event: PromptEvent,
|
||||
) -> anyhow::Result<()> {
|
||||
pipe_impl(cx, args, event, &ShellBehavior::Ignore)
|
||||
}
|
||||
|
||||
fn pipe(cx: &mut compositor::Context, args: &[Cow<str>], event: PromptEvent) -> anyhow::Result<()> {
|
||||
pipe_impl(cx, args, event, &ShellBehavior::Replace)
|
||||
}
|
||||
|
||||
fn pipe_impl(
|
||||
cx: &mut compositor::Context,
|
||||
args: &[Cow<str>],
|
||||
event: PromptEvent,
|
||||
behavior: &ShellBehavior,
|
||||
) -> anyhow::Result<()> {
|
||||
if event != PromptEvent::Validate {
|
||||
return Ok(());
|
||||
}
|
||||
|
||||
ensure!(!args.is_empty(), "Shell command required");
|
||||
shell(cx, &args.join(" "), &ShellBehavior::Replace);
|
||||
shell(cx, &args.join(" "), behavior);
|
||||
Ok(())
|
||||
}
|
||||
|
||||
|
@ -2292,6 +2309,13 @@ pub const TYPABLE_COMMAND_LIST: &[TypableCommand] = &[
|
|||
fun: pipe,
|
||||
completer: None,
|
||||
},
|
||||
TypableCommand {
|
||||
name: "pipe-to",
|
||||
aliases: &[],
|
||||
doc: "Pipe each selection to the shell command, ignoring output.",
|
||||
fun: pipe_to,
|
||||
completer: None,
|
||||
},
|
||||
TypableCommand {
|
||||
name: "run-shell-command",
|
||||
aliases: &["sh"],
|
||||
|
|
Loading…
Reference in a new issue