Skip to content

Commit

Permalink
Respect --detect-color-scheme flag when listing themes
Browse files Browse the repository at this point in the history
  • Loading branch information
bash committed Apr 16, 2024
1 parent 4409c56 commit 4e59d3d
Show file tree
Hide file tree
Showing 3 changed files with 23 additions and 15 deletions.
17 changes: 10 additions & 7 deletions src/bin/bat/app.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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())
Expand All @@ -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,
}
}
}
14 changes: 10 additions & 4 deletions src/bin/bat/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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;

Expand Down Expand Up @@ -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();
Expand All @@ -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)"
Expand Down Expand Up @@ -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());
Expand Down
7 changes: 3 additions & 4 deletions tests/integration_tests.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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());
}

Expand Down

0 comments on commit 4e59d3d

Please sign in to comment.