From d5bd4aa93fe3ff8643c0dd0cdb8700e8430d7931 Mon Sep 17 00:00:00 2001 From: sblondon Date: Sun, 14 Apr 2024 15:54:52 +0200 Subject: display which theme is the default one in colored output (#2838) --- CHANGELOG.md | 1 + src/bin/bat/main.rs | 12 ++++++++++-- tests/integration_tests.rs | 18 ++++++++++++++++++ 3 files changed, 29 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index c7ebdc55..3444127e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -33,6 +33,7 @@ - Relax syntax mapping rule restrictions to allow brace expansion #2865 (@cyqsimon) - Apply clippy fixes #2864 (@cyqsimon) - Faster startup by offloading glob matcher building to a worker thread #2868 (@cyqsimon) +- Display which theme is the default one in colored output, see #2838 (@sblondon) ## Syntaxes diff --git a/src/bin/bat/main.rs b/src/bin/bat/main.rs index 615f1114..78202539 100644 --- a/src/bin/bat/main.rs +++ b/src/bin/bat/main.rs @@ -30,6 +30,7 @@ use directories::PROJECT_DIRS; use globset::GlobMatcher; use bat::{ + assets::HighlightingAssets, config::Config, controller::Controller, error::*, @@ -200,11 +201,18 @@ 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(); for theme in assets.themes() { + let default_theme_info = if default_theme == theme { + " (default)" + } else { + "" + }; writeln!( stdout, - "Theme: {}\n", - Style::new().bold().paint(theme.to_string()) + "Theme: {}{}\n", + Style::new().bold().paint(theme.to_string()), + default_theme_info )?; config.theme = theme.to_string(); Controller::new(&config, &assets) diff --git a/tests/integration_tests.rs b/tests/integration_tests.rs index d6523366..9de8236a 100644 --- a/tests/integration_tests.rs +++ b/tests/integration_tests.rs @@ -272,6 +272,24 @@ fn squeeze_limit_line_numbers() { .stdout(" 1 line 1\n 2 \n 3 \n 4 \n 5 line 5\n 6 \n 7 \n 8 \n 9 \n 10 \n 20 line 20\n 21 line 21\n 22 \n 23 \n 24 line 24\n 25 \n 26 line 26\n 27 \n 28 \n 29 \n 30 line 30\n"); } +#[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)"; + + bat() + .arg("--color=always") + .arg("--list-themes") + .assert() + .success() + .stdout(predicate::str::contains("DarkNeon").normalize()) + .stdout(predicate::str::contains(default_theme_chunk).normalize()) + .stdout(predicate::str::contains("Output the square of a number.").normalize()); +} + #[test] #[cfg_attr(any(not(feature = "git"), target_os = "windows"), ignore)] fn short_help() { -- cgit v1.2.3