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 May 1, 2024
1 parent 89bb073 commit 173c5d2
Show file tree
Hide file tree
Showing 3 changed files with 25 additions and 19 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,
}
}
}
11 changes: 8 additions & 3 deletions src/bin/bat/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -189,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,7 +205,7 @@ pub fn list_themes(cfg: &Config, config_dir: &Path, cache_dir: &Path) -> Result<
let stdout = io::stdout();
let mut stdout = stdout.lock();

let default_theme_name = default_theme(color_scheme(DetectColorScheme::Auto));
let default_theme_name = default_theme(color_scheme(detect_color_scheme));
for theme in assets.themes() {
let default_theme_info = if default_theme_name == theme {
" (default)"
Expand Down Expand Up @@ -375,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
16 changes: 7 additions & 9 deletions tests/integration_tests.rs
Original file line number Diff line number Diff line change
Expand Up @@ -274,37 +274,35 @@ fn squeeze_limit_line_numbers() {

#[test]
fn list_themes_with_colors() {
#[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());
}

#[test]
fn list_themes_without_colors() {
#[cfg(target_os = "macos")]
let default_theme_chunk = "Monokai Extended Light (default)";

#[cfg(not(target_os = "macos"))]
let default_theme_chunk = "Monokai Extended (default)";
let default_light_theme_chunk = "Monokai Extended Light (default light)";

bat()
.arg("--color=never")
.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_theme_chunk).normalize())
.stdout(predicate::str::contains(default_light_theme_chunk).normalize());
}

#[test]
Expand Down

0 comments on commit 173c5d2

Please sign in to comment.