#[cfg(windows)]
use crate::sys::winapi::ansi::set_virtual_terminal_processing;
#[cfg(windows)]
pub fn supports_ansi() -> bool {
if is_specific_term() {
return true;
}
set_virtual_terminal_processing(true)
.map(|_| true)
.unwrap_or(false)
}
#[cfg(windows)]
fn is_specific_term() -> bool {
const TERMS: [&'static str; 15] = [
"xterm", "rxvt", "eterm", "screen", "tmux", "vt100", "vt102", "vt220", "vt320", "ansi", "scoansi", "cygwin", "linux", "konsole", "bvterm", ];
match std::env::var("TERM") {
Ok(val) => val != "dumb" || TERMS.contains(&val.as_str()),
Err(_) => false,
}
}