summary refs log tree commit diff
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2022-02-09 22:21:06 +0100
committerLudovic Courtès <ludo@gnu.org>2022-02-14 15:52:36 +0100
commit054ec2e242b2e5d89711c333f4048fc1d749eab6 (patch)
treef5cf5c21100d817243b9ddd13010a9bb515d2522
parent5b6e31b020678dbbc289479b8ff1853c3fbd2085 (diff)
downloadguix-054ec2e242b2e5d89711c333f4048fc1d749eab6.tar.gz
pull: '--list-generations' pipes its output to the pager.
* guix/scripts/pull.scm (process-query): For 'list-generations queries,
use 'with-paginated-output-port'.
(display-news-entry-title): Pass second argument to 'highlight'.
(display-news-entry): Pass second argument to 'dim'.
-rw-r--r--guix/scripts/pull.scm16
1 files changed, 12 insertions, 4 deletions
diff --git a/guix/scripts/pull.scm b/guix/scripts/pull.scm
index a3bb6db8c6..205697b3bd 100644
--- a/guix/scripts/pull.scm
+++ b/guix/scripts/pull.scm
@@ -287,7 +287,8 @@ purposes."
                   (texi->plain-text title))
 
                 ;; When Texinfo markup is invalid, display it as-is.
-                (const title)))))))
+                (const title)))
+             (or (pager-wrapped-port port) port)))))
 
 (define (display-news-entry entry channel language port)
   "Display ENTRY, a <channel-news-entry> from CHANNEL, in LANGUAGE, a language
@@ -299,7 +300,8 @@ code, to PORT."
     (channel-news-entry-commit entry))
 
   (display-news-entry-title entry language port)
-  (format port (dim (G_ "    commit ~a~%"))
+  (format port (dim (G_ "    commit ~a~%")
+                    (or (pager-wrapped-port port) port))
           (if (supports-hyperlinks?)
               (channel-commit-hyperlink channel commit)
               commit))
@@ -681,14 +683,20 @@ Return true when there is more package info to display."
              (raise (condition (&profile-not-found-error
                                 (profile profile)))))
             ((not pattern)
-             (list-generations profile (profile-generations profile)))
+             (with-paginated-output-port port
+               (with-output-to-port port
+                 (lambda ()
+                   (list-generations profile (profile-generations profile))))))
             ((matching-generations pattern profile)
              =>
              (match-lambda
                (()
                 (exit 1))
                ((numbers ...)
-                (list-generations profile numbers)))))))
+                (with-paginated-output-port port
+                  (with-output-to-port port
+                    (lambda ()
+                      (list-generations profile numbers))))))))))
     (('display-news)
      (display-news profile))))