aboutsummaryrefslogtreecommitdiff
path: root/helix-term/src/application.rs
diff options
context:
space:
mode:
authorJason Hansen2021-11-10 01:53:14 +0000
committerGitHub2021-11-10 01:53:14 +0000
commitcf831b1a65625f29d6e1bc12483a45c1adc8dff4 (patch)
treed5927e05d2cf0e3e074774276432504fd506d558 /helix-term/src/application.rs
parent68224232af1126daa5b043a096269fbd6cb53551 (diff)
Allow piping from stdin into a buffer on startup (#996)
* Allow piping from stdin into a buffer on startup * Refactor * Don't allow piping into new buffer on macOS * Update helix-term/src/application.rs Co-authored-by: Blaž Hrastnik <blaz@mxxn.io> * Update helix-term/src/application.rs Co-authored-by: Blaž Hrastnik <blaz@mxxn.io> * Fix Co-authored-by: Blaž Hrastnik <blaz@mxxn.io>
Diffstat (limited to 'helix-term/src/application.rs')
-rw-r--r--helix-term/src/application.rs14
1 files changed, 12 insertions, 2 deletions
diff --git a/helix-term/src/application.rs b/helix-term/src/application.rs
index f1884199..b04eef0d 100644
--- a/helix-term/src/application.rs
+++ b/helix-term/src/application.rs
@@ -7,7 +7,7 @@ use crate::{args::Args, compositor::Compositor, config::Config, job::Jobs, ui};
use log::{error, warn};
use std::{
- io::{stdout, Write},
+ io::{stdin, stdout, Write},
sync::Arc,
time::{Duration, Instant},
};
@@ -17,6 +17,7 @@ use anyhow::Error;
use crossterm::{
event::{DisableMouseCapture, EnableMouseCapture, Event, EventStream},
execute, terminal,
+ tty::IsTty,
};
#[cfg(not(windows))]
use {
@@ -134,8 +135,17 @@ impl Application {
}
editor.set_status(format!("Loaded {} files.", nr_of_files));
}
- } else {
+ } else if stdin().is_tty() {
editor.new_file(Action::VerticalSplit);
+ } else if cfg!(target_os = "macos") {
+ // On Linux and Windows, we allow the output of a command to be piped into the new buffer.
+ // This doesn't currently work on macOS because of the following issue:
+ // https://github.com/crossterm-rs/crossterm/issues/500
+ anyhow::bail!("Piping into helix-term is currently not supported on macOS");
+ } else {
+ editor
+ .new_file_from_stdin(Action::VerticalSplit)
+ .unwrap_or_else(|_| editor.new_file(Action::VerticalSplit));
}
editor.set_theme(theme);