aboutsummaryrefslogtreecommitdiff
path: root/helix-term
diff options
context:
space:
mode:
authorlazytanuki2022-06-20 15:07:32 +0000
committerGitHub2022-06-20 15:07:32 +0000
commit55f4f6951571d44862d5f1bc3ad7094953b788b6 (patch)
tree5af0508f99a5b6a16da0c25f9caa813515272334 /helix-term
parente2878a6e21914541d546bf98c961f2d05e198e9d (diff)
fix: do not color health summary when stdout is piped (#2836)
* fix: do not color health summary when stdout is piped * fix: use crossterm instead of is-terminal
Diffstat (limited to 'helix-term')
-rw-r--r--helix-term/src/health.rs15
1 files changed, 10 insertions, 5 deletions
diff --git a/helix-term/src/health.rs b/helix-term/src/health.rs
index bd74f478..f64e121d 100644
--- a/helix-term/src/health.rs
+++ b/helix-term/src/health.rs
@@ -1,4 +1,7 @@
-use crossterm::style::{Color, Print, Stylize};
+use crossterm::{
+ style::{Color, Print, Stylize},
+ tty::IsTty,
+};
use helix_core::config::{default_syntax_loader, user_syntax_loader};
use helix_loader::grammar::load_runtime_file;
use std::io::Write;
@@ -106,17 +109,19 @@ pub fn languages_all() -> std::io::Result<()> {
let terminal_cols = crossterm::terminal::size().map(|(c, _)| c).unwrap_or(80);
let column_width = terminal_cols as usize / headings.len();
+ let is_terminal = std::io::stdout().is_tty();
let column = |item: &str, color: Color| {
- let data = format!(
+ let mut data = format!(
"{:width$}",
item.get(..column_width - 2)
.map(|s| format!("{}…", s))
.unwrap_or_else(|| item.to_string()),
width = column_width,
- )
- .stylize()
- .with(color);
+ );
+ if is_terminal {
+ data = data.stylize().with(color).to_string();
+ }
// We can't directly use println!() because of
// https://github.com/crossterm-rs/crossterm/issues/589