From 786b5c533e32cfe88dbf8742fdbc18829fb46334 Mon Sep 17 00:00:00 2001 From: Kirawi Date: Sun, 11 Feb 2024 12:38:09 -0500 Subject: follow neovim's truecolor detection (#9577) --- helix-term/src/lib.rs | 25 +++++++++++++++++++------ 1 file changed, 19 insertions(+), 6 deletions(-) (limited to 'helix-term/src/lib.rs') diff --git a/helix-term/src/lib.rs b/helix-term/src/lib.rs index b1413ed0..cdde86ec 100644 --- a/helix-term/src/lib.rs +++ b/helix-term/src/lib.rs @@ -22,17 +22,30 @@ use url::Url; pub use keymap::macros::*; -#[cfg(not(windows))] -fn true_color() -> bool { - std::env::var("COLORTERM") - .map(|v| matches!(v.as_str(), "truecolor" | "24bit")) - .unwrap_or(false) -} #[cfg(windows)] fn true_color() -> bool { true } +#[cfg(not(windows))] +fn true_color() -> bool { + if matches!( + std::env::var("COLORTERM").map(|v| matches!(v.as_str(), "truecolor" | "24bit")), + Ok(true) + ) { + return true; + } + + match termini::TermInfo::from_env() { + Ok(t) => { + t.extended_cap("RGB").is_some() + || t.extended_cap("Tc").is_some() + || (t.extended_cap("setrgbf").is_some() && t.extended_cap("setrgbb").is_some()) + } + Err(_) => false, + } +} + /// Function used for filtering dir entries in the various file pickers. fn filter_picker_entry(entry: &DirEntry, root: &Path, dedup_symlinks: bool) -> bool { // We always want to ignore the .git directory, otherwise if -- cgit v1.2.3-70-g09d2