diff --git a/src/bin/bat/main.rs b/src/bin/bat/main.rs index 78202539..c8e03d7c 100644 --- a/src/bin/bat/main.rs +++ b/src/bin/bat/main.rs @@ -30,13 +30,12 @@ use directories::PROJECT_DIRS; use globset::GlobMatcher; use bat::{ - assets::HighlightingAssets, config::Config, controller::Controller, error::*, input::Input, style::{StyleComponent, StyleComponents}, - MappingTarget, PagingMode, + theme, MappingTarget, PagingMode, }; const THEME_PREVIEW_DATA: &[u8] = include_bytes!("../../../assets/theme_preview.rs"); @@ -201,10 +200,15 @@ pub fn list_themes(cfg: &Config, config_dir: &Path, cache_dir: &Path) -> Result< let mut stdout = stdout.lock(); if config.colored_output { - let default_theme = HighlightingAssets::default_theme(); + use theme::{color_scheme, default_theme, ColorScheme, DetectColorScheme}; + let default_theme = default_theme(color_scheme(DetectColorScheme::Auto)); for theme in assets.themes() { let default_theme_info = if default_theme == theme { " (default)" + } else if theme::default_theme(ColorScheme::Dark) == theme { + " (default dark)" + } else if theme::default_theme(ColorScheme::Light) == theme { + " (default light)" } else { "" }; diff --git a/src/theme.rs b/src/theme.rs index 89627049..9af8e735 100644 --- a/src/theme.rs +++ b/src/theme.rs @@ -19,6 +19,11 @@ pub const fn default_theme(color_scheme: ColorScheme) -> &'static str { } } +/// Detects the color scheme from the terminal. +pub fn color_scheme(when: DetectColorScheme) -> ColorScheme { + detect(when, &TerminalColorSchemeDetector).unwrap_or_default() +} + /// Options for configuring the theme used for syntax highlighting. /// Used together with [`theme`]. #[derive(Debug, Default, PartialEq, Eq)]