From 218afc30ac960fa33ac6f5e50ced4fe9e0e085e1 Mon Sep 17 00:00:00 2001 From: cyphercodes Date: Sat, 4 Jul 2026 06:29:43 +0300 Subject: [PATCH] Respect paging mode for list languages --- CHANGELOG.md | 1 + src/bin/bat/main.rs | 8 +++----- tests/integration_tests.rs | 16 +++++++++++----- 3 files changed, 15 insertions(+), 10 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0e2fc216..a55e31c3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -23,6 +23,7 @@ - Syntax highlighting for Python files using uv as script runner in shebang #3689 (@janlarres) ## Bugfixes +- Fix `--list-languages` respecting `--paging=never`, see #3828 (@cyphercodes) - `--strip-ansi`: also strip 8-bit C1 introducers (U+0090, U+0098, U+009B, U+009D, U+009E, U+009F) and DCS/SOS/PM/APC sequence bodies, which previously passed through. See #3729 (@curious-rabbit) - Fix `--ignored-suffix` not falling back to first-line/shebang detection when the ignored suffix is also a registered extension (e.g. `--ignored-suffix .txt` on a shebang script), see #2745 and #3816 (@adnrivera) - Fix `capacity overflow` panic when printing a snip separator at `--terminal-width=1` with multiple line ranges. Closes #3803, see #3804 (@leeewee) diff --git a/src/bin/bat/main.rs b/src/bin/bat/main.rs index c8bbd368..705a28b9 100644 --- a/src/bin/bat/main.rs +++ b/src/bin/bat/main.rs @@ -427,11 +427,9 @@ fn run() -> Result { if app.matches.get_flag("list-languages") { let languages: String = get_languages(&config, cache_dir)?; let inputs: Vec = vec![Input::from_reader(Box::new(languages.as_bytes()))]; - let plain_config = Config { - style_components: StyleComponents::new(StyleComponent::Plain.components(false)), - paging_mode: PagingMode::QuitIfOneScreen, - ..Default::default() - }; + let mut plain_config = config.clone(); + plain_config.style_components = + StyleComponents::new(StyleComponent::Plain.components(false)); run_controller(inputs, &plain_config, cache_dir) } else if app.matches.get_flag("list-themes") { list_themes(&config, config_dir, cache_dir, app.theme_options())?; diff --git a/tests/integration_tests.rs b/tests/integration_tests.rs index 33de3fbf..124a9e5b 100644 --- a/tests/integration_tests.rs +++ b/tests/integration_tests.rs @@ -626,12 +626,18 @@ fn list_themes_to_piped_output() { } #[test] +#[serial] fn list_languages() { - bat() - .arg("--list-languages") - .assert() - .success() - .stdout(predicate::str::contains("Rust").normalize()); + mocked_pagers::with_mocked_versions_of_more_and_most_in_path(|| { + bat() + .env("PAGER", mocked_pagers::from("echo pager-output")) + .arg("--list-languages") + .arg("--paging=never") + .assert() + .success() + .stdout(predicate::str::contains("Rust").normalize()) + .stdout(predicate::str::contains("pager-output").not()); + }); } #[test]