Compare commits

...

2 Commits

Author SHA1 Message Date
Tau Gärtli bf3f3cf2f0
Merge 4e59d3d6c3 into 9eaed3e3f0 2024-04-16 13:17:43 +00:00
Tau Gärtli 4e59d3d6c3
Respect --detect-color-scheme flag when listing themes 2024-04-16 15:17:05 +02:00
3 changed files with 23 additions and 15 deletions

View File

@ -393,7 +393,16 @@ impl App {
.matches
.get_one::<String>("theme-light")
.map(|t| ThemeRequest::from_str(t).unwrap());
let detect_color_scheme = match self
ThemeOptions {
theme,
theme_dark,
theme_light,
detect_color_scheme: self.detect_color_scheme(),
}
}
pub(crate) fn detect_color_scheme(&self) -> DetectColorScheme {
match self
.matches
.get_one::<String>("detect-color-scheme")
.map(|s| s.as_str())
@ -402,12 +411,6 @@ impl App {
Some("never") => DetectColorScheme::Never,
Some("always") => DetectColorScheme::Always,
_ => unreachable!("other values for --detect-color-scheme are not allowed"),
};
ThemeOptions {
theme,
theme_dark,
theme_light,
detect_color_scheme,
}
}
}

View File

@ -14,6 +14,7 @@ use std::io::{BufReader, Write};
use std::path::Path;
use std::process;
use bat::theme::DetectColorScheme;
use nu_ansi_term::Color::Green;
use nu_ansi_term::Style;
@ -188,7 +189,12 @@ fn theme_preview_file<'a>() -> Input<'a> {
Input::from_reader(Box::new(BufReader::new(THEME_PREVIEW_DATA)))
}
pub fn list_themes(cfg: &Config, config_dir: &Path, cache_dir: &Path) -> Result<()> {
pub fn list_themes(
cfg: &Config,
config_dir: &Path,
cache_dir: &Path,
detect_color_scheme: DetectColorScheme,
) -> Result<()> {
let assets = assets_from_cache_or_binary(cfg.use_custom_assets, cache_dir)?;
let mut config = cfg.clone();
let mut style = HashSet::new();
@ -200,8 +206,8 @@ pub fn list_themes(cfg: &Config, config_dir: &Path, cache_dir: &Path) -> Result<
let mut stdout = stdout.lock();
if config.colored_output {
use theme::{color_scheme, default_theme, ColorScheme, DetectColorScheme};
let default_theme = default_theme(color_scheme(DetectColorScheme::Auto));
use theme::{color_scheme, default_theme, ColorScheme};
let default_theme = default_theme(color_scheme(detect_color_scheme));
for theme in assets.themes() {
let default_theme_info = if default_theme == theme {
" (default)"
@ -374,7 +380,7 @@ fn run() -> Result<bool> {
};
run_controller(inputs, &plain_config, cache_dir)
} else if app.matches.get_flag("list-themes") {
list_themes(&config, config_dir, cache_dir)?;
list_themes(&config, config_dir, cache_dir, app.detect_color_scheme())?;
Ok(true)
} else if app.matches.get_flag("config-file") {
println!("{}", config_file().to_string_lossy());

View File

@ -274,19 +274,18 @@ fn squeeze_limit_line_numbers() {
#[test]
fn list_themes() {
#[cfg(target_os = "macos")]
let default_theme_chunk = "Monokai Extended Light\x1B[0m (default)";
#[cfg(not(target_os = "macos"))]
let default_theme_chunk = "Monokai Extended\x1B[0m (default)";
let default_light_theme_chunk = "Monokai Extended Light\x1B[0m (default light)";
bat()
.arg("--color=always")
.arg("--detect-color-scheme=never")
.arg("--list-themes")
.assert()
.success()
.stdout(predicate::str::contains("DarkNeon").normalize())
.stdout(predicate::str::contains(default_theme_chunk).normalize())
.stdout(predicate::str::contains(default_light_theme_chunk).normalize())
.stdout(predicate::str::contains("Output the square of a number.").normalize());
}