diff options
author | lazytanuki | 2022-06-20 15:07:32 +0000 |
---|---|---|
committer | GitHub | 2022-06-20 15:07:32 +0000 |
commit | 55f4f6951571d44862d5f1bc3ad7094953b788b6 (patch) | |
tree | 5af0508f99a5b6a16da0c25f9caa813515272334 | |
parent | e2878a6e21914541d546bf98c961f2d05e198e9d (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
-rw-r--r-- | helix-term/src/health.rs | 15 |
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 |