1
0
mirror of https://github.com/sharkdp/bat.git synced 2025-09-02 03:12:25 +01:00

Respect --detect-color-scheme flag when listing themes

This commit is contained in:
Tau Gärtli
2024-05-01 08:27:31 +02:00
parent 1b0a6da4be
commit 5c6974703e
3 changed files with 25 additions and 19 deletions

View File

@@ -427,7 +427,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())
@@ -436,12 +445,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

@@ -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();
@@ -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)"
@@ -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());