From e2bf85e749d87459e3fced697af5cd9cc96eeb8c Mon Sep 17 00:00:00 2001
From: J-Kappes <87168492+J-Kappes@users.noreply.github.com>
Date: Thu, 14 Sep 2023 03:45:46 +0000
Subject: [PATCH] Make -pp override --paging and vice versa when passed as a
 later argument. (#2660)

---
 src/bin/bat/clap_app.rs    |  2 ++
 tests/integration_tests.rs | 36 ++++++++++++++++++++++++++++++++++++
 2 files changed, 38 insertions(+)

diff --git a/src/bin/bat/clap_app.rs b/src/bin/bat/clap_app.rs
index 01f9d7549a..8ffeb5b228 100644
--- a/src/bin/bat/clap_app.rs
+++ b/src/bin/bat/clap_app.rs
@@ -79,6 +79,7 @@ pub fn build_app(interactive_output: bool) -> Command {
             Arg::new("plain")
                 .overrides_with("plain")
                 .overrides_with("number")
+                .overrides_with("paging")
                 .short('p')
                 .long("plain")
                 .action(ArgAction::Count)
@@ -303,6 +304,7 @@ pub fn build_app(interactive_output: bool) -> Command {
                 .long("paging")
                 .overrides_with("paging")
                 .overrides_with("no-paging")
+                .overrides_with("plain")
                 .value_name("when")
                 .value_parser(["auto", "never", "always"])
                 .default_value("auto")
diff --git a/tests/integration_tests.rs b/tests/integration_tests.rs
index b118c38f9a..aa5ca845ec 100644
--- a/tests/integration_tests.rs
+++ b/tests/integration_tests.rs
@@ -873,6 +873,42 @@ fn disable_pager_if_disable_paging_flag_comes_after_paging() {
         .stdout(predicate::eq("hello world\n").normalize());
 }
 
+#[test]
+fn disable_pager_if_pp_flag_comes_after_paging() {
+    bat()
+        .env("PAGER", "echo pager-output")
+        .arg("--paging=always")
+        .arg("-pp")
+        .arg("test.txt")
+        .assert()
+        .success()
+        .stdout(predicate::eq("hello world\n").normalize());
+}
+
+#[test]
+fn enable_pager_if_disable_paging_flag_comes_before_paging() {
+    bat()
+        .env("PAGER", "echo pager-output")
+        .arg("-P")
+        .arg("--paging=always")
+        .arg("test.txt")
+        .assert()
+        .success()
+        .stdout(predicate::eq("pager-output\n").normalize());
+}
+
+#[test]
+fn enable_pager_if_pp_flag_comes_before_paging() {
+    bat()
+        .env("PAGER", "echo pager-output")
+        .arg("-pp")
+        .arg("--paging=always")
+        .arg("test.txt")
+        .assert()
+        .success()
+        .stdout(predicate::eq("pager-output\n").normalize());
+}
+
 #[test]
 fn pager_failed_to_parse() {
     bat()